Changes

Ejenta Brahms Agent Environment 1.0

5/15/2015
Copyright (c) (1999 through 2015) National Aeronautics and Space Administration. All other rights reserved.

CHANGES summarizes the changes between Brahms software releases. CHANGES contains the following sections:

Brahms Composer

Brahms Agent Viewer

Brahms Compiler

Brahms Virtual Machine

Brahms Collaborative Infrastructure

Brahms Process Manager

 

Revision History Brahms Composer

Brahms Composer V1.8.3
V1.8.3 Changes

  1. 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

  1. 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

  1. 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.
  2. 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

  1. The Composer now first looks for the configuration files in the AgentEnvironment/config directory, then in the AgentEnvironment directory for backwards compatibility.
  2. 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.
  3. 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

  1. 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.
  2. 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

  1. 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.
  2. Fixed an issue with synchronizing edits to a source file causing 'duplicate concept name' errors being reported.
  3. 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

  1. Added support for the new delete operation as per language specification version 2.17.
  2. 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

  1. Updated the JIDESoft components to version 1.9.3.05.
  2. Added support for the long and map attribute types making the Composer compliant with version 2.13 of the language specification
  3. 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.
  4. 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.
  5. Now reporting an error when an invalid unicode or escape character is encountered in source code.
  6. Fixed a bug where the parser would not permit a detectable condition of the form '<Class> relation value'.
  7. Fixed a bug in the project explorer view when using a default (i.e. none) package for a model.
  8. Removed the automatic NASA confidential header generation for new model files.
  9. Added a work-around for very slow XML parsing using the xerces package on some mac configurations.
  10. 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.
  11. 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

  1. 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.
  2. Added the ability to clean the build directory to remove all compiled code before recompiling the source code.
  3. Added the option to change the font for the source code editor in the Windows menu.
  4. Updated the JIDESoft components to version 1.8.4_02
  5. Fixed an issue in the use of the new JavaCC parser.
  6. Fixed an issue with not saving the source files when modifications were made using the design view.
  7. Fixed an issue with passing the proper library path to the virtual machine when running a model using a default configuration.
  8. Fixed an issue with creating paths in the geography design view.

