Concurrent Region
Explanation
Section titled “Explanation”A state machine shows the states an object can be in. A composite state groups other states inside it (see Composite State). An orthogonal composite state has two or more regions. Each region is a separate area inside the composite state. Regions let a diagram show concurrency, meaning several things happening at the same time.
Being in such a composite state means being in all of its regions simultaneously. The object holds one current state per region.
Start and end. Each region has its own initial state and its own final state.
Completion. The composite state reaches its end only when all regions have reached their final states. One finished region is not enough.
No crossing. A transition between states in different regions is not allowed. Regions stay separate from each other.
Fork and join. Two special markers, called pseudostates, show how control enters and leaves regions explicitly:
- A fork splits one incoming transition into several transitions. These must end in different regions of the composite state. Transitions leaving a fork cannot have a guard or a trigger.
- A join is a shared target for transitions coming from different regions. Its outgoing transition fires only after all incoming transitions have run.
Terminate. Entering a terminate pseudostate ends the state machine’s execution immediately. It performs no further behavior.
Example
Section titled “Example”Picture an order in an online shop. While it is “In fulfillment”, it has two regions. One region tracks payment: pending, then paid. The other tracks packing: waiting, then packed. Both regions run side by side. A fork sends the order into both regions at once. A join waits until payment is paid and packing is packed. Only then does the order move on to “Ready to ship”. Payment steps never jump directly into packing steps.
Diagram source
@startuml[*] --> Fulfillmentstate Fulfillment { state Payment { [*] --> Pending Pending --> Paid : payment received Paid --> [*] } -- state Packing { [*] --> Waiting Waiting --> Packed : items packed Packed --> [*] }}Fulfillment --> ReadyToShipReadyToShip --> [*]@endumlChecks
Section titled “Checks”- Each orthogonal composite state has at least two regions.
- Each region has its own initial state and final state.
- No transition connects states that lie in different regions.
- Fork transitions end in different regions and carry no guard or trigger.
- Leaving the composite state by completion is modeled as requiring all regions to reach their final states, for example through a join.
Related
Section titled “Related”- Composite State
- State Machine Diagram
- State Machine Transition
- State and Event
- Transition Syntax (Trigger, Guard, Behavior)
- State Machine Diagram Modeling Mistakes
Sources
Section titled “Sources”- Formalizing UML State Machines for Automated Verification – A Survey — arxiv.org, accessed 2026-11-09
- UML state machine - Wikipedia — en.wikipedia.org, accessed 2026-11-09
- Element: Zusammengesetzter Zustand — content.helpme-codesys.com, accessed 2026-11-09
- Element: Gabelung/Verbindung — content.helpme-codesys.com, accessed 2026-11-09