Junctions are used to chain together multiple transitions. They are used to construct compound transition paths between states.

For example, a junction can be used to converge multiple incoming transitions into a single outgoing transition representing a shared transition path (this is known as a merge).

Conversely, they can be used to split an incoming transition into multiple outgoing transition segments with different guard conditions. This realizes a static conditional branch. (In the latter case, outgoing transitions whose guard conditions evaluate to false are disabled. A predefined guard denoted “else” may be defined for at most one outgoing transition. This transition is enabled if all the guards labeling the other transitions are false.)

Static conditional branches are distinct from dynamic conditional branches that are realized by Choice Node.


When creating compound transitions between states with Junctions all Guard of the transition path needs to evaluate to true before the transitions can be enabled.

Only after this transition path is enabled the Exit Action of the source state will be executed, then all transition effects and at last the Entry Action of the target state will execute.
(Transitions without guards are treated as if their guards are always true).

See also

Transition priorities

Choice Node

  • No labels