Brahms Composer V1.5.107
V1.5.107 Changes

  1. Enhanced the performance when manipulating the trees. You can now switch between flat and hierarchical views much faster.
  2. 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.
  3. 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.
  4. 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:
  5. Added the Inherited Activity, Workframe and Thoughtframe views - the model trees how include nodes for all inherited activities, workframes and thoughtframes for active concepts.
  6. 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.
  7. 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.
  8. Fixed a bug where several items in the 'File' menu had the same mnemonic keyboard shortcut.
  9. 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.
  10. Fixed a bug for color coding in source file comments.
  11. Fixed a bug where the 'Find Concept in Tree' action was not selecting the dockable pane containing the tree node.
  12. Added a menu item and toolbar button for building the model with .xmi file output for UML generation.
  13. Changed document management from a multiple document interface to a tabbed document interface.
  14. Updated the dockable windows framework to a new dockable windows framework with enhanced features such as autohide, undocking to floating windows, etc.
  15. Added ability to specify a source directory when creating a new model.
  16. Now filtering hidden directories in the project explorer.
  17. Added the ability to indent and un-indent blocks of selected code in a source code editor using TAB and SHIFT+TAB.
  18. Added the ability to the source code editor to toggle line comments using CTRL+'/'.
  19. 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.
  20. 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.
  21. 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.
  22. Added a build menu item to allow the user to build a model and to generate UML output for the model.
  23. Fixed a bug where when pressing the Run button the focus would switch to the drop down list next to it.
  24. 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.
  25. Integrated new release of JIDESoft's components version 1.7.1
  26. 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

  1. Fixed a bug where duplicate copies of a node could appear in the project explorer tree when changing the names of package nodes.
  2. 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.
  3. Fixed a bug where files were not saved properly when closing an editor window for an edited file.
  4. 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.
  5. 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

  1. 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).
  2. 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.
  3. 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.
  4. Fixed a bug where maximized windows would not close properly and leave the Composer in an invalid window state.
  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. 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

  1. Added a Project Explorer for managing Brahms packages and files.
  2. Integrated the Brahms Agent Viewer as a plug-in to the Composer, it is no longer a separate application.
  3. Added support for creating, saving and switching Composer window layout configurations.
  4. Added support for Cut, Copy and Paste in the Edit menu and in the toolbar.
  5. 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.
  6. Added support for creating initial facts in the Geography Model.
  7. The activity nodes in the design views now display all parameters as part of there name.
  8. 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.
  9. 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.
  10. 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.
  11. Fixed a bug where activity references passing as a parameter value 'current' were not displaying properly in the design view.
  12. Fixed a bug where compiler errors were remaining in the task list after a successful build.
  13. 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

  1. Fixed bug that allowed activities to be added to base library concepts in design view.
  2. Added 'Find and Replace' functionality to the source code editor. 
  3. Fixed bug that caused facts to be created instead of beliefs when using the "Create Initial Fact" toolbar button.
  4. Added feature allowing right mouse click popup menu with choices for sorting design view tree nodes alphabetically or by source code line number.
  5. 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.
  6. Added tree node sorting feature to Activity Model tree.
  7. Fixed bug where case was not being ignored in alphabetical sorting.
  8. Fixed bug that prevented right mouse click popups from working on the Macintosh.
  9. Fixed bug in New Model Dialog where specifying a package name for a new model caused the new model action to fail.
  10. Added feature where Import Model Dialog remembers the model directory for the last imported model.
  11. External agents are now also properly being displayed in the agent view.
  12. Initial statements were sometimes displayed twice in the design view, this has been fixed.
  13. Added File menu item "Open Model File" that allows opening the model .b file.
  14. 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.
  15. Added support for creating and editing packages.
  16. Bug fix with use of meta typed variables on the left hand side of a precondition.
  17. Added integration with the virtual machine to allow a modeler to run a model from within the Composer.
  18. Added a Find Concept function to allow a modeler to search for a concept in the designers.
  19. Added a Quick Search function in the toolbar to search for text in the current document without having to open the Find dialog.
  20. 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.
  21. Fixes a bug where the initial fact/belief editors would not let you specify the value 'unknown' for boolean attributes.
  22. 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

  1. Integrated parser allows models with syntax or compiler errors to be imported or opened, edited and saved in the IDE.
  2. Integrated task-list displays all syntax errors in a model when it is first opened or imported.
  3. Integrated task-list displays all syntax errors for a source code file when the file is saved.
  4. Integrated task-list displays all compiler errors for a model when the model is compiled from within the IDE.
  5. Task-list allows double-click navigation between errors displayed in the table and the source code location where the error occurs.
  6. Multiple document desktop allows for display and management of multiple source code editor windows.
  7. Integrated source code editor with keyword coloring and multiple levels of undo.
  8. Drag-and-drop dockable windows for display of design view model trees and task-list.
  9. Support for creating, editing and displaying all model elements in the design view model trees.
  10. Real-time incremental source code generation for every edit made in the design view model trees.
  11. Automatic update of the design view model trees whenever a source code file is edited and saved.
  12. Double-click navigation between any element in the design view model trees and the source code location where the element is defined.
  13. Drag-and-drop creation of Activity References in design view by dropping an activity node onto a workframe node or workframe body node
  14. Initial facts and beliefs can now be created, displayed, edited and deleted in the IDE model trees.
  15. 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.
  16. 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.
  17. Workframe names are now displayed for all active concepts and composite activities. Tree nodes for these elements are not yet editable.
  18. Thoughtframe names are now displayed for all active concepts and composite
    activities. Tree nodes for these elements are not yet editable.
  19. Model file package statements are now parsed when importing a model and used as the default package for all concepts created in the ide.
  20. Adding a library path for the model directory in the 'Import Model' dialog window is no longer necessary when importing a model.
  21. The 'Import Model' dialog window now contains a field for specifying the directory where the imported model should be saved.
  22. The IDE now has a 'Save As..." menu choice allowing the model to be saved to a new directory.
  23. Complete inheritance hierarchies are displayed for concepts in the 'Flat View Mode' in the IDE model trees.
  24. A 'parents' node has been added for all concepts when displayed in the 'Hierarchical View Mode' in the IDE model trees.
  25. The display of children for all class-type concepts is divided into groupings of subclass-type children and instance-type children.
  26. 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.
  27. There is a 'Scratch Pad' node in the activity model. Unassigned activities appear as children of this node.
  28. 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.
  29. A 'collapse-tree' button has been added to the toolbars in the model tree panels that collapses the tree to a default closedview.
  30. 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.
  31. The tool-tip text for create activity buttons now displays the proper activity names.
  32. Added support for the new gesture activity.

Brahms Composer V1.00.005
V1.00.005 Changes

  1. Imported create object activities now have their action property set properly.
  2. Bug preventing models containing unassigned activities with concept type parameters from being reopened has been fixed.
  3. The IDE will now preserve the order of model elements as they appear in source code.
  4. 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.
  5. Toolbars in concept model tree views now contain a button for collapsing all nodes in the tree.
  6. The about dialog now shows the build date of the release.

