Brahms Composer V1.8.3
V1.8.3 Changes
- Fixed issue where the design views would not show the negative value
indicator for double values.
Brahms Composer V1.8.2
V1.8.2 Changes
- Added support for compilation for models written using language as defined
in language specification version 3.0.
Brahms Composer V1.8.1
V1.8.1 Changes
- Added support for language specification version 2.18 to include
enhancements for detectable conditions, transfer definitions, and making the
known and knownval precondition modifiers optional.
- Upgraded the JIDESoft components used by the Composer from version 2.2.0
to version 2.7.1 (released on 8/4/2009).
Brahms Composer V1.7.7
V1.7.7 Changes
- The Composer now first looks for the configuration files in the
AgentEnvironment/config directory, then in the AgentEnvironment directory
for backwards compatibility.
- Fixed an issue where a library concept was imported into the model twice
when it appeared as an individual import statement in another library
concept.
- Fixed an issue where closing a
document tab with an unsaved document and cancelling the dialog asking
whether to save the file would still save the file and close the tab. Now it
will properly close the dialog and leave the tab unopened and the document
unsaved.
Brahms Composer V1.7.3
V1.7.3 Changes
- When navigating from a compiler error in the task list to the source
code, the editor window was not receiving focus so the cursor was not
visible at the location of the error.
- The Document Outline view was by default presenting the tree structure
of a source file completely expanded. It now expands to display only the
top-level elements of a concept.
Brahms Composer V1.7.2
V1.7.2 Changes
- Fixed an issue where the New Model wizard was not properly keeping track
of edits, the location field was not editable and directory selection using
the Browse button did not always have any effect.
- Fixed an issue with synchronizing edits to a source file causing
'duplicate concept name' errors being reported.
- Fixed an issue where library concepts from the brahms.util and
brahms.communication packages were being added to the Outline View when the
model file was open and their imports were specified.
Brahms Composer V1.7.1
V1.7.1 Changes
- Added support for the new delete operation as per language specification
version 2.17.
- Now visualizing the concepts that are part of the base library but that
are in different packages other then brahms.base when included in a model
such as brahms.communication, brahms.util.
Brahms Composer V1.6.9
V1.6.9 Changes
- Updated the JIDESoft components to version 1.9.3.05.
- Added support for the long and map attribute types making the Composer
compliant with version 2.13 of the language specification
- Added support for activity overloading, class-type variables in
detectables and Java types making the Composer compliant with version 2.15
of the language specification.
- Fixed an issue where detectables created in the design views were not
having their positions correctly recorded resulting in the generated source
code being out of sync with the design views.
- Now reporting an error when an invalid unicode or escape character is
encountered in source code.
- Fixed a bug where the parser would not permit a detectable condition of
the form '<Class> relation value'.
- Fixed a bug in the project explorer view when using a default (i.e.
none) package for a model.
- Removed the automatic NASA confidential header generation for new model
files.
- Added a work-around for very slow XML parsing using the xerces package
on some mac configurations.
- Added support for automatically correcting a DTD path in a Brahms
compiled code file when it does not match the directory on the local system
replacing it with the directory from the local Agent Environment.
- Added support for specifying CommunicativeActs as the contents of a
transfer definition making the Composer compliant with version 2.16 of the
language specification
Brahms Composer V1.6.003
V1.6.003 Changes
- Added a new Build Options dialog
accessible from the Build menu and from a context menu from the Project
Explorer in which the developer can specify the build options for the source
directories, library directories, build directory and the name and directory
of the Brahms archive file to generate with the compiler code.
- Added the ability to clean the build
directory to remove all compiled code before recompiling the source code.
- Added the option to change the font for
the source code editor in the Windows menu.
- Updated the JIDESoft components to
version 1.8.4_02
- Fixed an issue in the use of the new
JavaCC parser.
- Fixed an issue with not saving the source
files when modifications were made using the design view.
- Fixed an issue with passing the proper
library path to the virtual machine when running a model using a default
configuration.
- Fixed an issue with creating paths in the
geography design view.
Brahms Composer V1.5.107
V1.5.107 Changes
- Enhanced the performance when
manipulating the trees. You can now switch between flat and hierarchical
views much faster.
- Added two navigation features to the
model trees - when a class-type concept node is selected the right-click
popup menu now shows two new menu items; 'View Immediate Descendants'
(CTRL+ENTER) and 'View All Descendants' (CTRL+SHIFT+ENTER). Selecting the
first will expand the tree so that it displays only the immediate subclasses
and instances of the selected concept. Selecting the second will expand the
tree so that it displays all subclasses and instances of the selected
concept.
- Fixed a bug where drag and drop of a
concept node onto the 'subclasses', 'instances', 'member groups' or 'member
agents' node was not creating the inheritance relation.
- Added an Inheritance View - this feature
lets you display the entire inheritance hierarchy for one concept in a
separate dockable pane. You can create an inheritance view three ways:
- Added the Inherited Activity, Workframe
and Thoughtframe views - the model trees how include nodes for all inherited
activities, workframes and thoughtframes for active concepts.
- Added persistent toolbar configurations -
now when you select the 'Agent Viewer' view the Agent Viewer toolbar will
also be displayed. If you leave the Agent Viewer toolbar open when quitting
the applications it will still be there when you restart. You can include
the Agent Viewer toolbar in user-defined configurations and it will be
displayed when those configurations are selected.
- Auto-scrolling in source code files will
now center the selected element in the source code window. When you
double-click an element in the model trees the source code declaration for
that element will be opened and centered rather than positioned annoyingly
at the top or the bottom of the window.
- Fixed a bug where several items in the
'File' menu had the same mnemonic keyboard shortcut.
- Fixed a bug where the 'Find Concept'
feature couldn't find a tree node for the selected concept if the tree paths
had not yet been created by user navigation. Now the path for any tree node
that doesn't yet exist will be created automatically when you use the 'Find
Concept' feature.
- Fixed a bug for color coding in source
file comments.
- Fixed a bug where the 'Find Concept in
Tree' action was not selecting the dockable pane containing the tree node.
- Added a menu item and toolbar button for
building the model with .xmi file output for UML generation.
- Changed document management from a
multiple document interface to a tabbed document interface.
- Updated the dockable windows framework to
a new dockable windows framework with enhanced features such as autohide,
undocking to floating windows, etc.
- Added ability to specify a source
directory when creating a new model.
- Now filtering hidden directories in the
project explorer.
- Added the ability to indent and un-indent
blocks of selected code in a source code editor using TAB and SHIFT+TAB.
- Added the ability to the source code
editor to toggle line comments using CTRL+'/'.
- Added the ability to refresh the project
explorer allowing it to reread the directory structure and delete any files
deleted outside of Composer and to add any files added outside of Composer.
- Added a Document Outline View that
displays the contents of the active editor window in outline form. Selecting
any of the model elements from the document outline view will jump the
editor's cursor to the line at which that element starts.
- Added a new action framework allowing
menu and toolbars to be organized to the user's liking, they can be docked
anywhere on the sides of an application, undocked and any icons that can not
be made visible due to the limited size of the application window are still
accessible through the toolbar.
- Added a build menu item to allow the user
to build a model and to generate UML output for the model.
- Fixed a bug where when pressing the Run
button the focus would switch to the drop down list next to it.
- Fixed a bug where the VM Logger Window
would only display the log messages for the VM the first time the VM was run
and not on subsequent runs.
- Integrated new release of JIDESoft's
components version 1.7.1
- Fixed a bug where the ability to jump
from an activity ref to the activity in the design views from a context menu
had been disabled. Now when you right-click on an activity ref you will
again see a menu item that lets you jump to the activity node in the tree
view.
Brahms Composer V1.4.016
V1.4.016 Changes
- Fixed a bug where duplicate copies of a node could appear in the project
explorer tree when changing the names of package nodes.
- Fixed a bug where creating new .b files through the project explorer would
add the files to the model directory instead of the correct source
directory. This bug only occurred when a 'source' directory was used.
- Fixed a bug where files were not saved properly when closing an editor
window for an edited file.
- Added support for the Brahms virtual machine options. Using the Run->Set
VM Options... menu you can now pass any valid Brahms virtual machine option
to the VM when running the virtual machine from within Composer.
- Using the -ui VM option now displays the simulation clock at the top of
the VM log window that is opened by the Composer when starting a model.
Brahms Composer V1.4.012
V1.4.012 Changes
- Added support for drag and drop of Brahms source files and folders from
the system into the Project Explorer (Windows, Linux and Mac). It also
includes support for copy and paste of files and folders from the system
into the Project Explorer (Windows and Linux) or from one Project Explorer
to another or within the same Project Explorer (Windows, Linux and Mac).
- When you add files to your model using the features described in (1) then
each file copied into your model will have its package statement edited to
reflect its location within the model package structure. When you save the
model, import statements will be added to the model file for each new
package.
- Fixed a bug that prevented switching between configurations by clicking on
an item in the toolbar configuration list when the list was over a docked
window.
- Fixed a bug where maximized windows would not close properly and leave the
Composer in an invalid window state.
- A right mouse click on any node in the Project Explorer will pop-up a menu
that now includes the item "Add New Brahms File...". Selecting this item
will open a dialog window where you can enter the name for the file and for
the package. The package field will appear with a value for the package of
the node where you clicked in the explorer. You may edit this value,
however, and the new file will be added in the appropriate package in your
model and in the file system. The new file will contain only a package
statement.
- The File menu now contains the menu item 'New File...'. Selecting this
item will open a dialog window that allows you to choose between Brahms file
or Text file. There are also fields for the file name and the package name.
Creating a new Brahms file works just as explained in (5). Creating a new
text file will open an editor window. The new file will not be written to
disk until you save it at which time you will be shown a dialog to specify
the location on disk to write the file. This feature will allow you to write
configuration or bat files from within the Composer application.
- The File menu now also contains a menu item for 'Save File As...'. This
works as you would expect. If you save a Brahms fie to a new location in the
package structure of your model, the file and all of its concepts will be
added to the model. You can also open and edit config files from one model
and save them for a new model.
- Fixed a bug where the Composer would now allow you to create subclasses or
instances of a concept when that concept's source file was open on the
desktop.
- Added support for language specification version 2.12 in which support was
added for the relational operators >, >=, < and <= in detectables.
Brahms Composer V1.4.008
V1.4.008 Changes
- Added a Project Explorer for managing Brahms packages and files.
- Integrated the Brahms Agent Viewer as a plug-in to the Composer, it is no
longer a separate application.
- Added support for creating, saving and switching Composer window layout
configurations.
- Added support for Cut, Copy and Paste in the Edit menu and in the toolbar.
- Double clicking a 'leaf' concept node in the tree views (like a parent,
part, inhabitant node, etc.) will now jump you to the populated tree node
for that concept.
- Added support for creating initial facts in the Geography Model.
- The activity nodes in the design views now display all parameters as part
of there name.
- Fixed a bug where editing the type of an activity in source code was not
reflected in the design view when you saved the file.
- Fixed a bug where parser errors weren't showing up in the task list when
import statements were lower case while the actual directories in the file
system were upper case.
- Fixed a bug where renaming a concept in source code causes the newly named
concept to appear as a tree node multiple times under each of its parent
nodes in the design view.
- Fixed a bug where activity references passing as a parameter value
'current' were not displaying properly in the design view.
- Fixed a bug where compiler errors were remaining in the task list after a
successful build.
- Fixed a bug where the task list would not remain at the size set by the
user when new parser errors were reported.
Brahms Composer V1.2.019
V1.2.019 Changes
- Fixed bug that allowed activities to be added to base library concepts in
design view.
- Added 'Find and Replace' functionality to the source code editor.
- Fixed bug that caused facts to be created instead of beliefs when using
the "Create Initial Fact" toolbar button.
- Added feature allowing right mouse click popup menu with choices for
sorting design view tree nodes alphabetically or by source code line number.
- Added feature of popup menu with right mouse click on
'Activity Reference' tree nodes with choice of jumping to referenced
activity node in the tree.
- Added tree node sorting feature to Activity Model tree.
- Fixed bug where case was not being ignored in alphabetical
sorting.
- Fixed bug that prevented right mouse click popups from working on the
Macintosh.
- Fixed bug in New Model Dialog where specifying a package name for a new
model caused the new model action to fail.
- Added feature where Import Model Dialog remembers the model directory for
the last imported model.
- External agents are now also properly being displayed in the agent view.
- Initial statements were sometimes displayed twice in the design view, this
has been fixed.
- Added File menu item "Open Model File" that allows opening the model .b
file.
- Added functionality for moving or copying attributes, relations, initial
statements,
activities, workframes and thoughtframes from one concept to another
by drag and
drop of the design view tree nodes.
- Added support for creating and editing packages.
- Bug fix with use of meta typed variables on the left hand side of a
precondition.
- Added integration with the virtual machine to allow a modeler to run a
model from within the Composer.
- Added a Find Concept function to allow a modeler to search for a concept
in the designers.
- Added a Quick Search function in the toolbar to search for text in the
current document without having to open the Find dialog.
- Fixes a bug where editing a class or group name with the concept editor
did not update the source code inheritance statements for instances of the
edited concept.
- Fixes a bug where the initial fact/belief editors would not let you
specify the value 'unknown' for boolean attributes.
- Fixes a bug where deleting a concept with children it did not delete the
source code for those children.
Brahms Composer V1.2.005
V1.2.005 Changes
- Integrated parser allows models with syntax or compiler
errors to be imported or opened, edited and saved in the IDE.
- Integrated task-list displays all syntax errors in a model when it is
first opened or imported.
- Integrated task-list displays all syntax errors for a source code file
when the file is saved.
- Integrated task-list displays all compiler errors for a model when the
model is compiled from within the IDE.
- Task-list allows double-click navigation between errors displayed in the
table and the source code location where the error occurs.
- Multiple document desktop allows for display and management of multiple
source code editor windows.
- Integrated source code editor with keyword coloring and multiple levels of
undo.
- Drag-and-drop dockable windows for display of design view model trees and
task-list.
- Support for creating, editing and displaying all model elements in the
design view model trees.
- Real-time incremental source code generation for every edit made in the
design view model trees.
- Automatic update of the design view model trees whenever a source code
file is edited and saved.
- Double-click navigation between any element in the design view model trees
and the source code location where the element is defined.
- Drag-and-drop creation of Activity References in design view by dropping
an activity node onto a workframe node or workframe body node
- Initial facts and beliefs can now be created,
displayed, edited and deleted in the IDE model trees.
- Inherited initial facts and beliefs are now displayed
for all active concepts. Tree nodes for these elements are not editable, but
will be updated when the underlying element is edited.
- Inherited attributes and relations for all concepts are
now displayed in the IDE model trees. Tree nodes for these elements are not
editable, but will be updated when the underlying element is edited.
- Workframe names are now displayed for all active
concepts and composite activities. Tree nodes for these elements are not yet
editable.
- Thoughtframe names are now displayed for all active
concepts and composite
activities. Tree nodes for these elements are not yet editable.
- Model file package statements are now parsed when
importing a model and used as the default package for all concepts created
in the ide.
- Adding a library path for the model directory in the
'Import Model' dialog window is no longer necessary when importing a model.
- The 'Import Model' dialog window now contains a field
for specifying the directory where the imported model should be saved.
- The IDE now has a 'Save As..." menu choice allowing the
model to be saved to a new directory.
- Complete inheritance hierarchies are displayed for
concepts in the 'Flat View Mode' in the IDE model trees.
- A 'parents' node has been added for all concepts when
displayed in the 'Hierarchical View Mode' in the IDE model trees.
- The display of children for all class-type concepts is
divided into groupings of subclass-type children and instance-type children.
- The IDE now saves all source code files into a
directory named 'source' and all xml files into a directory named 'ide' in
the model directory. The modelname.bmd file is saved in the model directory.
- There is a 'Scratch Pad' node in the activity model.
Unassigned activities appear as children of this node.
- Dragging activities between concepts or between the
scratch pad and concepts will result move the activity unless the Control
key is pressed while dragging in which case a copy of the dragged activity
will be added to the element at the drop location.
- A 'collapse-tree' button has been added to the toolbars
in the model tree panels that collapses the tree to a default closedview.
- An 'expand-tree' button' has been added to the toolbars
in the model tree panels that re-expands the tree to the configuration it
had when the collapse button was pressed.
- The tool-tip text for create activity buttons now
displays the proper activity names.
- Added support for the new gesture activity.
Brahms Composer V1.00.005
V1.00.005 Changes
- Imported create object activities now have their action
property set properly.
- Bug preventing models containing unassigned activities
with concept type parameters from being reopened has been fixed.
- The IDE will now preserve the order of model elements
as they appear in source code.
- The IDE will now present child concepts in alphabetical
order in the tree views when the model is opened. New children will appear
at the end of the list as they are added during a modeling session.
- Toolbars in concept model tree views now contain a
button for collapsing all nodes in the tree.
- The about dialog now shows the build date of the
release.
Brahms Composer V1.00.004
V1.00.004 Changes
- Workframe type property is being written to source code
properly now.
- Detectable action is being written to source code
properly now.
- fc and bc for a consequence will be written out no
matter what their value.
- Child concepts added while in flat view mode will show
up as a node under their parent concept's node.
- When deleting an inheritance relation in flat view mode
you will see a warning if this is the only parent relation for the child
concept. If you continue with deleting the inheritance relation the child
concept will be deleted as well (can't have orphaned concepts).
- When deleting a concept in hierarchical view mode you
will see a warning if the concept has children with no other parents that
would be deleted along with their parent.
- Fixed problem with concept and activity editor being
partly visible when near the bottom of the application window.
- Fixed bug preventing the deletion of conceptual objects
and classes
- Fixed problem of a model not re-opening if the user
deletes source files from disk. As long as the deleted files don't create
compiler errors in the remaining files the model should re-open with default
display properties.
- Added an about dialog displaying the version number of
the application
- Setting default values for activity properties that are
required. Some of these values do not make sense but allow for the model to
be saved, compiled and re-opened. The defaults for these required properties
are:
move.location: NoLocation;
broadcast.about: send(current.location = NoLocation);
communicate.about: send(current.location = NoLocation);
communicate.with: Clock;
create_object.source: BaseClass;
create_object.destination: dest; (create_object activities will
be created with a default parameter of type BaseClass
named "dest")
get.items: Clock;
put.items: Clock;
- Added new command line options that can be passed to
the IDE. The options are:
[-import[-libpath path] file.b] or [-open file.bmd] [debug] [log]
The debug/log options are currently always set and are fixed in the
BrahmsIDE executable. You should therefore not pass these options again.
Brahms Composer V1.0
V1.0 Changes
- Added support for activities.
- Allows for the import of an existing model.
- Added support for compiling models.
- Generates source code including for those elements that
are currently not directly supported by the IDE but which are imported from
an existing model such as workframes and thoughtframes.
Brahms Composer V0.4.0
V0.4.0 Changes
- New release, allows for the creation of concepts
(groups, agent, classes, objects, conceptual classes, conceptual objects,
area definitions, areas, and paths) and attributes
and relations for these concepts. The IDE also allows inheritance and
aggregation relationships between concepts to be created. The IDE can
generate Brahms source code and compile the generated source code.
Brahms Agent Viewer V1.12.3
V1.12.2 Changes
- Added the menu option Options->Zoom Factor to allow for the time line
to be zoomed in at a given selected time zoom interval to display additional
detail.
Brahms Agent Viewer V1.11.5
V1.11.5 Changes
- Added the menu option Options->Set Time Format to allow for the date and
time format to be changed in the time line view.
Brahms Agent Viewer V1.10.2
V1.10.2 Changes
- The time line view will now display a custom tooltip if the display text for a workframe or activity
includes a tooltip defined as '{ tooltip text }'. The modeler is responsible
to still include a regular display name for that element outside of the
curly braces or no display
name will be displayed in the time line view.
Brahms Agent Viewer V1.9.3
V1.9.3 Changes
- The time line view will now paint the color of a workframe or activity in
a custom color if the display text for a workframe or activity starts with a
hexadecimal color hash tag (#dddddd). The modeler is responsible for having
that color tag followed with the display name for that element or no display
name will be displayed in the time line view.
Brahms Agent Viewer V1.8.20
V1.8.20 Changes
- Changed the type and supported field length for the display
text field in the History Element table to support values of more than
255 characters. The maximum now equals the maximum size of a java.lang.String (65K).
- Now permitting the use of the pipe character in string literals. The
pipe character is the separator character used in the history file to
separate arguments and caused parsing problems when used in string literals.
The File Agent Viewer service and agent viewer were modified to add double
quotes around right-hand-side belief/fact values and to ignore all
characters in between double quotes when parsing the history file.
- Changed the type and supported field length for the name fields in the tables to support values of more than
255 characters. The maximum now equals the maximum size of a java.lang.String (65K).
- Now explicitly setting the database engine to MyISAM when creating the
database tables. This eliminates the requirement for the user to have to
change the default engine for MySQL to MyISAM.
- Fixed issue with fact or belief filter where the list with LHS concepts
was populated with RHS concepts, not LHS concepts.
- Fixed issue with fact or belief filter where an error was generated when
attempting to filter on the LHS attribute.
Brahms Agent Viewer V1.8.7
V1.8.7 Changes
- Added support for MySQL 5.0 as the database to use to store and manage
history databases parsed from the history files generated by the Brahms
virtual machine.
- Now requiring user credentials to connect to the MySQL server. The
credentials are stored encrypted and encoded in the agentviewer.cfg file.
The credentials can be changed from the Agent Viewer. When the Agent Viewer
is unable to connect to the database it will display a database login dialog
allowing the user to change/set the appropriate credentials and to
optionally save them back into the configuration file.
- It is now possible to use a MySQL server hosted on a different machine.
Hostname/port information is stored in the agentviewer.cfg file. Each user
will be given their own unique database names as to not to conflict with
other users.
- Changed the type and supported field length for the value and display
text fields in the FactOrBeliefContext table to support values of more than
255 characters. The maximum now equals the maximum size of a
java.lang.String (65K).
Brahms Agent Viewer V1.7.0
V1.7.0 Changes
- Added two new communication views, the star communication view and
directed communication view.
Brahms Agent Viewer V1.6.3 alpha
V1.6.3 alpha Changes
- Added support for displaying the delete operation in the frame source and
in the action list and visualizing the time a concept was created (if
relative-time > 0) and when the concept was deleted as a result of a delete
operation.
Brahms Agent Viewer V1.6.2 alpha
V1.6.2 alpha Changes
- Added support for displaying the communication of CommunicativeActs. When
opening the communication the agent viewer displays the beliefs that were
communicated.
Brahms Agent Viewer V1.6.1 alpha
V1.6.1 alpha Changes
- Added support for version 3.0 of the history file format adding support
for beliefs and facts with collection indices. The Agent Viewer still
supports the version 1.0 and 2.0 history file formats.
- Updated the belief/fact filter dialog for the explanation facility to
include a collection index filter.
Brahms Agent Viewer V1.5.1 alpha
V1.5.1 alpha Changes
- Added support for version 2.0 of the history file format where activity
references no longer directly reference a specific activity because of the
new support for activity overriding. The Agent Viewer still supports version
1.0 history file format. The Agent Viewer automatically upgrades the history
databases to support the new history file format maintaining for each
database the history file version number it is based on.
- Fixed a bug where parsing of a history file would fail if during a run
there were no communications but there were dynamically created objects.
- Fixed a bug in the display of agent locations in the time line view.
- Fixed a bug where the agent viewer would generate a NullPointerException
for the display of a create object activity line on the communication
highway when the create object activity created a conceptual object.
Currently we don't show the creation of conceptual objects on the
communication highway.
- Fixed a bug in the display of receive communications in the time line
view. The arrow wasn't positioned correctly.
- Supports parsing of incomplete history files created using the File Agent
Viewer Service version 2.00.0001 or later. The Agent Viewer is now able to
display history results even if the Brahms virtual machine was terminated
abruptly.
- The file chooser when you want to create a new database now opens up in
the Databases directory where history files are normally stored.
- Fixed a bug in processing create object actions when no communication
actions existed. They were sharing the same array but array copy and
population functions would fail when no communications existed, but create
object actions or resources did.
- Fixed a bug where with MySQL 4.0.23 the agent viewer would generate an
error when trying to retrieve the body of a frame. Rewrote the query based
on the new SQL language requirements for MySQL putting parentheses around
SELECT queries in UNIONs and using an alias for the ORDER_BY column.
- Updated the driver name used to connect to the MySQL database using the
new JDBC Connector.
Brahms Agent Viewer V1.4 alpha
V1.4 alpha Changes
- Reorganized the menu structure, locating the zoom
functions under the View menu.
- New more appropriate button icons more clearly
representing their functions.
- Icons in the runtime view for agents, objects,
conceptual objects and agents are now identical to those used in the Brahms
IDE.
- Time line view and runtime view can be closed and
re-opened without causing the application to shut down because of an error.
- Creating a new database (parsing a history file) has
improved in performance and after parsing is completed the database is
immediately opened.
- Databases are no longer file based but are managed by
the MySQL database manager. Appropriate dialogs allow you to open and delete
the databases managed by the database manager.
- The runtime view now correctly displays conceptual
objects.
- When the time line view is not maximized it will no
longer compress the information in the time line view to an unreadable view,
size of the time lines remains constant.
- The time line view now displays the full time and date
at the beginning of the viewable area and displays only time information on
all subsequent intervals unless a date change occured in which cased he full
date/time is displayed.
- Explanation facility views for facts, beliefs,
workframes, thoughtframes and communications have been redesigned.
- The columns in the facts/beliefs views can be resorted
by clicking on their headers.
- The filter/query panel is by default hidden but a click
on the button with the small arrow makes it re-appear.
- The drop down lists in the filter now contain a correct
and sorted list of all the possible values for the filter.
- The frame view displays all time related information in
one view.
- The frame's source code is now formatted based on the
language specification as much as possible based on the information
available in the database.
- The explanation facility windows and time line view can
be organized in cascading, horizontal, or vertical layouts.
- The runtime view is a dockable window that can be
docked North, East, South and West in the application frame.
Brahms Compiler V3.0.6
V3.0.6 Changes
- Fixed issue where the compiler generated an internal error when attempting
to access a map-based attribute value of an agent or object as part of the
right hand side in a conclude statement in a thoughtframe,
conclude(current.value = myObject.someMap("someProperty")).
Brahms Compiler V3.0.4
V3.0.4 Changes
- Added support for language specification version 3.0 to include support
for Java object integration.
- The compiler now allows one or more compilation units to be compiled
without requiring compilation of the entire model.
- The compiler has several new command-line options:
- -nowarn
suppresses all warnings resulting from the compilation
- -compatible enable
backwards compatibility with looser import declaration requirements
(default)
- -strict
require imports for any concepts from a different package that are
referenced by a simple name
- -debug
display debugging information
- -debugcfg <cfgfilename> use the specified log4j
configuration file
- When running in strict mode the Brahms compiler treats unqualified
concept references in a manner similar to Java class references. An
unqualified reference in a compilation unit to a concept defined in a
package that is different from the compilation unit's package requires an
import statement to be available in the compilation unit for resolving the
unqualified concept name to a fully qualified name. When running in
compatible mode the import declarations are global, i.e. a concept imported
in one compilation unit can be referenced from another compilation unit
without requiring it to be imported into that compilation unit.
- Although it still parses all compilation units, the compiler will not
regenerate a .bcc file for a concept if that file has a more recent
modification date than the .b file for the compilation unit in which the
concept is defined.
Brahms Compiler V2.22.1
V2.22.1 Changes
- Added support for language specification version 2.18 to include
enhancements for detectable conditions, transfer definitions, and making the
known and knownval precondition modifiers optional.
Brahms Compiler V2.21.9
V2.21.9 Changes
- Fixed an issue where the compiler did not generate type information when
a class-type concept was referenced on the right hand side of an initial
belief or fact.
- Fixed an issue in the compiler removing parsing restrictions on certain
occurrences of literals and in compiling known(OA R).
Brahms Compiler V2.21.6
V2.21.6 Changes
- The compiler now identifies which concepts are serializable by verifying
whether a class or object extends/is an instance of the
brahms.io.SerializableObject class. The serializable flag is set in the
concept's byte code.
-
Ticket 4: Fixed issue where the compiler would allow for invalid package
names if the package names were defined to be a part of the directory
matching the package name.
Brahms Compiler V2.20.006
V2.20.006 Changes
- Updated the compiler to be compliant with language specification version
2.17.
- Added support for a delete operation in the body of a workframe allowing
a modeler to delete dynamically created concepts (agents, objects,
conceptual objects).
- Fixed an issue in the Ant task for the compiler, now using the Ant class
loader instead of SimpleClassLoader to allow us to load Java classes defined
in the classpath defined for the compiler's task definition.
- Fixed a bug where the compiler did not permit values of type long to be
compared when the relational operator was one of >, >=, <, or <=.
- Fixed a bug where the compiler did not permit values of meta types on
the right hand side of a condition.
Brahms Compiler V2.19.002
V2.19.002 Changes
- Updated the compiler to be compliant with language specification version
2.16.
- Modified the transfer definition to support the declaration of a
brahms.communication.CommunicativeAct as the contents of the transfer
definition. This is in addition to declaring a condition to which beliefs
are matched for the transfer.
Brahms Compiler V2.18.044
V2.18.044 Changes
- Updated the compiler to be compliant with language specification version
2.15.
- Added support for new attribute types, long and map. Modified the
compiler to add support in initial statements, preconditions, consequences,
detectables and transfer definitions for an index when an attribute is of
the map type - OA(index) = V - where the index can be an integer or string.
- Added support for activity overloading.
- Added support for a <class type> variable on the left hand side of
detectables allowing detectables to detect any fact with a concept on the
left hand side that is type compatible with the class type concept declared
in the detectable condition as: <concept class>.attribute = value.
- Added support for declaring relations in the attributes section as:
public relation(type) name;
- Added support for Java types as the type for an attribute, variable or
parameter with full support for Java generics. Added the support to
preconditions, consequences, detectables and transfer definitions.
- Properly checking package statements against directory structure to make
sure that the case is identical, previously case was ignored.
- Added support for implicit type casting with a variable declared on the
left hand side in a precondition and an object attribute tuple declared on
the right hand side in value comparisons. Previously the compiler only
allowed implicit type casting with a variable on the right hand side only.
- Fixed a bug in parsing paths, compiler was incorrectly setting both
area1 and area2 to area1.
- Fixed a bug where escape characters in String literals weren't converted
to their actual escape character, they were placed in a String as is.
- Now reporting an error when an invalid unicode or escape character is
encountered.
- Fixed a bug where the compiler would not permit a detectable condition
of the form '<Class> relation value'.
- Fixed a bug where the compiler would permit parameters of a group type
to be used in the memberof list in a create_agent activity. The compiler
should only permit parameters of the meta-type Group.
- Added an Ant Task for the Brahms Compiler
(gov.nasa.arc.brahms.bc.ant.BC) allowing developers to call the Brahms
compiler using Ant
- Fixed a bug where the compiler would not correct the DTD path in bcc
files loaded from libraries.
- Fixed a bug in activity overloading where concept names in an activity
reference would be matched against parameters of type symbol instead of the
parameter of type concept resolving the activity reference to the incorrect
activity.
- Fixed a bug where the compiler was not using a custom classloader for
loading the Java classes used in java type declarations preventing the
compiler when used in an IDE from detecting new Java classes in the
classpath or loading new versions of existing Java classes.
Brahms Compiler V2.17.006
V2.17.006 Changes
- Now writing out files with compiled code with the bcc extension (Brahms
Compiled Code).
- Added support for a -d flag to specify a destination path to write the
compiled code to.
- Added support for maintaining a model's package in the compiled model
file.
- Added support for a -source flag to specify one or more source paths
where the compiler can find the source code for referenced concepts.
- Added support for reading compiled code into the compiler when source
code for a references concept cannot be found.
- Added support for the -bar flag to specify a Brahms archive file where
the compiler needs to write all the compiled concepts to that were compiled
from source code and to exclude the concepts that were loaded from compiled
code.
- Added support for the -base flag used to compile the Brahms base
library.
- Added support for the Composer to be notified of low-level exceptions
and to report them to the user.
- Fixed a bug in ConceptLoader::loadConceptData to break out of the for
loop when an archive was found containing the requested concept.
- Fixed a bug in not checking parameter types for already compiled
concepts loaded from an archive, now checking types since the type checking
prepares for code generation of the parameter types required for generating
UML.
Brahms Compiler V2.15.002
V2.15.002 Changes
- Added support for activity overriding. It is now possible to override an
activity in a sub concept by declaring an activity with the same name and
the same number of parameters of the exact same type. The activities can
however be of different types. Activities and activity references are now
identified by their activity descriptor.
- Fixed a bug where if the compiler generated an unexpected error it would
not notify the Composer of this error, now it does.
Brahms Compiler V2.14.006
V2.14.006 Changes
- Added support for generating UML from a Brahms model by passing the -uml
flag. It will generate a .xmi file in the directory of the model's .b file.
This xmi file can be imported by a variety of UML tools supporting XMI
version 1.2.
- Fixed a bug where the compiler would not properly verify type
compatibility of any type against primitive types.
- Fixed a bug where the compiler would not properly handle an error when
the compiler was unable to load a Java external activity due to an error
with the class file.
- Fixed a bug where the compiler would not allow for a relational
comparison in a precondition using >, <, >=, <= if the left hand side was an
integer and the right hand side was a double.
- Fixed a bug in the compiler when it is used from within the Composer. It
now reloads Java external activity classes when the compiler is restarted
from the Composer. In the past it would not reload the library files and
therefore not find any new Java external activities or detect the removal of
old Java external activities.
- Fixed a bug in the compiler where it would not properly compare the
types of arguments against those of the parameters in the activity.
Brahms Compiler V2.13.004
V2.13.004 Changes
- Fixed a bug where passing a symbolic value that could represent a user
defined type (a concept) to a symbol typed parameter declared for an
activity resulted in a type conversion compiler error. The compiler should
have and now does consider it a symbol instead of a concept.
- Added support for generating a KAoS ontology for the Brahms model declared
using DAML. For this support the compiler supports the -ontology and
-ontologybase options.
- Added support for language specification version 2.12 in which support was
added for the relational operators >, >=, < and <= in detectables.
Brahms Compiler V2.12.006
V2.12.006 Changes
- Now preserves the inheritance sequence as they are
declared in the model. Previously the inheritance sequence was determined by
the hashkey for the name of a concept being inherited from.
- Fixed a problem in the compiler. Now correctly
reporting attribute and relation redeclaration errors when trying to
redeclare an attribute with the same name in an inheritance hierarchy.
- Removed support for the (un)assigned keyword with
variables. These keywords were only relevant for the old G2 based simulation
environment.
- Removed support for JDK 1.0 and JDK 1.1. The compiler now only supports
JDK 1.2 or higher.
- Fixed a bug in the XML export. The special characters &, <, >, " and '
required special handling in writing them out as part of a string value to
XML to allow the virtual machine's XML parser to appropriately parse it.
- Fixed a bug in the compiler where it would not allow you to pass the value
'unknown' to an activity for a parameter. It was only possible through a
variable or another parameter.
Brahms Compiler V2.12.000
V2.12.000 Changes
- Fixed a problem in the compiler not allowing the value
'unknown' to be assigned to attributes/relations with a meta type as their
type.
- Added two new concepts to the base library SystemGroup
and SystemClass with generic Java activities that allow a model builder to
write information to the virtual machine's log file for debugging purposes.
The activities allow for writing beliefs, facts and generic messages.
- Fixed a problem in the compiler with type compatibility
between meta types, only if two meta types were exactly the same were they
found to be type compatible, however for example ActiveInstance is also type
compatible with Agent and Object.
- Added support for assigning a parameter to the display
property of activities in addition to being able to assign it a string
value.
Brahms Compiler V2.11.000
V2.11.000 Changes
- Added support for language specification V2.11 adding
support for create area activities.
Brahms Compiler V2.10.001
V2.10.001 Changes
- Added support for language specification V2.10 adding
support for gesture activities.
- This patch fixes a bug in the compiler where it would
not report an error if the name of a group, class, areadef, conceptual class
or path was used on the left or right hand side of a condition.
- Bug fix in the compiler not properly exporting the XML
byte code for activite references referencing a get and put activity.
Brahms Compiler V2.09.001
V2.09.001 Changes
- Bug fix. The compiler did not allow for a parameter to
be defined of type ActiveInstance passing it a variable of a type defined
using a group name or class name.
Brahms Compiler V2.09.000
V2.09.000 Changes
- Added 'to' and 'toSubAreas' properties to broadcast
activity to allow the model builder to specify to what locations a broadcast
can travel to (in what areas agents can listen
to the broadcast belief).
- Added the 'detectDepartureIn',
'detectDepartureInSubAreas', 'detectArrivalIn' and 'detectArrivalInSubAreas'
properties to the move activity allowing a model builder to specify
the areas in which agents can detect the departure of the moving agent and
allowing a model builder to specify in what areas agents can detect the
arrival of the moving agent and also in what areas the moving agent can
detect the objects and other agents.
Brahms Compiler V2.08.000
V2.08.000 Changes
- Added type attribute to workframe for objects to allow
model builder to indicate whether the preconditions are to be matched on
facts (type=factframe) or on beliefs (type=dataframe).
Brahms Compiler V2.07.003
V2.07.003 Changes
- Added source attribute to get activity and added
destination attribute to put activity to allow for the transfer of items
between agents and objects.
Brahms Compiler V2.07.001
V2.07.001 Changes
- Added support for priorities in thoughtframes.
Brahms Compiler V2.07.000
V2.07.000 Changes
- Added support for the use of the value 'unknown' in
beliefs, facts, conditions and truth values.
Brahms Compiler V2.06.000
V2.06.000 Changes
- Added support for the create_agent activity.
Brahms Compiler V2.05.001
V2.05.001 Changes
- Added support for the put and get activities.
- Added support for 'import *;'.
Brahms Compiler V2.04.004
V2.04.004 Changes
- Bug fixes to make compiler work in Unix environments.
Brahms Compiler V2.04.003
V2.04.003 Changes
- Bug fix in parser. Compiler was sometimes unable to
find Java classes for external activities. Included a Brahms specific class
loader that knows where to find the classes based on the class path passed
to the compiler.
Brahms Compiler V2.04.002
V2.04.002 Changes
- Bug fix in parser. Parser generated an exception when
parsing a relation specified in a condition using the dot notation used only
for attributes without using a relational operator.
For example: (current.isRelatedTo someAgent) where isRelatedTo is specified
as a relation and not as an attribute.
Brahms Compiler V2.04.001
V2.04.001 Changes
- Added support for external agents.
- Added ability to pass in the Java class path to find
Java activities specified in Brahms models.
Brahms Compiler V2.03.004
V2.03.004 Changes
- Now allowing for numeric values on the left hand side
in expressions.
Brahms Compiler V2.03.003
V2.03.003 Changes
- Bug fix in initial statements where an integer is
assigned to an attribute of type double. The integer is now converted to a
double.
Brahms Compiler V2.03.002
V2.03.002 Changes
- Bug fix in processing import statements.
Brahms Compiler V2.03.000
V2.03.000 Changes
- Added support for multiple dirtories on the library
path. The directories are separated by semicolons (;).
Brahms Compiler V2.02.000
V2.02.000 Changes
- Updated to the new Brahms Language Specification V2.2
that only targets the Brahms virtual machine and no longer targets the G2
based Brahms engine
- Added Java activity
Brahms Virtual Machine V5.3.0
V5.3.0 Changes
- Manual garbage collection is no longer triggered by the GarbageCollector class.
Brahms Virtual Machine V5.2.16
V5.2.16 Changes
- Fixed issue where during the dynamic creation of multiple agents or
objects with workframes/thoughtframes it was possible that the reasoning
state network was not properly built up. Some operands in a precondition
would not be assigned a proper condition element id causing evaluation of
the preconditions to fail with a NullPointerException.
- Added isInstanceOf relation BaseAreaDef. The virtual machine now also
auto-generated initial facts about the relation between areas and their
parent base area definitions.
- Fixed issue where during the dynamic creation of multiple agents or
objects with workframes/thoughtframes that some of the workframes would not
fire due to a race condition where frame nodes were assigned the same unique
identifier instead of different unique identifiers.
- Fixed issue with populating IContext information from an activity when
using Java-based activities.
- Fixed issue with broadcast activities not properly broadcasting to sub
areas of a given or the current location.
- Fixed issue with evaluating relations of type OROA where a
NullPointerException was raised when the OA evaluated to false.
Brahms Virtual Machine V5.1.8
V5.1.8 Changes
- Fixed issue in the scheduler when running in simulation mode for
'human-in-the-loop' simulations with external agents posting events. There
was a chance that the event time of the posted event time fell before the
current event time at the time the event was posted to the scheduler. The
event time is now reset to the current time.
- Fixed issue where the virtual machine was imposing a limit of 128 body
elements in the body of a workframe. The limit has now been increased to
Integer.MAX_VALUE.
- Fixed issue where during the dynamic creation of multiple agents or
objects with workframes/thoughtframes it was possible that the reasoning
state network was not properly built up. Some operands in a precondition
would not be assigned a proper condition element id causing evaluation of
the preconditions to fail with a NullPointerException.
Brahms Virtual Machine V5.1.3
V5.1.3 Changes
- Added retractAllBeliefs activity to BaseGroup and BaseClass.
- Added the CommunicatorClass to the brahms.communication package in the
base library.
Brahms Virtual Machine V5.0.6
V5.0.6 Changes
- Added support for new language features described in language
specification version 3.0.
- Added support for simrt as a new value for the mode configuration
parameter in addition to the existing sim, rt, and drt values. The simrt
mode is the same as the sim mode except that it introduces delays into the
simulation every second if needed in order to keep the simulation clock in
sync with real time. So a simulation that is run in simrt mode that takes n
simulation units to run will take approximately n*time_unit seconds to
complete. This mode may be useful for human-in-the-loop simulations.
- Made some performance enhancements including more selective backtracking
when evaluating the preconditions of a frame.
- Many of the Java interfaces for the Brahms Java API were moved from
vm.jar to common.jar to make them available to the Brahms compiler. This
will only be an issue when compiling Java code that uses the Java API and
has vm.jar on its build path but not common.jar. The problem can be fixed by
adding common.jar to the build path.
- Added a -managed flag that can be passed to the main method of the
HostingEnvironment which causes the CORBA ORB to be started in a separate
thread of execution instead of on the main thread of execution. ORB startup
blocks and prevents the thread from shutting down until the ORB is shut
down.
- Changed JSE 6 API calls to be JSE 5 compatible to allow the Brahms VM to
be run on Mac OS X with only JSE 5 support.
- Now validating the value for the appdir property in vm.cfg to ensure it
is for a directory.
- Fixed NullPointerException when discovering Brahms archives, reporting
an error if an invalid library path was found or if there was an I/O error
when reading the contents of a directory.
Brahms Virtual Machine V4.3.10
V4.3.10 Changes
- Fixed a NullPointerException in the HostingEnvironment raised when the
initialization of the Brahms virtual machine fails and the hosting
environment is shut down. The reason for the initialization failure was
masked by the NPE.
Brahms Virtual Machine V4.3.8
V4.3.8 Changes
- Added support for language specification version 2.18 to include
enhancements for detectable conditions, transfer definitions, and making the
known and knownval precondition modifiers optional.
- Removed maintaining token trace lists in the reasoning state network to
preserve memory. The lists are currently not used.
- Fixed a resource leak in the CreateChecksumActivity where an input
stream would not be properly closed when a read error is encountered.
- Fixed a resource leak in the CopyFileActivity where an input
and output stream would not be properly closed when a read or write error is encountered.
- Added support for the system property -Dgov.nasa.arc.brahms.ahe.disableShutdownHook=true
to allow for the shutdown hook to be disabled. This shutdown hook must be
disabled if the hosting environment is run as a service or is started by a
process running as a service to prevent user logoff events from triggering
the hosting environment to be shut down.
- Now also logging ComAct communication failures into the log file instead
of only just notifying the agent using the sendCommunicativeAct activity.
Brahms Virtual Machine V4.2.45
V4.2.45 Changes
- Added enhancements to the JAPI to simplify accessing and setting belief,
fact, parameter, and variable values. Enhancements were added to
IActiveInstance, IWorldState, and AbstractExternalActivity.
- Added CreateChecksumActivity to brahms.io package.
- Fixed an issue where a modeler could not specify an empty string ("")
value for an initial belief/fact when the attribute is of a type string.
- Fix for Trac 41 resolving a dead lock issue when two agents concurrently
move from the same location.
- Fixed an issue in copying maps where if one of the indexes in the map to
be copied has a value of unknown it would cause the copy to become an empty
map set to unknown.
- Fixed an issue with validating the type of the collection index when
creating new statements using the JAPI.
- Fixed an issue in creating new statements using relations when passing
'unknown' as the right hand side value, was always throwing a
ClassCastException.
- Fixed an issue in the VM with unbound variable parameters of composite
activities that appear in a precondition of one of the CA's frames and a bug
with knownval(var R OA).
- Changed GetJavaAttributeValue Java activity to now return a returnValue
of unknown and result of true when the value of a Java attribute is null.
- Changed ReadBeliefs Java activity to now allow for a fromActor to be
specified. This allows a modeler to read beliefs from an actor where the lhs
concept is not necessarily the actor itself, i.e. fromActor != subject. In
the past only a subject could be specified meaning that fromActor ==
subject. Added two new readBeliefs activity declarations to BaseGroup and
BaseClass to include the fromActor parameter.
- Optimized the virtual machine by having the virtual machine analyze
whether a fact needs to be processed depending on whether the actor has any
fact frames or active detectables.
- Optimized the virtual machine by removing any initial beliefs and facts
from the initial belief/fact list that are overridden by more specific
concepts.
- Fixed an issue where a frame was prevented from being made available
when using a forone variable when a different value binding was present for
a previously available frame.
- Fixed an issue where the use of a variable for the collection index on
the left hand side in a detectable would cause a ClassCastException to be
raised by the virtual machine when detecting a fact.
- Fixed an issue in the external agent in processing engine INFORM ComAct
content causing not-understood messages to be returned to sending agents.
- Fixed an issue in the VM where it would raise a VMError with a token
assertion into an RSNFrame node failing due to the node not having a
condition element with the condition element id as specified in the token.
The problem occurred with two exactly the same OR(O) preconditions in two
different frames. Each precondition (object comparison) would be assigned
its own unique id, however the RSN would re-use the required R-lhsO-rhsO
nodes. The RSN builder would reset the rhsO node id with the id of the last
processed object comparison. Now we maintain a mapping between frame node
and condition element id. When asserting a token we obtain the proper
condition element id and set it in the token prior to asserting it. This
ensures that the proper condition element id is always set in the token.
- Fixed an issue in getParameterValues for AbstractExternalActivity in the
JAPI.
- Fixed an issue in getValues for variables in the JAPI when the variable
contained non-concept values.
- Fixed JAPI documentation.
- Fixed an issue in the engine where objects with only fact frames would
not maintain beliefs and would therefore be unable to communicate beliefs.
Brahms Virtual Machine V4.1.36
V4.1.36 Changes
- Added a State Viewer and breakpoint activity to allow modelers to
inspect the state of an actor at runtime. A breakpoint activity was added to
the BaseGroup and BaseClass concepts. An actor can anywhere in the body of a
workframe have the actor perform that activity. When that activity is
performed the State Viewer is displayed, displaying the frame instantiation
agenda for that actor (current, available, interrupted, impassed frame
instantiations). For an actor its current beliefset can be displayed and for
a frame instantiation its details including variable bindings.
- Added the ability to retrieve BrahmsClassDescriptors and
BrahmsGroupDescriptors directly from the JAPI class.
- Fixed an issue in the Brahms/Java converter where the conversion of a
Java object to a Brahms object did not use the proper Brahms class as the
type to convert to.
- Fixed an issue in the converters to prevent a circular loop when objects
refer to one another.
- Enabled pass through via the JAPI to start, pause, resume, and stop the
Brahms VM.
Brahms Virtual Machine V4.0.68
V4.0.68 Changes
- Fixed a possible NullPointerException in resetting an external agent
when shutting down the virtual machine.
- Fixed an issue in logging reporting failures via the agent monitor when
no cause/exception is present. Now just using the message as the cause
- Changed the checksum routines used in the VerifyChecksum and CopyFile
activities for empty files, now returning the checksum value of 0 for an
empty file.
- Fixed the copy file activity to supporting copying of large files >
64MB.
- Changed the virtual machine to no longer invoke the start/stop methods
on an external agent if the external agent failed to initialize.
- Updated the retract belief activities to now also allow for a 'fromActor'
argument to be passed to retract a belief from an actor other than the actor
performing the retractBelief activity. This allows for retraction of beliefs
from data objects that do not have any behavior. BaseGroup and BaseClass
include additional retractBelief and retractBeliefValue declarations.
- Added addProcessListener and removeProcessListener methods to the
IVMController interface in the JAPI.
- Fixed an issue with unknown preconditions when they use a variable for
the collection index in the condition for a map type attribute. Those
preconditions were incorrectly evaluated.
- Fixed Get/SetCommunicativeActProperty Java activities to support the
value unknown.
- Added a BrahmsGroupDescriptor similar to BrahmsClassDescriptor to easily
obtain belief values for attributes/relations declared for an agent of that
group.
- Added set/get value methods to the BrahmsClassDescriptor and
BrahmsGroupDescriptor that now also allow you to specify the lhsConcept for
the belief from/for which to obtain/set the value.
- Fixed a NullPointerException in the Brahms/Java conversion API where the
converters did not check for a null Brahms/Java instance mapping.
- Fixed a NullPointerException when building the reasoning state network
for a precondition of the form (un)known(OA R). The buildRSN assumed the
right hand side was always present, but in case of a (un)known this is not
the case.
- Fixed an issue in asserting a statement (belief/fact) into the statement
set where the result was not properly set when asserting a new statement in
the case where we would have an existing OA belief but not the specified
OA(index) belief. Now setting the result to asserted if the result was not
yet set to retracted.
- Fixed an issue related to obtaining parents, attributes, relations,
activities, workframes, and thoughtframes recursively from all parents of a
concept breadth first. The elements were not truly obtained breadth first
but with a mixture of breadth and depth first. Rewrote the implementation to
now be truly breadth first.
Brahms Virtual Machine V4.0.47
V4.0.47 Changes
- Fixed an issue in the BrahmsCalendar utility class where the attribute
count was not set correctly causing an ArrayIndexOutOfBoundsException.
- Added a getASP() method to the IVMController interface to allow
components to access the CI Actor Service Provider to register their own CI
actors.
- Fixed issues in the converter classes supporting translation of data
objects between Java and Brahms. Now generating a warning instead of an
exception if a mapping for an attribute/relation could not be found. Now
using the class of a value to determine how to best convert an object
instead of using a property type to ensure we instantiate an instantiatable
class and not attempt to instantiate an interface or abstract class.
- Updated the Brahms converters to include a mapping for Java collections
of primitive types and strings and mixed collections of primitive types and
objects. These are now mapped to Brahms maps with the key being the index of
the value in the collection.
- Changed the way monitoring events are distributed to external
components. The hosting environment now uses the CI data distribution
service (DDS) to publish monitoring events having the DDS manage the
subscribers. Removed support for allowing agents to (un)subscribe for
monitoring events using subscribe/cancel ComActs.
- Fixed an issue where a shutdown of the hosting environment could be
initiated twice as part of the same shutdown cycle causing an improper
shutdown order of components.
- Modified the deadlock monitor in the virtual machine to now dump a stack
trace in the log file for all threads that are involved in a deadlock. This
allows us to use the log information for deadlock analysis.
- Fixed an issue in the way tokens with statements were processed in the
reasoning state network. After testing an attribute node, the token first
used to go to collection index nodes, then to object nodes for those
statement without a collection index. However if the attribute was of a map
type and both preconditions existed in which a collection index was used and
where none was used (known/unknown) then residual matches from testing
collection indices were still remaining causing potential VM exceptions to
be raised. Now first testing object nodes after attribute nodes, then the
collection index nodes.
- Added explicit search for file resources in the class path in the
FileLocator utility class, before trying to use the resource loader provided
by Java. Java's resource loader attempts to find files in directories not in
the class path making it hard to impossible to control the loading of a file
with a filename that can be found in multiple places, but of which only one
can be found in the classpath.
- Added support to the Brahms/Java converter to maintain a mapping between
Brahms and Java objects and to update values in these objects as part of a
conversion instead of always creating new objects.
- The conversion context now also maintains a list of all created Brahms
objects so that the actor initiating the conversion can properly release
memory references to them.
Brahms Virtual Machine V4.0.19
V4.0.19 Changes
- Removed the KAoS transport layer and directory service interface and
replaced it with the Brahms Collaborative Infrastructure (CI). The CI
provides transport, directory, data distribution, management, translation,
time, and logging services. Every Brahms agent and non-serializable object
is now made available as a CI actor. The Brahms Hosting Environment uses the
CI distributed directory service to register the agents/objects and to
lookup remote agents/objects. The CI data distribution service is used to
publish and discover remote directory services.
- To run the Brahms Virtual Machine in distributed mode the Brahms Hosting
Environment (Hosting Environment script) must be started and not the Brahms
Virtual Machine (bvm script). The bvm script is to be used for running in
simulation or real-time modes. The Hosting Environment script can be used to
run in all three modes. Running in distributed mode now requires a different
configuration setup which is described in the readme file for the
distributed VM (ReadmeDistributedVM.html).
- Added a new field to the Calendar Brahms class (timems) to manage the
time in milliseconds since epoch. The Calendar activities now generate a
belief for that attribute as well.
- Fixed an issue where the virtual machine would not properly parse the
type information for an initial belief or fact when the right hand side was
referencing a class-type concept.
Brahms Virtual Machine V3.31.14
V3.31.14 Changes
- Added brahms.base.util.ParsePrimitiveValueActivity with the parseInt,
parseLong, parseDouble, and parseBoolean activity declarations in
SystemGroup and SystemClass.
- Fixed an issue where with the use of the communication library the
behavior of the VM would differ on subsequent runs when run from the
Composer without restarting the Composer.
- Integrated a new release of the collaborative infrastructure (CI)
transport layer that uses an actor service provider (ASP) to provide the CI
services. Modified the templates for the hosting environment and process
manager descriptors and added a descriptor for the ASP.
- Removed the ExternalException as being raised when getName is called on
an IConcept using the JAPI.
- Added 'IClass getParent()' to IObject in the JAPI.
- Added 'List<IAttribute> getAttributes()' and 'List<IRelation>
getRelations()' to IConcept in the JAPI.
- Added support for easily converting Java objects to Brahms objects and
vice versa when the classes have identical package and class names and the
Java members have accessors that comply with the bean specification and
where the Brahms attributes/relations match the Java bean property names.
Java Maps are translated to Brahms map type attributes, Java Collections and
Arrays to Brahms relations, and Enums to symbols. Case specific converters
can be written and registered with the Brahms Converter Manager accessible
via the gov.nasa.arc.brahms.vm.api.JAPI.
Brahms Virtual Machine V3.29.10
V3.29.10 Changes
- In distributed mode the virtual machine now observes the serializable
indicator for any concepts being transferred to actors in a remote virtual
machine as a reference part of a belief. Serializable concepts are now no
longer registered in the directory service and are serialized as part of the
communication. In the remote virtual machine the concept is deserialized.
When a concept is deserialized it is reconstructed with the exact same
identifier/name as the source concept in the source virtual machine. If the
concept already existed and the concept maintains a belief set then the
belief set is updated with the beliefs transmitted as part of the serialized
state of the transmitted concept. Any serializable concepts referenced in
beliefs of a serialized concepts are (de)serialized in the same manner.
- The hosting environment now waits for the VM to start before subscribing
an actor for monitoring events if the subscription request comes in prior to
the VM having been started. A refuse response is now returned after 10
seconds if the VM still was not started.
- Updated the hosting environment to work with the latest collaborative
infrastructure release incorporating a transport service manager allowing
endpoints to be shared simplifying actor configuration.
- Fixed an issue when shutting down the VM where a NullPointerException
was raised by the AgentMonitor when no listeners were registered.
Brahms Virtual Machine V3.28.0022
V3.28.0022 Changes
- Created a collaborative infrastructure (CI) Hosting Environment wrapper
for the Brahms virtual machine to allow for the Brahms virtual machine to be
seen as a CI actor allowing for remote management using the CI's transport
layer.
- Added agent monitoring capabilities to monitor an agent's run state,
monitor for dead locks, monitor memory, and monitor for other fatal errors.
Notifying any registered monitoring event listener of detected problems.
Allowing remote CI actors to register to receive the monitoring events.
Brahms Virtual Machine V3.27.0019 beta
V3.27.0019 beta Changes
- Removed the Agent Environment Monitoring support. Will be replaced with
new remote monitoring support.
- Fixed an issue in Get/SetCommunicativeActProperty where variables
declared with a meta type and passed as an argument to the value parameter
would generate an exception since the activity did not support the meta
types.
- Fixed deadlock issues that were detected when running on multi-core
CPU's.
- Fixed deadlock related to internal memory management.
- Fixed an issue in distributed local communication of a ComAct causing a
ClassCastException to be thrown.
- Fixed a bug in detectables where the right hand side of a detectable was
not properly resolved when the right hand side specified an object/attribute
tuple and this tuple could not be resolved against the current belief set.
- Changed the way unique names are generated for dynamically created
concepts to prevent re-use of names for concepts that were deleted.
Brahms Virtual Machine V3.26.0002 beta
V3.26.0002 beta Changes
- Enhanced the CommunicativeAct class (both Java and Brahms) to improve
support for the FIPA specification clearly identifying the property names to
be used in the envelope and payload (sender/receiver/reply-to are now in the
payload not in the envelope, the envelope has from/to). Moved static
creation methods into a CommunicativeActFactory. Added methods to set
property values on a CommunicativeAct object to also assert a belief for the
underlying Brahms. CommunicativeAct.
- Added an isAcceptingFacts method to IExternalAgent allowing an agent to
indicate whether it wants to be notified of any fact events (assertions,
retractions). The default is set to true. Using AbstractExternalAgent::
setAcceptingFacts(false) this can be disabled.
- Optimized the virtual machine to only notify actors that accept facts of
fact events. An actor that has no frames will not accept facts. An external
actor is asked whether it accepts facts (isAcceptingFacts).
- Added Java activities to support the copying, deleting and verifying of
files. Verification uses CRC-32 checksums. The copy file supports the
creation of directories when needed, file overwrites and copy verification.
Added the group IOGroup and class IOClass that declare the activities.
- Fixed an issue where unbound variables passed to a composite activity
and bound in preconditions in a workframe in the composite activity would
not have their binding set in the workframe in which the variable was
declared and passed to the composite activity. The variable was only bound
in the workframe in the composite activity.
- Fixed an issue in resolving parameters of type long, added support for
the long type, it was missing.
- Added Java activities to JavaUtilGroup and JavaUtilClass to load a
properties file (loadProperties), get (getPropertyValue), and set property
values (setPropertyValue) with the option to save the properties file.
- Fixed an issue in FileLocator where locating a file using the classpath
in directories with spaces caused a problem.
- Added IOGroup and IOClass in brahms.io package with Java activities to
verify file existence (verifyFileExists), copy a file (copyFile), delete a
file (deleteFile), and to verify the checksum of a file (verifyChecksum).
Brahms Virtual Machine V3.24.0008 beta
V3.24.0008 beta Changes
- Added the class brahms.communication.AbstractCommunicationAgent as an
abstract base class for external agents that interact with agents using
CommunicativeActs.
- Added the utility class brahms.util.FileLocator that locates files using
the filename, current directory, home directory, java directory, or
classpath.
- Added the utility class brahms.util.PropertiesLoader that locates a
configuration file (for an agent) and loads the properties from it returning
a Properties object.
- Added the utility class brahms.util.Queue that supports the enqueueing
and dequeueing of elements, supports both blocking and non-blocking
dequeueing, and supports the re-opening of the queue.
- Fixed a concurrent access exception where two threads were iterating
over the same precondition and precondition variable lists.
- Added some profiling debug statements to log the time taken for
asserting beliefs, evaluating preconditions and executing frames.
- Resolved the issue where occasionally the Brahms virtual machine would
deadlock when it was being shut down.
- In real-time mode now setting the proper real-time end-time for
retracted beliefs.
- Added IExternalAgent::notifyNewEvents to the JAPI used to wake up the
scheduler in simulation mode. A no-op in real-time mode.
- Added AbstractExternalAgent::getModeOfOperation as a convenience method
to obtain the virtual machine's current mode of operation (sim, rt, drt).
- Added IExternalAgent::isAutoReady() and IExternalAgent::ready() and
AbstractExternalAgent::setAutoReady(boolean) used to allow an external agent
to control how it behaves in simulated mode allowing it to halt a simulation
until it finishes its processing. It can be made responsible for notifying
the scheduler that it is ready for new events (setAutoReady(false)) with the
external agent invoking ready() when it wants to have the simulation resume
and it can receive more events.
- Modified the external agent implementation to now have events processed
in a separate thread only in real-time mode, in simulation mode those events
are processed when the scheduler tells the external agent to process the
events. Now also first notifying the agent of the events before calling the
external agent's onProcess method in simulation mode followed by a call to
the scheduler's ready() method if isAutoReady() returns true.
- Fixed a memory management related issue. On delete fact retraction
events would be processed after an element was deleted with the potential of
external agents or agent internals running into null pointer exceptions due
to internal structures having been cleaned up for the deleted element. In
the current simple test models this has not yet been an issue but in larger
models this would have popped up. Changed delete to a two phase process,
first initiating a delete, then finalizing delete where in the initiation
the facts are retracted and where finalize doesn't get called until all fact
retraction events are fully processed. Now acquiring and releasing memory
references also for retract events and maintaining a reference count.
- Changed the threading synchronization for agents and the schedulers to
reduce the number of different mutexes and condition variables used,
simplifying the threading design and eliminating the possibility of
deadlocks.
Brahms Virtual Machine V3.23.0031 beta
V3.23.0031 beta Changes
- Updated the virtual machine to be compliant with language specification
version 2.17.
- Added support for deleting dynamically created concepts (agents,
objects, conceptual objects).
- Added new JAPI methods to IGroup, IClass, IConceptualClass and IAreaDef
to retrieve the members/instances of that class optionally inclusive of the
members of their subclasses.
- Added new JAPI methods to IActiveInstance and IConceptualObject to allow
an external agent to acquire and release a memory reference to a dynamically
created concept (agent, object, conceptual object) to indicate to the Brahms
virtual machine that the external agent is using that concept and preventing
the Brahms virtual machine from deleting the concept until also the external
agent released the memory reference.
Brahms Virtual Machine V3.22.0036 beta
V3.22.0036 beta Changes
- Updated the virtual machine to be compliant with language specification
version 2.16.
- Added support for communicating CommunicativeActs as part of a
communicate activity.
- Now creating an activity context and generating activity and belief
transferred events when a CommunicativeAct is communicated using the JAPI
(from an external agent or activity) allowing communications initiated by an
external agent to be visualized in the agent viewer.
- Fixed a bug where when using the JAPI to create beliefs/facts using a
map with a collection index and a value of type int or long the values were
converted to doubles.
- Fixed a bug in the way the virtual machine sent the belief contents of
an object to a recipient in simulation mode. The virtual machine would
directly assert the beliefs onto the recipient's belief queue causing a race
condition since the scheduler wasn't aware of that communication which ended
up having all actors waiting on each other. Now all the beliefs are
communicated via the scheduler when in simulation mode.
Brahms Virtual Machine V3.21.0023 beta
V3.21.0023 beta Changes
- Updated the virtual machine to be compliant with language specification
version 2.15.
- Fixed the behavior of the unknown modifier for preconditions now
properly verifying whether the condition holds true for the specified left
hand side concept when variables are used no longer ignoring the left hand
side concept.
- Added support for pausing and resuming a simulation.
- If the DTD path references in the Brahms Compiled Code is invalid the
virtual machine will now try to use the DTD path included with the
distribution instead allowing for Brahms Compiled Code generated on
different platforms to be cross-platform.
- Modified consequences in the data frames for objects to match right hand
side OA's to match with beliefs instead of facts.
- Added support for new attribute types, long and map. Modified the
compiler to add support in initial statements, preconditions, consequences,
detectables and transfer definitions for an index when an attribute is of
the map type - OA(index) = V - where the index can be an integer or string.
- Added support for activity overloading.
- Added support for a <class type> variable on the left hand side of
detectables allowing detectables to detect any fact with a concept on the
left hand side that is type compatible with the class type concept declared
in the detectable condition as: <concept class>.attribute = value.
- Added support for Java types as the type for an attribute, variable or
parameter, with full support for Java generics.
- Updated the transport layer to support java.io.Serializable attachments
when Java objects are references in a belief or transfer definition,
substituting the object reference for a name that matches an attachment in
the attached attachment map.
- Updated the JAPI to include support for all the new language
enhancements (long, map, Java types).
- Now generating initial beliefs for each agent and facts about their
group membership and generating initial facts about the classes objects are
instances of. The isMemberOf relation was added to BaseGroup, the
isInstanceOf relation was added to BaseClass.
- Changed SendBeliefsActivity to now require as parameter name
'relationName' instead of 'relation' since relation is now a keyword.
- Fixed bug where newly created objects would not be notified of the
current facts in the world.
- Now having all belief assertions initiated through the JAPI go through
the scheduler in simulation mode.
- Fixed a bug where the compiler would not properly detect detectables
with a detectable condition of the form '<Class> relation value'.
- Fixed an issue with assigning strings to symbols in create activities
and any assignments to symbols in general. If the compiler allowed strings
to be assigned the VM would still thrown a VMError when the value of a
variable was not a symbol value. Now the value will check whether a string
conforms to the symbol grammar and if so return it as the symbol value even
if the type of the variable was a string. Only if the string value does not
conform to the symbol grammar will an exception be raised.
- Fixed a bug where a problem would arise if multiple threads would access
the fact list returned using IWorldState.getFacts().
- Fixed a bug, now allowing an emptry string ("") as a valid value.
- Added java activities for retracting beliefs/facts to BaseGroup and
BaseClass
- Added support in the JAPI to dynamically create external agents.
(gov.nasa.arc.vm.api.jagt.ExternalAgentFactory)
- Added a java activity for dynamically creating external agents to
BaseGroup and BaseClass
- Added setBrahmsAgent and getBrahmsAgent API methods to IExternalAgent
that allows the VM to set and the agent to get the Brahms agent reference
for the external agent implementation.
- Added onThreadEnd API method to IExternalAgent. This method is called
just before the agent's thread ends allowing the agent itself to do some
final cleanup.
Brahms Virtual Machine V3.17.0011 beta
V3.17.0011 beta Changes
- Added support for activity overriding. The virtual machine now resolves
activity references by looking up the referenced activity by the reference's
activity descriptor and no longer by using a hard reference to an activity.
The virtual machine resolves to that activity lowest in the concept
hierarchy with a matching activity descriptor.
- Modified the file agent viewer service to write out the events into a
new version 2.0 history file format to support the activity overriding.
- Added the ability to indicate in the virtual machine's configuration to
auto-start and/or auto-stop the virtual machine, i.e. automatically start
the model when it is loaded or have the user start it manually and
automatically stop the model when a simulation indicates that no work is
left to be done or only stop when the user stops it manually.
- Added support to connect Brahms to the Brahms Virtual Environment
(BrahmsVE) through the BrahmsVE Service publishing all events from the
virtual machine to BrahmsVE for processing and animated display of the agent
behaviors in the virtual environment.
- Fixed an issue in reporting an error about containment in put and get
activities. Now properly specifying the name of the activity.
- Added an API call to register a time synchronization hook to allow the
Brahms scheduler to time synchronize with external simulation environments.
This time synchronization hook is only relevant for the simulation mode, not
the real-time mode.
- Fixed a bug where a parameter referenced in a condition by an Operand
wasn't properly resolved. It would try to resolve it through the current
activity where in case of a detectable it would need to do so through its
parent composite activity. Having the same name for a parameter in the
current and parent composite activity with different parameter indices
exposed the bug.
- Fixed a bug where we didn't check for null on the current activity when
resolving a parameter.
- Increased the number of digits for the clock-tick display.
- Now only reading in Brahms byte code from files with the Brahms byte
code extension (bcc).
- Added support for reading Brahms byte code from Brahms Archive files
with the 'bar' extension.
- Fixed a bug in loading concepts from byte code.
- Fixed a bug in retrieving a set of beliefs about only a specified
attribute in distributed mode. This case wasn't handled yet in the
distributed environment.
- Fixed an issue with using a Java activity to calculate a duration for
another activity following the Java activity in the same workframe where the
Java activity has a duration of 0. Normally all events for the same time
would be posted before performing the activities, this caused any variables
bound by a Java activity used in subsequent activities not yet to be bound
even though they might have been needed to calculate the duration for
example. Now control is handed over to the engine after every Java activity
to ensure that the Java activity is fully processed before proceeding with
other actions in the workframe's body.
- Added support for the creation of agents from the JAPI.
- Added a new Java activity ToIntActivity in the brahms.base.system
package
- Modified the logger's initialization routine to change file appenders to
include a time stamp in the file name to make the log files unique and to
prevent log files from being overwritten.
- Fixed an issue with generating unique identifiers for Brahms elements
resulting in history file parsing errors due to duplicate identifiers. Now
synchronized the ID generation to ensure uniqueness and to resolve the race
condition.
- Fixed an issue with using external agents in simulation mode, the
external agents didn't properly coordinate with the scheduler blocking the
scheduler when it needed to synchronize time.
- Fixed an issue where external agents running in different virtual
machines weren't able to communicate objects by value with one another.
- Fixed an issue where preconditions of the form (OA relation O) would
cause a ClassCastException.
- Fixed an issue with transmitting string values to/from remote agents as
part of a belief, the use of the '|' character would cause the transmission
to fail since that character was internally used as a separator character
for beliefs. Now any valid string content is allowed in a string.
- Fixed an issue where running the VM in simulation mode with auto-stop
set to 'no' and using external agents to send beliefs to agents to trigger
their frames would cause the frames not to fire due to the scheduler's
thread ending because it had an indication that there were no more events to
be processed. Now it waits for a notification from any agent that new events
were posted to allow the scheduler to wake-up again and tell the agents to
process their events.
Brahms Virtual Machine V3.13.0013 beta
V3.13.0013 beta Changes
- Added support to the JAPI for sending objects by value to a remote agent
(IObject:::sendTo). It sends the object reference and the beliefs in the
object's belief set to the remote agent. The remote agent retrieves the
object reference, marks it as local and as a copy and asserts the beliefs in
the object and in the agent's belief set. Any belief retrieval from that
object will now only result in belief retrieval from the local copy. The
original and copy are not kept synchronized and are separate copies, but
with identical reference identifiers.
- Fixed a bug causing a ConcurrentModificationException on the process
listener list in the VM Controller when running the VM in simulation mode
from the Composer. The list is now properly synchronized for a
multi-threaded environment.
- Added support for enforcing policies defined using KAoS' KPAT (KAoS
Policy Administration Tool). The policy enforcement can be turned on/off
using a configuration option in the virtual machine's configuration file and
is by default off.
- Fixed a bug where initial beliefs and facts were processed in the
reverse order, initial beliefs/facts of super classes had precedence of the
ones in subclasses/instances.
- Fixed a bug where the use of the unknown modifier in preconditions using
parameters passed through a composite activity would incorrectly result in a
failure to make a frame available. The VM didn't properly resolve the
parameter to its value when evaluating the preconditions with the unknown
modifier.
- Fixed a bug where multi-threading allowed for two objects with the same
unique id to be created, synchronized JClass::newInstance to solve this
problem.
- Fixed a bug in Parameter, it was resetting the types of all parameter
values to symbol if its type was set to be symbol, it should only have done
this if the types for the values were not yet set or set to be a string.
- Fixed an issue with the virtual machine's Corba Log Writer used to send
the virtual machine's log messages to a remote Agent Monitor. In case of an
error the log writer could get into an endless loop trying to write the
error to the log causing it to again fail trying to send it to the
agentmonitor.
- Modified the Corba Log Writer to send the full exception trace to a
remote Agent Monitor in case an Exception was being logged.
- Fixed an issue in the virtual machine where the use of comma's in the
value of belief with an attribute of type string would cut the value off at
the comma when communicating the value to a remote agent. Now we are
properly identifying and delimiting string values ignoring comma's in the
string values. Comma's are used as delimiters when beliefs are converted to
a format that can be transmitted to a remote agent.
Brahms Virtual Machine V3.11.0005 beta
V3.11.0005 beta Changes
- Removed support for the 'assert' and 'retract' methods in the API since
they are reserved words in Java JDK 1.4 and later. These methods were
deprecated the last 6 months.
- Changed the logger for the Brahms virtual machine to use Log4J's logger.
The Brahms virtual machine's logger is deprecated but is backward compatible
with Log4J. The Log4J logger allows for better controlled logging through
configuration files. The default configuration file is vmLogger.cfg. The
vm.cfg file has changed to specify the location of this logging
configuration files and the old logging options are removed.
- Added methods to the IModel interface to allow for the retrieval of
concept instances using a loading strategy, allowing control over whether
the concept instance is to be found in memory only, or a combination of
memory, disk and directory service.
- Fixed a bug where the VM would cause the Composer to exit if a problem
occurred while loading a model.
- Modified the CorbaLogWriter to allow for log messages to be send to a
remote agent monitor when messages are logged using Log4J.
- Fixed a bug where the VM would not properly continue a workframe when
its current composite activity was ended with an end-activity detectable.
Brahms Virtual Machine V3.09.0001 alpha
V3.09.0001 alpha Changes
- Fixed a bug where when we load a remote concept referencing a parent that
is not yet loaded, it had to be loaded first in order for proper
registration of the object in the history file.
- Fixed a bug where workframes with only collect-all variables would result
in ArrayIndexOutOfBoundsExceptions due to an indexing error in RSNFrameNode.
- Added API method to allow access to the Corba ORB used by the VM.
- Added synchronization blocks around the access to the s_lLastID fields
used when creating new contexts and assigning them unique ID's. Race
conditions were causing duplicate key's to be possible and resulted in
errors when parsing the history file using the agent viewer.
- Upgraded ProfessionalAgent to now use JacORB 2.0 replacing JacORB 1.4.1
- Upgraded ProfessionalAgent to use the latest available release of KAoS.
Brahms Virtual Machine V3.07.0040 alpha
V3.07.0040 alpha Changes
- Fixed a bug where frames with foreach variables used in only one
precondition as an assignment were already available would be made available
more than once.
- Fixed a bug where dynamic creation of agents, objects, conceptual objects
and areas in distributed mode could result in unnecessary wait times in
order to check whether a concept with a specified name already exists. It is
not necessary to check remote concepts since names are unique within each
VM.
- Fixed bug where remote agents were unable to send beliefs to an external
agent.
- Fixed bug where an attribute in a belief was incorrectly processed in
remote communications if the attribute was declared for an agent/object and
not a group/class.
- Fixed a bug where when during a concept lookup a remote concept was found
we would still do a local concept load.
- Fixed a bug in distributed receive communications where received beliefs
were not put at the beginning of the event queue.
- Fixed a bug in the JAPI where initial facts for dynamically created
objects were not processed.
- Added capability to create new areas using the JAPI.
- Added support for language specification version 2.12 in which support was
added for the relational operators >, >=, < and <= in detectables.
- Deprecated all assert/retract methods and removed all uses of
assert/retract from the core code. As of JDK 1.4 'assert' is a Java keyword.
The API now has appropriate replacement methods (assertBelief/assertFact,
retractBelief/retractFact).
Brahms Virtual Machine V3.07.0029 alpha
V3.07.0029 alpha Changes
- Added a set of external activities (Java Activities) to create and
manipulate brahms.base.Calendar objects. The activities are declared in the
CalendarUtilGroup.b and CalendarUtilClass.b files in the brahms.base
package.
- Added support for setting the time zone with the -date flag to initialize
the simulation date/time.
- Added support for dynamically loading groups/classes/conceptual
classes/area definitions when such a concept is not yet loaded and the JAPI
tries to create an instance of one these concepts.
- Fixed a bug where passing a concept instance to a parameter for a Java
activity would result in an Exception to be thrown.
Brahms Virtual Machine V3.07.0025 alpha
V3.07.0025 alpha Changes
- Removed dependency on the collections.jar library now solely using the JDK
1.2 or higher collections library.
- Transport used for agent registration and communication is now CORBA
instead of Jini/Rmi/Grid.
- Fixed a problem in the virtual machine where a get activity did not
properly remove an item from its current location.
- Fixed a problem where in distributed mode the virtual machine would
initiate the loading of a remote concept before all local concepts were
registered.
- Communications are now able to recover properly when the receiving agent
was reregistered due to a failure in the remote virtual machine. The
communications will renew the locator for the remote agent.
- Added the getName method in the AbstractExternalActivity class as part of
the Brahms JAPI.
- Added support for the IBeliefQuery and IFactQuery interfaces allowing an
agent monitor to request the fact set of the World State or the belief state
of an agent or object.
- Includes a new File Agent Viewer Service to create history files that are
parsable and displayable even after a virtual machine is terminated
abruptly.
- Updated XML parser to Sun's JAXP version 1.2
- Fixed a bug in the precondition evaluation where the binding of variable
bound in an earlier precondition was not used in the evaluation of
subsequent preconditions.
- Fixed a bug in the dynamic creation of objects by external (java)
activities.
- Fixed a bug in the file agent viewer service to handle dynamically created
objects created by external activities.
- Fixed a bug in the virtual machine where an error would be generated if a
precondition was used in a workframe in a composite activity using a
relation where the right hand side was a variable not bound in an earlier
precondition.
- Added support for the IWorkStateQuery interface allowing an agent monitor
to request the work state of an agent or object.
- Added support for the virtual machine to be started and managed by the
Composer.
- Bug fix for use of two foreach variables in one precondition.
-
Modified create object/agent/area to use the name of agent when performed by an
agent and to use the name of the model as part of the object name when called
from the JAPI to keep the name unique in distributed mode.
-
Bug fix that solves a problem with the use of variables passed down several
levels to composite activities, without being referenced in preconditions in
frames in sub levels. The bindings weren't properly send down in that case.
-
The ':' in the timestamps messed up the parsing of the beliefs in remote
communications.
-
If the right hand side of a communication send or receive was an OA the parsers
would bomb, the Vm requires 'unknown' on the right hand side for OA=. If the VM
does not see a valid right hand side it will now assume 'unknown'.
Brahms Virtual Machine V3.04.0009 alpha
V3.04.0009 alpha Changes
- Fixed problem in receive communication where event handlers would generate
an exception if a transfer definition did not match with any beliefs to be
transferred.
- Added support for assigning a parameter to the display property of
activities in addition to being able to assign it a string value.
- Fixed a problem with the use of 'unknown' preconditions when using
variables on the left hand side. Unknown would fail to match if any
statement matched the left hand side regardless of the variable binding.
- Fixed a problem with the use of known and unknown in preconditions in
combination with the use of relations. A NullPointerException was thrown.
- Allowed for the retrieval of beliefs from remote agents and objects by
external agents and activities.
- Modified the OWorld Service to comply with the new OWorld Event
Specification.
- Fixed a problem in the virtual machine when using foreach variables on
both the left and right hand side in a precondition with multiple beliefs
that have different different lhs/rhs value combinations.
- Fixed problem with copying remote Brahms objects. An exception was thrown
when the VM tried to copy the beliefs.
- Fixed problem with belief ownership settings causing errors to be
generated by the file agent viewer service.
- Fixed a problem in the file agent viewer service. Beliefs or facts with a
multi-line value on the right hand side caused parsing errors in the agent
viewer parser. The service now cuts the value off at the first new line
character.
- Fixed a problem in the virtual machine when using foreach variables on
both the left and right hand side in a precondition with multiple beliefs
that have different different lhs/rhs value combinations.
- Fixed problem with copying remote Brahms objects. An exception was thrown
when the VM tried to copy the beliefs.
- Fixed problem with belief ownership settings causing errors to be
generated by the file agent viewer service.
- Fixed a bug in the virtual machine where a ClassCastException was thrown.
Brahms Virtual Machine V3.03.0010 alpha
V3.03.0010 alpha Changes
- Fixed a problem in the virtual machine where certain variables used in
preconditions in frames in composite activities were not correctly resolved.
Certain variable references were overwritten in memory.
- Fixed a problem with using thoughtframes in composite activities. An
exception was generated when more than one thoughtframe was available in a
composite activity.
- Currently KAoS doesn't generate the appropriate error when an agent is not
locatable during a communication, a MessageNotRepliedToException was
generated. This is now fixed with a workaround and will now correctly
generate a NotLocatableException.
- Fixed a type compatibility check problem with the use of the meta type
ActiveConcept for attributes in the Brahms JAPI.
- Fixed a problem with automatically generated Exception objects. Those
objects did not have context associated with them resulting in errors to be
generated by the virtual machine when trying to match variables with those
exception objects.
- Fixed a problem with the transfer of beliefs in a distributed environment
where the type of an attribute is of a meta type.
- Fixed a problem with a communicate activity where a ClassCastException was
thrown when a communicate activity was executed for which no agents to be
communicated could be found.
- Added support for 'current' reference in JAPI.
- Fixed a bug in binding a value to a variable of a meta type.
- Fixed a bug in the JAPI. The JAPI didn't allow '_' characters in symbolic
values.
- Fixed a problem with the receive communication. A ClassCastException was
thrown.
Brahms Virtual Machine V3.03.0000 alpha
V3.03.0000 alpha Changes
- Fixed a problem with passing parameters of primitive type to a composite
activity and using them in a precondition.
- Fixed a problem with initialization of facts in real-time mode. It now
goes directly through the world state instead of through the scheduler.
- Fixed a problem with the real-time engine. It would sometimes discard
events whenever new events were posted that were to be added at the
beginning of the queue for a specific time where the time of events on the
queue were less than the time of the event to be added.
- Added shutdown hook to allow the virtual machine to gracefully stop all
services even if the virtual machine is stopped ungracefully using Ctrl-C.
- Added support for the create area activity.
Brahms Virtual Machine V3.02.0036 alpha 5
V3.02.0036 alpha 5 Changes
- Fixed a problem with passing parameters of primitive type to a composite
activity and using them in a precondition.
- Fixed a problem with initialization of facts in real-time mode. It now
goes directly through the world state instead of through the scheduler.
- Fixed a problem with the real-time engine. It would sometimes discard
events whenever new events were posted that were to be added at the
beginning of the queue for a specific
time where the time of events on the queue were less than the time of the
event to be added.
Brahms Virtual Machine V3.02.0033 alpha 4
V3.02.0033 alpha 4 Changes
- Modified OWorld service to include the export of the associated resources
in the gesture activity.
- Bug fix in the virtual machine, now properly reading in get, put and
gesture activities that are declared inside of a composite activity.
- Bug fix in the virtual machine not properly parsing variables, attributes
and relations from XML when their type was of meta type Area.
- Bug fix in the virtual machine in resolving the value for a parameter when
used in a detectable that was triggered for detection while a communicate
activity was active.
Brahms Virtual Machine V3.02.0030 alpha 3
V3.02.0030 alpha 3 Changes
- Updated to work with latest version of KAoS.
Brahms Virtual Machine V3.02.0029 alpha 2
V3.02.0029 alpha 2 Changes
- This patch fixes a bug in the create object activity that causes a
NullPointerException to be thrown when an object is being copied of which
the source has no location.
- Added support for language specification V2.10 adding support for the
Gesture Activity in the virtual machine and the agent viewer, test event and
oworld services.
- Added support for having external agents communicate with distributed
agents.
- Bug fixes in the virtual machine where a communication specified to go to
one agent would be transmitted to all agents in the system. This would
happen when a collect-all variable
was used in a transfer definition that in turn matched to multiple beliefs.
- Bug fixes in the virtual machine where real-time event times weren't
reported correctly to the event services.
- Bug fixes in the file agent viewer service for certain events that were
processed after the VM was stopped to process their end times correctly when
the VM was run in real-time mode.
- Bug fixes in the real-time portion of the virtual machine causing
occasional deadlock to occur in the threading on fact assertion.
- Bug fixes in the virtual machine related to composite activity activation.
- Bug fixes in the test event service for concepts created by external
agents.
- Added isInstanceOf methods for IObject and IConceptualObject in the JAPI
to allow for testing whether an object is an instance of a specific class.
Brahms Virtual Machine V3.00.0016 alpha
V3.00.0016 alpha Changes
- Added the ability for models to be run in a distributed environment over
multiple Brahms virtual machines. Agents and Object can communicate with one
another between virtual
machines. Areas are currently not yet distributed. The distributed
environment currently uses CoABS Grid (Jini) for the transport layer.
Brahms Virtual Machine V2.07.0012
V2.07.0012 Changes
- A bug fix in the virtual machine not allowing for
composite activity parameters to be used in preconditions and consequences
if they are of any type other then a concept type.
- Added the capability to dynamically create a new
conceptual object from a conceptual class using the Brahms Java API and
allows a model builder to check the number of parameters being passed to a
Java activity using the Java API.
- Events generates while the virtual machine is running
in real-time mode are now time stamped using a real-time time stamp in
milliseconds instead of the discrete event time.
- A bug fix in the file agent viewer service causing a
NullPointerException to be thrown when a frame is interrupted after being
impassed and causing some agents communicated with in a broadcast activity
at the end of the activity to be ignored. The agents that arrived in the
location while the broadcast was active are not shown in the agent viewer
due to the fav service registering the agents communicated with at the start
of the activity.
- Updated the file agent viewer service to parse
real-time time stamps when the virtual machine is run in real-time mode to
allow the agent viewer to be used to visualize the results of an agent-based
system executed using the Brahms virtual machine.
- Updated the test event information service to parse
real-time time stamps when the virtual machine is run in real-time mode. The
EventInformation file display the data/time of each event instead of the
discrete event time.
Brahms Virtual Machine V2.06.0008
V2.06.0008 Changes
- Bug fix with parameters being passed to a composite
activity and used within workframes in that composite activity.
Brahms Virtual Machine V2.06.0006
V2.06.0006 Changes
- Bug fix in the Brahms Java API when trying to use
parameters passed to external activities.
- Bug fix for consequences. A null-pointer exception was
recorded in the vm.log file when using a consequence with an
object/attribute tuple on the right hand side that cannot get resolved due
to no beliefs matching with the object/attribute tuple. Now as specified no
error is generated and the consequence will not generate a fact/belief.
- Added support for language specification version 2.9,
adding support for the new properties for the broadcast and move activities
as specified in the compiler changes.
- Modified the base library to include two new relations
for BaseAreaDef 'hasSubArea' and 'isSubAreaOf'.
- The virtual machine now automatically generates a set
of initial facts about the geography structure, the hierarchical
relationship between areas using the hasSubArea and isSubAreaOf relations.
Brahms Virtual Machine V2.05.0008 rc1
V2.05.0008 rc1 Changes
- Added support for the type attribute for workframes.
- Fixed a bug related to detectables.
- Bug fix in OWorld service to correctly export start and
end locations.
- Bug fix in virtual machine to ignore communication in a
broadcast activity if there are no agents to communicate to.
A warning is placed in the log file.
- Bug fix in the file agent viewer service to correctly
handle the situation of a broadcast activity that is not communicating
anything to any agents.
Brahms Virtual Machine V2.04.0013 rc1
V2.04.0013 rc1 Changes
- Added support for the source and destination attributes
in the get and put activities.
- Bug fix in use of variables on the left-hand-side in
relation preconditions
Brahms Virtual Machine V2.04.009 rc1
V2.04.009 rc1 Changes
- Bug fix in use of integer assignment in preconditions.
Brahms Virtual Machine V2.04.008 rc1
V2.04.008 rc1 Changes
- Added support for priorities in thoughtframes.
- Bug fixes in the use of the 'unknown' value.
- Bug fix for collect-all variables.
Brahms Virtual Machine V2.04.004 rc1
V2.04.004 rc1 Changes
- Added support for the use of 'unknown' as a value in
beliefs, facts, truth-values and conditions.
Brahms Virtual Machine V2.02.002 beta
V2.02.002 beta Changes
- Bug fix for the real-time engine, now agents/objects
communicate synchronously with other agents/objects instead of through the
scheduler asynchronously.
Brahms Virtual Machine V2.02.000 beta
V2.02.000 beta Changes
- Added support for the create_agent activity.
Brahms Virtual Machine V2.01.002 beta
V2.01.002 beta Changes
- Added support for the put and get activities.
Brahms Virtual Machine V2.00.069 alpha
V2.00.069 alpha Changes
- Added support for external agents. The virtual machine
is now able to load and create agents that are defined externally in Java.
External agents participate fully in simulation and real-time scenarios.
- Expanded the virtual machine's application programming
interface. Developers are now able to create and communicate beliefs to
other agents and are able to create, assert and retract facts from the world
state. This functionality is provided for both external activities as well
as external agents.
Brahms Virtual Machine V1.00.004
V1.00.004 Changes
- Fixed a bug that caused a repeated assertion/retraction
of the same relation-based belief with differing truth values to fail, the
retraction failed the second time around and onwards.
Brahms Virtual Machine V1.00.003
V1.00.003 Changes
- Fixed a bug that reported a ClassCastException when a
concept value of a parameter passed to a composite activity was used in the
precondition of a frame.
Brahms Virtual Machine V1.00.002
V1.00.002 Changes
- Fixed a bug related to composite activities where
workframes would not be made available if a belief/fact was concluded just
before the composite activity was activated. The non activated workframes
never received the beliefs/facts asserted before the workframes were
activated and never received them when they were activated.
- Bug fix when using variables in a precondition that was
never bound by using the unknown or not modifier. Now a warning is generated
and the workframe is not made available. The model builder must ensure that
variables specified in preconditions are bound.
Brahms Virtual Machine V1.00.000
V1.00.000 Changes
- Fixed a bug in the File Agent Viewer Service in storing
information about a Java activity.
Brahms Virtual Machine V1.00.005 beta
V1.00.005 beta Changes
- Added a stop command-line parameter allowing for the
simulation's stop time to be set from the command line.
- Changed move activity duration calculation behavior.
Now first the activitie's time is checked, if the duration is larger than 0
that duration is used, if the duration is 0 the duration will be determined
based on the network of paths defined in the geography.
Brahms Virtual Machine V1.00.003 beta
V1.00.003 beta Changes
- Bug fix when using for-each variables in repeatable
frames. Frame with a for-each binding did not become available again if
other for-each bindings were available.
- Bug fix in a composite activity, it did not manage the
list of available frames correctly. It ignored new available frames with a
lower priority then already available frames.
Brahms Virtual Machine V1.00.049 alpha
V1.00.049 alpha Changes
- Bug fixes in synchronization between objects through
scheduler. Objects could start an available frame while a fact was on the
scheduler that would make it unavailable. The synchronization occurred after
the available frame was started instead of before.
- Bug fix in handling of detectables and triggers. It was
possible that a detectable detects a fact but that a trigger reacts on a
belief that existed prior to the detected belief that was
supposed to have been retracted due to the detected belief.
Brahms Virtual Machine V1.00.040 alpha
V1.00.040 alpha Changes
- Added virtual machine API for the Java Activity
allowing access to parameter values and allowing to set the value of an
unbound variable.
Brahms Virtual Machine V1.00.033 alpha
V1.00.033 alpha Changes
- New release of the Brahms Virtual Machine compliant
with Language Specification V2.2
Brahms Collaborative Infrastructure V1.12.8
V1.12.8 Changes
- Modified the Directory Service API's find method to now also raise a
DirectoryQueryException if there is a problem with the directory query.
- Implemented the find method in the directory service to now support
looking up actors by their published capabilities.
- Added a findActorsByCapability to the ICIActor interface to which a
capabilities pattern needs to be passed.
- Fixed IllegalMonitorException for holding/releasing messages for an
actor.
Brahms Collaborative Infrastructure V1.11.10
V1.11.10 Changes
- Added support for transferring files using the CI via the CI's transport
service.
- Added support to configure an actor's transport service to automatically
retry failing communications without having to specify this in the envelope
of each ComAct. Added support for the following properties in the properties
element for the transport element in an actor's descriptor:
ci.communication.qos.recovery.num_retries
ci.communication.qos.recovery.retry_interval
- Added support to configure an actor's data distribution service to
automatically retry failing publications. Added support for the following
properties in the properties element for the new DATA_DISTRIBUTION element
in an actor's descriptor:
ci.communication.qos.recovery.num_retries
ci.communication.qos.recovery.retry_interval
It is now also possible to set these properties in the DataInfo class
provided when registering as a publisher allowing an actor to have the DDS
retry failing publications on a per DataInfo type basis.
- Added support for integrating external services and/or frameworks using
ASP Hooks. Defined a new interface IASPHook and added support for adding
ASP_HOOK elements to the ASP_HOOKS element in the ASP descriptor. Tested
this hook functionality to integrate the Spring application framework (CISpringInterface).
- Fixed an issue with communication Java Serializable data via
Communicative Acts. Data is now properly serialized.
Brahms Collaborative Infrastructure V1.8.6
V1.8.6 Changes
- Added support for configuring endpoints to have their hostnames resolved
(default) or not. When true published endpoints specify only IP addresses,
when false the endpoints specify the hostnames. The property names are
defined as part of an endpoint and named <protocol>.host.resolved (tcp.host.resolved).
Its value is a boolean, one of true or false. When dealing with complex
network environments in which NAT is applied between subnets hostnames
should be used provided proper name resolution is implemented in those
networks to deal with NAT.
- Added support for binding an endpoint to a specific NIC on systems that
are multi-homed and where the endpoint is configured to not have its
hostname resolved to ensure that the endpoint is created for the appropriate
NIC. The property name is: <protocol>.host.address with as value an IP
address.
- Modified the transport service interface, removed the sendStream
operation and added operations to support file transfers (createTransferJob,
cancelTransfer, acceptTransfer, and transferFile). No implementation is
present yet.
- Fixed issue with SSL endpoints where they would not use the IP address
to create the 'receiving' endpoint making the binding of the endpoint on
multi-homed machines random. Now it will ensure that the endpoint is bound
to the address specified on multi-homed machines.
Brahms Collaborative Infrastructure V1.5.16
V1.5.16 Changes
- Added support for configuring a DDS as a DDS coordinator to simplify the
configuration of DDS interactions when multicasting is not supported or
permitted on the network and the list of DDS' communicating with one another
varies preventing the use of configured DDS tables.
- Fixed an issue in the BridgeManager where it fails to load the native
library when debugging is enabled for that class on any operating system
other then Windows.
-
Changed get<Service> methods to test for null
services. If there is a failure during startup it is possible that the
services have not been set. If the services have not been set and the system
goes through a shutdown it was possible that an NPE was raised when trying
to obtain one of the services to shut them down. This NPE covered up the
actual exception with the reason for the startup failure.
- Fixed a NullPointerException for SSL/TCP (data) endpoints that could
be raised during the clearing of the handler active handlers.
Brahms Collaborative Infrastructure V1.4.98
V1.4.98 Changes
- Added a monitoring package to the CI Interface API with a
MonitoringEvent data type, a utility class to obtain system information, and
a FailureMonitor to monitor for failures reported via the Log4J logger.
- Moved the DeadlockMonitor from the util package to the monitoring
package.
- Fixed issue in the data distribution service (DDS) related to
communicating
with fixed remote DDS's. Was not properly testing for an empty fixed remote
DDS list.
- Fixed an issue where the translation service would not check whether the
language of a data object is a language supported by the receiving actor.
It would always attempt to translate. Now it just returns the object if the
object's content is in a desired/supported language.
Brahms Collaborative Infrastructure V1.4.61
V1.4.61 Changes
- Added the ability to set the network interface to use to join a
multicast group; property name: multicast.interface. This can be a useful
property on multihomed hosts with a firewall configured to permit
multicasting only on a single interface.
- Fixed the multicast tester to verify that the content of a received
packet is indeed a string before extracting the value.
Brahms Collaborative Infrastructure V1.4.56
V1.4.56 Changes
- Added a database package to the API (gov.nasa.ci.api.db) with an
implementation using Derby to allow an actor to easily create and store
state information/data in a database.
- Added a multicast tester tool to easily test whether a system or network
support IP multicasting.
- Added a CredentialsHelper class to allow for easy conversion of
credentials to a URI and back.
- Fixed a bug in the ping function where the ping function did not
properly account for when an actor being pinged while it is being
initialized. Now properly testing for a null management service.
- Modified the ActorServiceProvider to when a '.' is specified as its
configuration directory to use the directory in which the ASP's
configuration file is stored as the configuration directory.
- Modified the FileLocator utility class to before loading a resource
using the system class loader to first try to use the FileLocator's class'
class loader, then the FileLocator's class and last the system class loader.
This is necessary to allow resources to be found when the CI is deployed as
part of a web application or a server with custom class loaders.
- Added support for 'table-based' discovery of data distribution services
where the descriptor of a DDS specifies which other DDS' to notify of its
data registry. This allows for multiple DDS' to communicate with one another
without the use of multicasting. This should only be used if multicasting is
not an option since it is less efficient.
- Fixed issues in using secure endpoints with the transport and data
distribution services.
- Fixed a deadlock in the directory service with it subscribing with other
directory services.
- Now also destroying CORBA ORB on shutdown to properly release all
resources.
- Fixed a bug in the data distribution service where on disconnect of
endpoints the endpoint list was cleared preventing the endpoints from being
destroyed and therefore not releasing the server socket.
- Added support for connection pooling in reliable endpoints (TCP/SSL)
with the connection pool only being maintained on the client side.
Connections are now kept open so we no longer need to handshake every time a
message/ping/data is communicated improving performance, especially with SSL
endpoints. Default connection pool size is 1.
- Changed the response time-out property from tcp.timeout and ssl.timeout
to tcp.connection.client.response_timeout and
ssl.connection.client.response_timeout.
- Added configuration properties to the transport and DDS descriptors for
the connection pool size and connect time-out.
- Fixed an issue where it was possible for an actor to be shutdown more
than once during a shutdown cycle. Now ensuring that while a shutdown is in
progress any subsequent shutdown calls are no-ops.
- Fixed an issue in the reliable endpoints where stale endpoint
connections would not be refreshed when attempting to communicate to that
endpoint.
- Fixed a concurrent access issue in the transmission of a DataRegistry by
the DDS. We now clone the DataRegistry in a synchronized block prior to
transmission. This allows the DataRegistry to be updated while the
DataRegistry is being transmitted. Any concurrent update will be transmitted
on the next publication.
- Fixed an issue in Topic where when subscribing with a filter to only
receive data sent by a specific actor that filter was ignored. The
Credentials of the 'from' actor was not passed along to the Subscriber
record.
- Added a DeadlockMonitor utility class that can be used in a Java process
to monitor threads for deadlocks. When such a deadlock is detected details
about the deadlock and the deadlocked threads are logged.
- Fixed a deadlock issue with the interaction of subscribing for data and
publishing data to subscribers in the data distribution service. Deadlock
could occur if the subscriber had a synchronized block to process the
published data.
- Added explicit search for file resources in the class path in the
FileLocator utility class, before trying to use the resource loader provided
by Java. Java's resource loader attempts to find files in directories not in
the class path making it hard to impossible to control the loading of a file
with a filename that can be found in multiple places, but of which only one
can be found in the classpath.
Brahms Collaborative Infrastructure V1.3.72
V1.3.72 Changes
- Integrated an Actor Service Provider as a component responsible for
providing and managing all CI related services (transport, directory, data
distribution, management, logging, time, translation). It manages the
registration/deregistration of actors and the creation and management of
actor specific services.
- Changed the directory service to publish directory changes immediately
to discovered remote directory services instead of queuing the changes and
distributing them in a separate thread of execution to ensure that directory
changes are published and available remotely prior to communicating
information about those entries to remote actors so that lookups are more
likely to succeed locally.
- Added support for a secure transport layer using SSL and included
support for FIPS 140.2 certified secure transport using Mozilla's Network
Security Service on Windows.
- Now encrypting passwords stored in configuration files (currently
applies only to the configuration of a secure transport).
Brahms Process Manager V1.2.57
V1.2.57 Changes
- Added monitoring for deadlocks and fatal log messages and sending
monitoring events when such failures are detected.
- Now setting the system look and feel to make sure that the exit dialog
has the look and feel of the operating system the process manager runs on.
- Fixed a deadlock that could arise when during the shutdown of one
process another process was being started. Removed synchronization of the ID
retrieval of the Process. That ID never changes and therefor does not need
to be synchronized and was the cause for the deadlock.
- Fixed a NullPointerException raised when running the process manager
as a service and when the service was stopped.
- Added support for displaying and closing a splash screen while the
process manager is starting. Add: -splash:<image path> to the command line.
- Added support for creating and deleting a lock file that can be used to
indicate whether the process manager was started. The contents includes the
hostname, ip address, and start date/time. The file is generated when the
following system property is specified: -Dgov.nasa.ci.pm.lckfile=<path for
lckfile>. Example: -Dgov.nasa.ci.pm.lckfile=C:\pm.lck
- Fixed issues where it was possible for the process manager to start
processing ComActs even before the PM was fully started. The side effect was
that a process could be started by an external application while the process
manager was synchronizing with other DDSs (not yet fully started). After
synchronization recovery would take place causing the just started process
to be seen as an old process still running from a prior PM run and as a
result being shut down as part of the cleanup routine. Now we queue all
ComActs and process them in a separate thread (better anyway instead of
processing them on the transport service's thread). The ComAct processing
isn't started until the PM is fully started and resolves these issues.
- Changed the process manager to write the lock file after the PM is
initialized but before the PM is started. Now writing the hostname/IP
address to the lock file of the first of the PM's endpoints instead of using
an IP address other then localhost to ensure that the actual binding host/IP
address is written to the lock file. This approach also ensures that the
lock file does not get deleted if another instance is started and fails to
start due to the socket already having been bound.
- Changed first action on shutdown from shutdown hook to be the deletion
of the lock file.
Brahms Process Manager V1.2.35
V1.2.35 Changes
- Added a recovery manager and database to store information about running
processes. If the process manager shuts down abnormally on restart it will
as part of recovery shut down all processes it started prior to abnormal
shutdown. The processes are shut down because there is no way in Java to
re-establish a proper relation with those processes. Any
components/applications/monitors will be notified of the shut down of the
process. If Credentials are known for a process the PM will first request
the application to shut down, if that fails or no Credentials are known then
the PM will perform a hard kill using an OS specific command (killtask on
Windows XP Pro/Vista, kill -9 on *nix).
- Fixed issue to ensure that a request to start a process that is already
running with forceRestart=true to be properly shut down first, then
restarted.
- Fixed issue not to reload a process that is already loaded.
- Fixed deadlock issues with starting/stopping processes.
- Added a deadlock monitor to monitor all threads for any deadlocks.
Brahms Process Manager V1.2.9
V1.2.9 Changes
- Integrated the CI Actor Service Provider as the provider of the
transport and data distribution services instead of having the process
manager create and manage these services.