Transitions
Transition
A Transition is a directed relationship between a source Vertex and a target Vertex that defines a valid execution path within a State Machine. Traversal of a Transition moves the State Machine configuration between States and may execute an associated Effect Behavior.
Transitions are triggered by dispatched Event occurrences. Depending on its structural scope relative to its source State, a Transition operates as an external, local or internal transition path.
Operations
-
Creating a New Transition:
Select theTransition Stencilfrom the Stencil Toolbar. Click and drag from the edge of the source Vertex to an edge on the target Vertex, then release to anchor the target connector. Transitions use an automatic best-fit routing algorithm, ensuring paths re-route smoothly when connected Vertices are moved. -
Changing Transition Connectors:
To reconnect an existing Transition, click and drag its connector handle from its current edge to any desired Vertex edge, then release. -
Renaming:
Select the Transition and edit theNamefield in the Properties Panel. A Transition's name must be unique within the containing State Machine SV1002. -
Deleting:
Select the Transition on the Canvas and hit Delete, or right-click the Transition and selectDeletefrom the context menu. -
Editing Notes:
Select the Transition and edit theNotesfield in the Properties Panel (maximum 500 characters SV1031).
UML Specification (Subclauses 14.2.3.8 & 14.2.3.8.1):
“A Transition is a single directed arc originating from a single source Vertex and terminating on a single target Vertex (the source and target may be the same Vertex), which specifies a valid fragment of a StateMachine Behavior...
The semantics of a Transition depend on its relationship to its source Vertex. Three different possibilities are defined, depending on the value of the Transition’s kind attribute:
• kind = external means that the Transition exits its source Vertex.
• kind = local is the opposite of external, meaning that the Transition does not exit its containing State...
• kind = internal is a special case of a local Transition that is a self-transition... such that the State is never exited (and, thus, not re-entered).”
Validations
-
SV1002:
Vertices and Transitions within a State Machine must have unique names. -
SV1023:
A Transition originating from a descendant Vertex within a composite State must not target that containing composite State. -
SV1024:
A Transition originating from a composite State must not target a descendant Vertex within that composite State. -
SV1031:
Notes for an element can contain a maximum of 500 characters.
Transition Behaviors
Transition Behaviors define the triggers, guard conditions, and executable actions that govern when and how a Transition is traversed. By attaching Events, Guards, and Effects to a Transition, you specify the exact criteria required for State Machine traversal and the side effects executed along the path.
Note:
Behaviors are stored at the root State Machine level and referenced across elements. This maintains a single source of truth across all States, Transitions, and Submachines for maximum reusability. Edits made to a Behavior automatically propagate to all of its references SV1009.
Operations
-
Opening the Transition Behaviors Window:
Right-click a Transition and selectEdit Behaviors, or select the Transition and press Enter to open theTransition Behaviors Window. This window features dedicated tabs and sections to manage Events, Guards, and Effect Behaviors for the selected Transition. -
Referencing a State Machine Behavior:
In the top input box, type text to filter existing State Machine Behaviors, then select an item from the results list to create a reference. To create and reference a new State Machine Behavior, type the name and press Enter or click theAddbutton. A Behavior name must be unique across all Behavior types SV1008. -
Ordering:
Behaviors execute top-down in order of priority. Select a Behavior reference and use theMove UporMove Downbuttons in the toolbar to reorder execution sequence. -
Renaming:
Double-click a Behavior or select it and click theEditbutton in the toolbar to rename it. Renaming automatically propagates to all existing references across the State Machine. A Behavior name must be unique across all Behavior types SV1008. -
Removing References:
Select one or more Behavior references (multi-select using Ctrl or Shift) and click theRemove (X)button in the toolbar. This detaches the reference from the Transition without deleting the underlying State Machine Behavior definition. -
Clearing References:
Click theClearbutton in the toolbar to remove all Behavior references from the active tab at once. -
Deleting Behaviors:
Select a Behavior and click theDeletebutton in the toolbar to delete the underlying State Machine Behavior definition. This performs a cascade delete, removing all references across the entire State Machine tree and clearing the Undo/Redo history for all affected Canvases. -
Finding References:
Select a Behavior and click theFind Referencesbutton in the toolbar to open a navigable result list in theBottom Panelof the Editor Interface. -
Editing Notes:
Select the Behavior and edit theNotesfield at the bottom of the tab section (maximum 500 characters SV1031).
Note:
Transitions originating from a Pseudostate cannot define Event triggers SV1025. If an existing Transition with assigned Event triggers is reconnected so that its source becomes a Pseudostate, its Event triggers are automatically cleared (this operation can be undone).
Warning:
Creation, deletion, and renaming of Behaviors inside the Transition Behaviors Window clears the Canvas history and cannot be undone once the window is closed.
UML Specification (Subclause 14.2.3.8 & 14.2.3.8.3):
“A Transition is a single directed arc originating from a single source Vertex and terminating on a single target Vertex... It may have an associated effect Behavior, which is executed when the Transition is traversed (executed)...
A Transition may own a set of Triggers, each of which specifies an Event whose occurrence, when dispatched, may trigger traversal of the Transition. A Transition trigger is said to be enabled if the dispatched Event occurrence matches its Event type. When multiple triggers are defined for a Transition, they are logically disjunctive, that is, if any of them are enabled, the Transition will be triggered...
A Transition may have an associated guard Constraint. Transitions that have a guard which evaluates to false are disabled. Guards are evaluated before the compound transition that contains them is executed, unless they are on Transitions that originate from a choice Pseudostate. In the latter case, the guards are evaluated when the choice point is reached. A Transition that does not have an associated guard is treated as if it has a guard that is always true.”
Validations
-
SV1002:
Vertices and Transitions within a State Machine must have unique names. -
SV1008:
Behavior names must be unique across all Behavior types. -
SV1009:
A State or Transition Behavior reference must resolve to an existing Behavior defined at the root State Machine scope. -
SV1025:
A Transition originating from a Pseudostate cannot define Event triggers. -
SV1031:
Notes for an element can contain a maximum of 500 characters.
Transition Label
A Transition Label provides a visual representation of a Transition's Behaviors and does not possess any independent properties of its own. It is displayed in the standard statechart format: {comma-separated events} [{comma-separated guards}] / {comma-separated effect actions} (for example, Play, Click [IsReady] / StartTimer). A Transition Label is only visible when the Transition has at least one attached Behavior.
Operations
-
Creating:
The Transition Label is automatically created when the first Behavior is attached to the Transition. The default placement for a Transition Label is adjacent to the Transition's source connector SV1026. -
Moving:
-
Repositioning:
Click and drag the Transition Label across the Canvas to change its visual location. -
Autopositioning:
To reposition a Transition Label to its default placement at the Transition's source connector, right-click it and selectAutopositionfrom the context menu.
Note:
When a Transition's source connector is moved along the same edge of its source Vertex, the attached Transition Label automatically shifts by the same delta. If the connector is moved to a different edge, the label resets to its default placement adjacent to the source connector SV1027. -
-
Resizing:
Select the Transition Label and drag its left or right edge to adjust its size. A Transition Label has a fixed height and only its width can be adjusted SV1028.-
Autosizing:
If the label width is insufficient to display the full Behavior string, the text is truncated with an ellipsis. To automatically adjust the label width to fit its text content, right-click the Transition Label and selectAutosizefrom the context menu.
-
Validations
-
SV1026:
The default placement for a Transition Label is adjacent to the Transition's source connector. -
SV1027:
When a Transition's source connector is moved along the same edge of its source Vertex, the attached Transition Label automatically shifts by the same delta. If the connector is moved to a different edge, the label resets to its default placement adjacent to the source connector. -
SV1028:
A Transition Label has a fixed height and only its width can be adjusted.
Internal Transition
An Internal Transition is a specialized state transition that executes entirely within a single State. Unlike standard or self-transitions, executing an Internal Transition does not exit or re-enter the State, meaning that no Entry or Exit Behaviors are performed.
Internal Transitions are also used to configure Deferred Events. When an Event is deferred in a State, its dispatching is postponed while that State remains active, saving the Event occurrence in the event pool until the State Machine navigates to a state where the Event can be handled.
Operations
-
Creating:
Right-click the State and selectNew Internal Transition. This opens theTransition Behaviors Windowto attach relevant Events, Guards, and Effect Behaviors. The Behavior label for an Internal Transition follows the standard transition format (for example:Play, Click [IsReady] / StartTimer). -
Editing Behaviors:
Right-click an Internal Transition and selectEdit Behaviors, or select the Internal Transition and press Enter to open theTransition Behaviors Window. Refer to the Transition Behaviors operations for full management details. -
Deleting:
Select the Internal Transition and hit Delete, or right-click the Internal Transition and selectDeletefrom the context menu. -
Configuring Deferred Events:
To defer Events for a State, create an Internal Transition, select the target Events, and check theDefercheckbox in the toolbar of theTransition Behaviors Window. The resulting label displays the deferred syntax (for example:Play, Click / defer).Note:
Marking an Internal Transition as deferred automatically clears any previously assigned Guards or Effect Behaviors SV1029.
UML Specification (Subclause 14.2.3.8.1):
“kind = internal is a special case of a local Transition that is a self-transition (i.e., with the same source and target States), such that the State is never exited (and, thus, not re-entered), which means that no exit or entry Behaviors are executed when this Transition is executed. This kind of Transition can only be defined if the source Vertex is a State.”
Validations
-
SV1029:
An Internal Transition that is marked as deferred cannot define Guards or Effect Actions.