Brahms Composer V1.00.004
V1.00.004 Changes

  1. Workframe type property is being written to source code properly now.
  2. Detectable action is being written to source code properly now.
  3. fc and bc for a consequence will be written out no matter what their value.
  4. Child concepts added while in flat view mode will show up as a node under their parent concept's node.
  5. 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).
  6. 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.
  7. Fixed problem with concept and activity editor being partly visible when near the bottom of the application window.
  8. Fixed bug preventing the deletion of conceptual objects and classes
  9. 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.
  10. Added an about dialog displaying the version number of the application
  11. 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;
  12. 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

  1. Added support for activities.
  2. Allows for the import of an existing model.
  3. Added support for compiling models.
  4. 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

  1. 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.

Revision History Brahms Agent Viewer

Brahms Agent Viewer V1.12.3
V1.12.2 Changes

  1. 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

  1. 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

  1. 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

  1. 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

  1. 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).
  2. 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.
  3. 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).
  4. 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.
  5. Fixed issue with fact or belief filter where the list with LHS concepts was populated with RHS concepts, not LHS concepts.
  6. 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

  1. 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.
  2. 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.
  3. 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.
  4. 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

  1. 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

  1. 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

  1. 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

  1. 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.
  2. 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

  1. 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.
  2. 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.
  3. Fixed a bug in the display of agent locations in the time line view.
  4. 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. 
  5. Fixed a bug in the display of receive communications in the time line view. The arrow wasn't positioned correctly.
  6. 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.
  7. The file chooser when you want to create a new database now opens up in the Databases directory where history files are normally stored.
  8. 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.
  9. 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.
  10. 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

  1. Reorganized the menu structure, locating the zoom functions under the View menu.
  2. New more appropriate button icons more clearly representing their functions.
  3. Icons in the runtime view for agents, objects, conceptual objects and agents are now identical to those used in the Brahms IDE.
  4. Time line view and runtime view can be closed and re-opened without causing the application to shut down because of an error.
  5. Creating a new database (parsing a history file) has improved in performance and after parsing is completed the database is immediately opened.
  6. 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.
  7. The runtime view now correctly displays conceptual objects.
  8. 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.
  9. 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.
  10. Explanation facility views for facts, beliefs, workframes, thoughtframes and communications have been redesigned.
  11. The columns in the facts/beliefs views can be resorted by clicking on their headers.
  12. The filter/query panel is by default hidden but a click on the button with the small arrow makes it re-appear.
  13. The drop down lists in the filter now contain a correct and sorted list of all the possible values for the filter.
  14. The frame view displays all time related information in one view.
  15. 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.
  16. The explanation facility windows and time line view can be organized in cascading, horizontal, or vertical layouts.
  17. The runtime view is a dockable window that can be docked North, East, South and West in the application frame.

Revision History Brahms Compiler

Brahms Compiler V3.0.6
V3.0.6 Changes

  1. 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

  1. Added support for language specification version 3.0 to include support for Java object integration.
  2. The compiler now allows one or more compilation units to be compiled without requiring compilation of the entire model.
  3. 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
  4. 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.
  5. 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

  1. 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

  1. 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.
  2. 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

  1. 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.
  2. 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

  1. Updated the compiler to be compliant with language specification version 2.17.
  2. Added support for a delete operation in the body of a workframe allowing a modeler to delete dynamically created concepts (agents, objects, conceptual objects).
  3. 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.
  4. Fixed a bug where the compiler did not permit values of type long to be compared when the relational operator was one of >, >=, <, or <=.
  5. 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

  1. Updated the compiler to be compliant with language specification version 2.16.
  2. 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

  1. Updated the compiler to be compliant with language specification version 2.15.
  2. 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.
  3. Added support for activity overloading.
  4. 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.
  5. Added support for declaring relations in the attributes section as: public relation(type) name;
  6. 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.
  7. Properly checking package statements against directory structure to make sure that the case is identical, previously case was ignored.
  8. 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.
  9. Fixed a bug in parsing paths, compiler was incorrectly setting both area1 and area2 to area1.
  10. 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.
  11. Now reporting an error when an invalid unicode or escape character is encountered.
  12. Fixed a bug where the compiler would not permit a detectable condition of the form '<Class> relation value'.
  13. 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.
  14. Added an Ant Task for the Brahms Compiler (gov.nasa.arc.brahms.bc.ant.BC) allowing developers to call the Brahms compiler using Ant
  15. Fixed a bug where the compiler would not correct the DTD path in bcc files loaded from libraries.
  16. 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.
  17. 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

  1. Now writing out files with compiled code with the bcc extension (Brahms Compiled Code).
  2. Added support for a -d flag to specify a destination path to write the compiled code to.
  3. Added support for maintaining a model's package in the compiled model file.
  4. Added support for a -source flag to specify one or more source paths where the compiler can find the source code for referenced concepts.
  5. Added support for reading compiled code into the compiler when source code for a references concept cannot be found.
  6. 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.
  7. Added support for the -base flag used to compile the Brahms base library.
  8. Added support for the Composer to be notified of low-level exceptions and to report them to the user.
  9. Fixed a bug in ConceptLoader::loadConceptData to break out of the for loop when an archive was found containing the requested concept.
  10. 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

  1. 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.
  2. 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

  1. 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.
  2. Fixed a bug where the compiler would not properly verify type compatibility of any type against primitive types.
  3. 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.
  4. 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.
  5. 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.
  6. 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

  1. 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.
  2. 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.
  3. 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

  1. 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.
  2. 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.
  3. Removed support for the (un)assigned keyword with variables. These keywords were only relevant for the old G2 based simulation environment.
  4. Removed support for JDK 1.0 and JDK 1.1. The compiler now only supports JDK 1.2 or higher.
  5. 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.
  6. 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

  1. Fixed a problem in the compiler not allowing the value 'unknown' to be assigned to attributes/relations with a meta type as their type.
  2. 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.
  3. 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.
  4. 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

  1. Added support for language specification V2.11 adding support for create area activities.

