Join

A join is an element of a state machine. It is processed when it is reached by transitions that have the join as target and all the incoming transitions are enabled.

It is used to merge several incoming transitions from different regions into one outgoing transition.

A join belongs to a region.

Symbol

A join is shown as a short bold bar.

images/download/attachments/2785313/join_ysmbol.png

Symbol in context

Example 1

images/download/attachments/2785313/join_symbol_context_1.png

  • The join is reached even if not all the regions have an outgoing transition to the join. Only the two transitions incoming the join have to be enabled. This is the case if simple states 'Simple state 1' and 'Simple state 3' are finished.

Example 2

images/download/attachments/2785313/join_symbol_context_2.png

The transitions to the join are not enabled because the transition from composite state 'Composite state 3' to the join is not enabled. It is not enabled because 'Composite State 3' is not finished as it didn't yet reach the final state in its only region.

Characteristics

  • A join has at least two incoming transitions and exactly one outgoing transition.

  • Different incoming transitions of a join cannot leave the same region.

  • The incoming transitions of a join cannot have guards or triggers.

  • The outgoing transition of a join cannot have a guard or triggers.

  • All incoming transitions of a join have a state as a source.

Interpretation of and deviation from the UML specification

There is no interpretation of and deviation from the UML specification for a state machine's join.