Skip to Content
BPMN ElementsEventsStart & End Events

Start & End Events

Start Events

Start events define how a process instance is created.

TypeTriggerBehavior
NoneManual API callPOST /api/instances creates an instance immediately
TimerScheduleInstance created when the timer fires (cron or one-shot)
MessageMessage receivedInstance created when a message matches the start event’s messageRef
SignalSignal broadcastInstance created when a matching signal is broadcast

Message start event

When a message is sent (POST /api/messages), the engine checks message start definitions last — after boundary subscriptions, catch events, and event subprocesses. At most one new instance is created per message delivery.


End Events

TypeBehavior
NoneToken is consumed; instance completes if no other active tokens remain
ErrorThrows an error with an optional error code; caught by boundary events or error event subprocesses
TerminateImmediately cancels all remaining tokens and terminates the instance
EscalationThrows an escalation code; caught by escalation boundary events or escalation event subprocesses
MessageRecords the message in the instance audit trail, then completes
SignalRecords the signal in the instance audit trail, then completes

Error end event

<endEvent id="paymentFailed"> <errorEventDefinition errorRef="PaymentError" /> </endEvent> <error id="PaymentError" errorCode="PAYMENT_DECLINED" />

The engine stores the thrown error code in thrown_error. When the subprocess or process instance fails, the parent looks for:

  1. A boundary error event with errorCode matching thrown_error
  2. A boundary error event with no errorCode (catch-all)
  3. An error event subprocess with a matching or catch-all trigger

If none are found the failure propagates up.

Terminate end event

<endEvent id="abort"> <terminateEventDefinition /> </endEvent>

All active tokens across all parallel branches are cancelled immediately. Use this to hard-stop a process when a critical condition is met.

Last updated on