Brahms Compiler V2.10.001
V2.10.001 Changes

  1. Added support for language specification V2.10 adding support for gesture activities.
  2. 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.
  3. 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

  1. 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

  1. 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).
  2. 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

  1. 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

  1. 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

  1. Added support for priorities in thoughtframes.

Brahms Compiler V2.07.000
V2.07.000 Changes

  1. 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

  1. Added support for the create_agent activity.

Brahms Compiler V2.05.001
V2.05.001 Changes

  1. Added support for the put and get activities.
  2. Added support for 'import *;'.

Brahms Compiler V2.04.004
V2.04.004 Changes

  1. Bug fixes to make compiler work in Unix environments.

Brahms Compiler V2.04.003
V2.04.003 Changes

  1. 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

  1. 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

  1. Added support for external agents.
  2. 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

  1. Now allowing for numeric values on the left hand side in expressions.

Brahms Compiler V2.03.003
V2.03.003 Changes

  1. 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

  1. Bug fix in processing import statements.

Brahms Compiler V2.03.000
V2.03.000 Changes

  1. Added support for multiple dirtories on the library path. The directories are separated by semicolons (;).

Brahms Compiler V2.02.000
V2.02.000 Changes

  1. 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
  2. Added Java activity

Revision History Brahms Virtual Machine

Brahms Virtual Machine V5.3.0
V5.3.0 Changes

  1. Manual garbage collection is no longer triggered by the GarbageCollector class.

Brahms Virtual Machine V5.2.16
V5.2.16 Changes

  1. 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.
  2. Added isInstanceOf relation BaseAreaDef. The virtual machine now also auto-generated initial facts about the relation between areas and their parent base area definitions.
  3. 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.
  4. Fixed issue with populating IContext information from an activity when using Java-based activities.
  5. Fixed issue with broadcast activities not properly broadcasting to sub areas of a given or the current location.
  6. 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

  1. 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.
  2. 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.
  3. 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

  1. Added retractAllBeliefs activity to BaseGroup and BaseClass.
  2. Added the CommunicatorClass to the brahms.communication package in the base library.

