End Event Termination Conditions¶
Source: BPMN 2.0 §13.5.6 (spec p443).
End Events terminate token-flow on a branch. Their behavior depends on (a) where they occur — Process-level vs Sub-Process-level — and (b) their EventDefinition type.
Process-level End Events¶
Terminate End Event¶
- The Process is abnormally terminated.
- No other ongoing Process instances are affected (terminates only this one instance).
- Remaining tokens are discarded.
- Other End Events behavior is NOT performed.
Other End Event types (Message / Signal / Error / Escalation / Compensation / None)¶
- The behavior associated with the Event type is performed:
- Message End Event → the associated
Messageis sent. - Signal End Event → the associated
Signalis sent. - Error End Event → the associated
Erroris thrown. - Escalation End Event → the associated
Escalationis thrown. - Compensation End Event → a throw Compensation Event is triggered (see compensation.md).
- None End Event → no specific behavior, just consumes the token.
- The Process instance is then completed if and only if both:
- All start nodes of the Process have been visited (i.e., all Start Events have been triggered, and for every starting Event-Based Gateway, one of the associated Events has been triggered).
- No
tokenremains within the Process instance.
Sub-Process-level End Events¶
Terminate End Event¶
- The Sub-Process is abnormally terminated.
- For a multi-instance Sub-Process: ONLY the affected instance is terminated. Other Sub-Process instances and higher-level Sub-Processes / Process instances are NOT affected.
- Remaining tokens within the affected Sub-Process instance are discarded.
Cancel End Event¶
- The Sub-Process is abnormally terminated AND the associated Transaction is aborted.
- Control leaves the Sub-Process through a Cancel intermediate boundary event attached to the Sub-Process.
- Use case: only valid within a
TransactionSub-Process.
Other End Event types¶
- Same as Process-level: the type-specific behavior is performed.
- The Sub-Process instance is then completed iff:
- All start nodes of the Sub-Process have been visited.
- No
tokenremains within the Sub-Process instance.
Comparison table¶
| End Event Type | Process-level effect | Sub-Process-level effect |
|---|---|---|
None |
Token consumed; instance completes if conditions met | Token consumed; instance completes if conditions met |
Terminate |
Abnormal Process termination | Abnormal Sub-Process termination (only affected MI instance for MI) |
Cancel |
(Not valid at Process level) | Abnormal Sub-Process termination + Transaction abort; control leaves via Cancel boundary event |
Message |
Send Message; instance completes if conditions met | Send Message; instance completes if conditions met |
Signal |
Throw Signal; instance completes if conditions met | Throw Signal; instance completes if conditions met |
Error |
Throw Error; instance fails (propagation per error-handling) | Throw Error; propagates up to enclosing scope |
Escalation |
Throw Escalation; instance completes if conditions met | Throw Escalation; propagates up to enclosing scope |
Compensation |
Trigger compensation per CompensateEventDefinition |
Trigger compensation per CompensateEventDefinition |
Completion conditions recap¶
Normal Process / Sub-Process completion requires:
- All start nodes visited — every Start Event triggered, and for every starting Event-Based Gateway one of its associated Events triggered.
- No tokens remaining — every token has reached an End Event.
When a Process is created via an instantiating Parallel Event-Based Gateway, condition (1) extends: all subsequent Events of that gateway MUST have occurred (§13.2). See ../state-machines/process-lifecycle.md.
Cross-references¶
- Process lifecycle: ../state-machines/process-lifecycle.md
- Compensation triggering by Compensation End Event: compensation.md
- Cancel boundary event on Transaction Sub-Process: sub-processes.md
- Error propagation (out of scope of this file): handled by error event handlers / boundary error events / event sub-processes — see events.md
- Event definition structural attributes: ../elements/event-definitions.md