The following information is provided only for users who are familiar with the UML.
The modeling features used in MiceOnABeam are based on a subset of the UML 2.0 State Machine specification developed by members of the Object Management Group, (www.uml.org). However certain concepts have been constrained and/or slightly modified in order to target the code for the Second Life LSL run-time environment.
This section lists which features are supported, indicating semantic differences where applicable. As well it lists UML State Machine features which are currently not supported.
- Supported Features
- Unsupported Features
Simple States, Composite States, Entry and Exit Pseudostates, Entry and Exit Behavior, are all supported. While Submachine States are not supported, Connection Point References are used to make Entry and Exit Pseudostates accessible from the outside of a Composite State.
Triggers (limited to pre-defined LSL events), Guard Conditions, Transition Effect (i.e., action behavior), Group Transitions are all supported. However only a single trigger per transition is supported.
Transitions to and from contained states and pseudostates within a Composite State MUST be done via Entry and Exit Pseudostates and their corresponding Connection Point References; cross-boundary transitions are not permitted. However transitions to just the state border that are not continued do not require Connection Point References.
Only Originating Transitions may have a trigger associated with them. Guard Conditions are only permitted on Originating Transitions, and on outgoing transitions from Choice, Shallow History, and Deep History Pseudostates. For all other transitions the Guard Condition is set implicitly TRUE.
Compound Transitions are supported through the pseudostate types that are supported, and any related branches are executed as dynamic conditional branches. In any conditional branch, the first Guard Condition that dynamically evaluates TRUE, will cause that transition to be taken, regardless of any Guard Condition failures in downstream Choice Pseudostates.
Explicitly marked internal or local transitions are not supported. Transitions drawn within the context of a Composite State and which terminate at a vertex contained within the Composite State are implicitly local to that Composite State.
A transition to an Initial Pseudostate without an outgoing transition is considered ill defined, and the state machine will be terminated.
If no Guard Condition evaluates true, and an ELSE transition has not been defined, the model is considered ill defined, and the state machine will be terminated.
For merging purposes only, a restricted form of the Junction Vertice is supported whereby only a single outgoing transition is supported. This transition's Guard Condition is automatically set to TRUE and cannot be customized. As such, a split operation is not supported here; a transition can only be split at a Choice Pseudostate via a dynamic conditional branch.
If an outgoing transition from the Junction Vertice has not been defined, the model is considered ill defined, and the state machine will be terminated.
A transition to Deep History within a Composite State will result in a transition to the last active direct substate, and recursively so within each such Composite Substate until a Simple State (i.e., leaf state) is reached.
If no transition exists on the enclosing Composite State that has the Completion Event, then the script remains in the Final State, it's status remains running, but it will no longer respond to any events, including Group Transitions. A transition to the Final State within the top-most state of the script will not terminate the script.
A Completion Event must be specified explicitly and is not implied by an unspecified trigger. It can only be triggered on a Composite State via a transition to a Final State contained within the Composite State. A Simple State cannot trigger a Completion Event, except by transitioning to a Final State.
All events are processed in the run-to-completion manner, and further adhere to UML semantics for conflicting transitions and firing priorities for nested states.
A textual annotation can be attached to any modeling component.
Only a single region is supported for a Composite State.
Although "Do Activity" is not explicitly supported, a similar construct can be obtained by connecting the Initial Pseudostate directly to a Final State within the decomposition of what would be otherwise a Simple State. If the activity code is placed within the State Entry behavior, then when it completes, a completion event will be generated and an outgoing transition with this event from the state will be taken.
UML is a trademark of Object Management Group, Inc.