Brahms Virtual Machine V5.0.6
V5.0.6 Changes

  1. Added support for new language features described in language specification version 3.0.
  2. 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.
  3. Made some performance enhancements including more selective backtracking when evaluating the preconditions of a frame.
  4. 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.
  5. 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.
  6. 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.
  7. Now validating the value for the appdir property in vm.cfg to ensure it is for a directory.
  8. 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

  1. 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

  1. 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.
  2. Removed maintaining token trace lists in the reasoning state network to preserve memory. The lists are currently not used.
  3. Fixed a resource leak in the CreateChecksumActivity where an input stream would not be properly closed when a read error is encountered.
  4. 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.
  5. 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.
  6. 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

  1. Added enhancements to the JAPI to simplify accessing and setting belief, fact, parameter, and variable values. Enhancements were added to IActiveInstance, IWorldState, and AbstractExternalActivity.
  2. Added CreateChecksumActivity to brahms.io package.
  3. 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.
  4. Fix for Trac 41 resolving a dead lock issue when two agents concurrently move from the same location.
  5. 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.
  6. Fixed an issue with validating the type of the collection index when creating new statements using the JAPI.
  7. Fixed an issue in creating new statements using relations when passing 'unknown' as the right hand side value, was always throwing a ClassCastException.
  8. 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).
  9. Changed GetJavaAttributeValue Java activity to now return a returnValue of unknown and result of true when the value of a Java attribute is null.
  10. 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.
  11. 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.
  12. Optimized the virtual machine by removing any initial beliefs and facts from the initial belief/fact list that are overridden by more specific concepts.
  13. 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.
  14. 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.
  15. Fixed an issue in the external agent in processing engine INFORM ComAct content causing not-understood messages to be returned to sending agents.
  16. 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.
  17. Fixed an issue in getParameterValues for AbstractExternalActivity in the JAPI.
  18. Fixed an issue in getValues for variables in the JAPI when the variable contained non-concept values.
  19. Fixed JAPI documentation.
  20. 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

  1. 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.
  2. Added the ability to retrieve BrahmsClassDescriptors and BrahmsGroupDescriptors directly from the JAPI class.
  3. 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.
  4. Fixed an issue in the converters to prevent a circular loop when objects refer to one another.
  5. 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

  1. Fixed a possible NullPointerException in resetting an external agent when shutting down the virtual machine.
  2. 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
  3. 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.
  4. Fixed the copy file activity to supporting copying of large files > 64MB.
  5. Changed the virtual machine to no longer invoke the start/stop methods on an external agent if the external agent failed to initialize.
  6. 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.
  7. Added addProcessListener and removeProcessListener methods to the IVMController interface in the JAPI.
  8. 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.
  9. Fixed Get/SetCommunicativeActProperty Java activities to support the value unknown.
  10. Added a BrahmsGroupDescriptor similar to BrahmsClassDescriptor to easily obtain belief values for attributes/relations declared for an agent of that group.
  11. 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.
  12. Fixed a NullPointerException in the Brahms/Java conversion API where the converters did not check for a null Brahms/Java instance mapping.
  13. 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.
  14. 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.
  15. 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

  1. Fixed an issue in the BrahmsCalendar utility class where the attribute count was not set correctly causing an ArrayIndexOutOfBoundsException.
  2. Added a getASP() method to the IVMController interface to allow components to access the CI Actor Service Provider to register their own CI actors.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. 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.
  10. 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.
  11. 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

  1. 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.
  2. 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).
  3. 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.
  4. 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

  1. Added brahms.base.util.ParsePrimitiveValueActivity with the parseInt, parseLong, parseDouble, and parseBoolean activity declarations in SystemGroup and SystemClass.
  2. 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.
  3. 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.
  4. Removed the ExternalException as being raised when getName is called on an IConcept using the JAPI.
  5. Added 'IClass getParent()' to IObject in the JAPI.
  6. Added 'List<IAttribute> getAttributes()' and 'List<IRelation> getRelations()' to IConcept in the JAPI.
  7. 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

  1. 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.
  2. 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.
  3. 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.
  4. 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

  1. 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.
  2. 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

  1. Removed the Agent Environment Monitoring support. Will be replaced with new remote monitoring support.
  2. 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.
  3. Fixed deadlock issues that were detected when running on multi-core CPU's.
  4. Fixed deadlock related to internal memory management.
  5. Fixed an issue in distributed local communication of a ComAct causing a ClassCastException to be thrown.
  6. 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.
  7. 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

  1. 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.
  2. 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.
  3. 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).
  4. 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.
  5. 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.
  6. Fixed an issue in resolving parameters of type long, added support for the long type, it was missing.
  7. 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.
  8. Fixed an issue in FileLocator where locating a file using the classpath in directories with spaces caused a problem.
  9. 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

  1. Added the class brahms.communication.AbstractCommunicationAgent as an abstract base class for external agents that interact with agents using CommunicativeActs.
  2. Added the utility class brahms.util.FileLocator that locates files using the filename, current directory, home directory, java directory, or classpath.
  3. 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.
  4. 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.
  5. Fixed a concurrent access exception where two threads were iterating over the same precondition and precondition variable lists.
  6. Added some profiling debug statements to log the time taken for asserting beliefs, evaluating preconditions and executing frames.
  7. Resolved the issue where occasionally the Brahms virtual machine would deadlock when it was being shut down.
  8. In real-time mode now setting the proper real-time end-time for retracted beliefs.
  9. Added IExternalAgent::notifyNewEvents to the JAPI used to wake up the scheduler in simulation mode. A no-op in real-time mode.
  10. Added AbstractExternalAgent::getModeOfOperation as a convenience method to obtain the virtual machine's current mode of operation (sim, rt, drt).
  11. 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.
  12. 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.
  13. 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.
  14. 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

  1. Updated the virtual machine to be compliant with language specification version 2.17.
  2. Added support for deleting dynamically created concepts (agents, objects, conceptual objects).
  3. 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.
  4. 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

  1. Updated the virtual machine to be compliant with language specification version 2.16.
  2. Added support for communicating CommunicativeActs as part of a communicate activity.
  3. 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.
  4. 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.
  5. 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

  1. Updated the virtual machine to be compliant with language specification version 2.15.
  2. 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.
  3. Added support for pausing and resuming a simulation.
  4. 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.
  5. Modified consequences in the data frames for objects to match right hand side OA's to match with beliefs instead of facts.
  6. 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.
  7. Added support for activity overloading.
  8. 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.
  9. Added support for Java types as the type for an attribute, variable or parameter, with full support for Java generics.
  10. 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.
  11. Updated the JAPI to include support for all the new language enhancements (long, map, Java types).
  12. 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.
  13. Changed SendBeliefsActivity to now require as parameter name 'relationName' instead of 'relation' since relation is now a keyword.
  14. Fixed bug where newly created objects would not be notified of the current facts in the world.
  15. Now having all belief assertions initiated through the JAPI go through the scheduler in simulation mode.
  16. Fixed a bug where the compiler would not properly detect detectables with a detectable condition of the form '<Class> relation value'.
  17. 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.
  18. Fixed a bug where a problem would arise if multiple threads would access the fact list returned using IWorldState.getFacts().
  19. Fixed a bug, now allowing an emptry string ("") as a valid value.
  20. Added java activities for retracting beliefs/facts to BaseGroup and BaseClass
  21. Added support in the JAPI to dynamically create external agents. (gov.nasa.arc.vm.api.jagt.ExternalAgentFactory)
  22. Added a java activity for dynamically creating external agents to BaseGroup and BaseClass
  23. 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.
  24. 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

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. Fixed an issue in reporting an error about containment in put and get activities. Now properly specifying the name of the activity.
  6. 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.
  7. 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.
  8. Fixed a bug where we didn't check for null on the current activity when resolving a parameter.
  9. Increased the number of digits for the clock-tick display.
  10. Now only reading in Brahms byte code from files with the Brahms byte code extension (bcc).
  11. Added support for reading Brahms byte code from Brahms Archive files with the 'bar' extension.
  12. Fixed a bug in loading concepts from byte code.
  13. 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.
  14. 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.
  15. Added support for the creation of agents from the JAPI.
  16. Added a new Java activity ToIntActivity in the brahms.base.system package
  17. 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.
  18. 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.
  19. 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.
  20. Fixed an issue where external agents running in different virtual machines weren't able to communicate objects by value with one another.
  21. Fixed an issue where preconditions of the form (OA relation O) would cause a ClassCastException.
  22. 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.
  23. 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

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. Modified the Corba Log Writer to send the full exception trace to a remote Agent Monitor in case an Exception was being logged.
  10. 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

  1. 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.
  2. 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.
  3. 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.
  4. Fixed a bug where the VM would cause the Composer to exit if a problem occurred while loading a model.
  5. Modified the CorbaLogWriter to allow for log messages to be send to a remote agent monitor when messages are logged using Log4J.
  6. 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

  1. 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.
  2. Fixed a bug where workframes with only collect-all variables would result in ArrayIndexOutOfBoundsExceptions due to an indexing error in RSNFrameNode.
  3. Added API method to allow access to the Corba ORB used by the VM.
  4. 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.
  5. Upgraded ProfessionalAgent to now use JacORB 2.0 replacing JacORB 1.4.1
  6. Upgraded ProfessionalAgent to use the latest available release of KAoS.

Brahms Virtual Machine V3.07.0040 alpha
V3.07.0040 alpha Changes

  1. 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.
  2. 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.
  3. Fixed bug where remote agents were unable to send beliefs to an external agent.
  4. 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.
  5. Fixed a bug where when during a concept lookup a remote concept was found we would still do a local concept load.
  6. Fixed a bug in distributed receive communications where received beliefs were not put at the beginning of the event queue.
  7. Fixed a bug in the JAPI where initial facts for dynamically created objects were not processed.
  8. Added capability to create new areas using the JAPI.
  9. Added support for language specification version 2.12 in which support was added for the relational operators >, >=, < and <= in detectables.
  10. 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

  1. 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.
  2. Added support for setting the time zone with the -date flag to initialize the simulation date/time.
  3. 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.
  4. 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

  1. Removed dependency on the collections.jar library now solely using the JDK 1.2 or higher collections library.
  2. Transport used for agent registration and communication is now CORBA instead of Jini/Rmi/Grid.
  3. Fixed a problem in the virtual machine where a get activity did not properly remove an item from its current location.
  4. Fixed a problem where in distributed mode the virtual machine would initiate the loading of a remote concept before all local concepts were registered.
  5. 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.
  6. Added the getName method in the AbstractExternalActivity class as part of the Brahms JAPI.
  7. 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.
  8. Includes a new File Agent Viewer Service to create history files that are parsable and displayable even after a virtual machine is terminated abruptly.
  9. Updated XML parser to Sun's JAXP version 1.2
  10. 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.
  11. Fixed a bug in the dynamic creation of objects by external (java) activities.
  12. Fixed a bug in the file agent viewer service to handle dynamically created objects created by external activities.
  13. 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.
  14. Added support for the IWorkStateQuery interface allowing an agent monitor to request the work state of an agent or object.
  15. Added support for the virtual machine to be started and managed by the Composer.
  16. Bug fix for use of two foreach variables in one precondition.
  17. 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.
  18. 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.
  19. The ':' in the timestamps messed up the parsing of the beliefs in remote communications.
  20. 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

  1. 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.
  2. Added support for assigning a parameter to the display property of activities in addition to being able to assign it a string value.
  3. 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.
  4. Fixed a problem with the use of known and unknown in preconditions in combination with the use of relations. A NullPointerException was thrown.
  5. Allowed for the retrieval of beliefs from remote agents and objects by external agents and activities.
  6. Modified the OWorld Service to comply with the new OWorld Event Specification.
  7. 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.
  8. Fixed problem with copying remote Brahms objects. An exception was thrown when the VM tried to copy the beliefs.
  9. Fixed problem with belief ownership settings causing errors to be generated by the file agent viewer service.
  10. 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.
  11. 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.
  12. Fixed problem with copying remote Brahms objects. An exception was thrown when the VM tried to copy the beliefs.
  13. Fixed problem with belief ownership settings causing errors to be generated by the file agent viewer service.
  14. Fixed a bug in the virtual machine where a ClassCastException was thrown.

Brahms Virtual Machine V3.03.0010 alpha
V3.03.0010 alpha Changes

  1. 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.
  2. Fixed a problem with using thoughtframes in composite activities. An exception was generated when more than one thoughtframe was available in a composite activity.
  3. 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.
  4. Fixed a type compatibility check problem with the use of the meta type ActiveConcept for attributes in the Brahms JAPI.
  5. 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.
  6. Fixed a problem with the transfer of beliefs in a distributed environment where the type of an attribute is of a meta type.
  7. 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.
  8. Added support for 'current' reference in JAPI.
  9. Fixed a bug in binding a value to a variable of a meta type.
  10. Fixed a bug in the JAPI. The JAPI didn't allow '_' characters in symbolic values.
  11. Fixed a problem with the receive communication. A ClassCastException was thrown.

Brahms Virtual Machine V3.03.0000 alpha
V3.03.0000 alpha Changes

  1. Fixed a problem with passing parameters of primitive type to a composite activity and using them in a precondition.
  2. Fixed a problem with initialization of facts in real-time mode. It now goes directly through the world state instead of through the scheduler.
  3. 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.
  4. Added shutdown hook to allow the virtual machine to gracefully stop all services even if the virtual machine is stopped ungracefully using Ctrl-C.
  5. Added support for the create area activity.

Brahms Virtual Machine V3.02.0036 alpha 5
V3.02.0036 alpha 5 Changes

  1. Fixed a problem with passing parameters of primitive type to a composite activity and using them in a precondition.
  2. Fixed a problem with initialization of facts in real-time mode. It now goes directly through the world state instead of through the scheduler.
  3. 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

  1. Modified OWorld service to include the export of the associated resources in the gesture activity.
  2. Bug fix in the virtual machine, now properly reading in get, put and gesture activities that are declared inside of a composite activity.
  3. Bug fix in the virtual machine not properly parsing variables, attributes and relations from XML when their type was of meta type Area.
  4. 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

  1. Updated to work with latest version of KAoS.

Brahms Virtual Machine V3.02.0029 alpha 2
V3.02.0029 alpha 2 Changes

  1. 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.
  2. 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.
  3. Added support for having external agents communicate with distributed agents.
  4. 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.
  5. Bug fixes in the virtual machine where real-time event times weren't reported correctly to the event services. 
  6. 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.
  7. Bug fixes in the real-time portion of the virtual machine causing occasional deadlock to occur in the threading on fact assertion.
  8. Bug fixes in the virtual machine related to composite activity activation.
  9. Bug fixes in the test event service for concepts created by external agents.
  10. 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

  1. 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

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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

  1. 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

  1. Bug fix in the Brahms Java API when trying to use parameters passed to external activities.
  2. 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.
  3. 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.
  4. Modified the base library to include two new relations for BaseAreaDef 'hasSubArea' and 'isSubAreaOf'.
  5. 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

  1. Added support for the type attribute for workframes.
  2. Fixed a bug related to detectables.
  3. Bug fix in OWorld service to correctly export start and end locations.
  4. 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.
  5. 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

  1. Added support for the source and destination attributes in the get and put activities.
  2. 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

  1. Bug fix in use of integer assignment in preconditions.

Brahms Virtual Machine V2.04.008 rc1
V2.04.008 rc1 Changes

  1. Added support for priorities in thoughtframes.
  2. Bug fixes in the use of the 'unknown' value.
  3. Bug fix for collect-all variables.

Brahms Virtual Machine V2.04.004 rc1
V2.04.004 rc1 Changes

  1. 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

  1. 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

  1. Added support for the create_agent activity.

Brahms Virtual Machine V2.01.002 beta
V2.01.002 beta Changes

  1. Added support for the put and get activities.

Brahms Virtual Machine V2.00.069 alpha
V2.00.069 alpha Changes

  1. 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.
  2. 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

  1. 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

  1. 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

  1. 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.
  2. 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

  1. 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

  1. Added a stop command-line parameter allowing for the simulation's stop time to be set from the command line.
  2. 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

  1. 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.
  2. 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

  1. 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.
  2. 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

  1. 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

  1. New release of the Brahms Virtual Machine compliant with Language Specification V2.2

Revision History Brahms Collaborative Infrastructure

Brahms Collaborative Infrastructure V1.12.8
V1.12.8 Changes

  1. Modified the Directory Service API's find method to now also raise a DirectoryQueryException if there is a problem with the directory query.
  2. Implemented the find method in the directory service to now support looking up actors by their published capabilities.
  3. Added a findActorsByCapability to the ICIActor interface to which a capabilities pattern needs to be passed.
  4. Fixed IllegalMonitorException for holding/releasing messages for an actor.

Brahms Collaborative Infrastructure V1.11.10
V1.11.10 Changes

  1. Added support for transferring files using the CI via the CI's transport service.
  2. 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
  3. 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.
  4. 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).
  5. 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

  1. 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.
  2. 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.
  3. 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.
  4. 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

  1. 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.
  2. 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.
  3. 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.

  4. 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

  1. 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.
  2. Moved the DeadlockMonitor from the util package to the monitoring package.
  3. 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.
  4. 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

  1. 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.
  2. 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

  1. 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.
  2. Added a multicast tester tool to easily test whether a system or network support IP multicasting.
  3. Added a CredentialsHelper class to allow for easy conversion of credentials to a URI and back.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. Fixed issues in using secure endpoints with the transport and data distribution services.
  9. Fixed a deadlock in the directory service with it subscribing with other directory services.
  10. Now also destroying CORBA ORB on shutdown to properly release all resources.
  11. 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.
  12. 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.
  13. Changed the response time-out property from tcp.timeout and ssl.timeout to tcp.connection.client.response_timeout and ssl.connection.client.response_timeout.
  14. Added configuration properties to the transport and DDS descriptors for the connection pool size and connect time-out.
  15. 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.
  16. Fixed an issue in the reliable endpoints where stale endpoint connections would not be refreshed when attempting to communicate to that endpoint.
  17. 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.
  18. 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.
  19. 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.
  20. 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.
  21. 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

  1. 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.
  2. 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.
  3. 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.
  4. Now encrypting passwords stored in configuration files (currently applies only to the configuration of a secure transport).

Revision History Brahms Process Manager

Brahms Process Manager V1.2.57
V1.2.57 Changes

  1. Added monitoring for deadlocks and fatal log messages and sending monitoring events when such failures are detected.
  2. 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.
  3. 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.
  4. Fixed a NullPointerException raised when running the process manager as a service and when the service was stopped.
  5. Added support for displaying and closing a splash screen while the process manager is starting. Add: -splash:<image path> to the command line.
  6. 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
  7. 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.
  8. 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.
  9. 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

  1. 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).
  2. 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.
  3. Fixed issue not to reload a process that is already loaded.
  4. Fixed deadlock issues with starting/stopping processes.
  5. Added a deadlock monitor to monitor all threads for any deadlocks.

Brahms Process Manager V1.2.9
V1.2.9 Changes

  1. 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.