#End a process
Reaching any end event finishes the whole instance at once, and every kind of end event behaves like a plain one.
#What an end event does
flowchart LR
S(("Start")) --> G{{"Inclusive gateway"}}
G --> A["Send invoice"] --> E1(("End"))
G --> B["Review by finance<br/>(still open)"] --> E2(("End"))
E1 -. "reached first" .-> C["Instance finished<br/>'Review by finance' stays in My tasks,<br/>but can no longer continue"]
The first time any path reaches an end event, the instance is finished. It does not wait for other paths that are still running.
⚠️ Steps still open on other paths are not withdrawn. A user task on such a path stays in its assignee's My tasks, but completing it does not bring the instance back — it is over. No gateway waits for paths to come back together, so work that has to finish before the process ends is better modelled as one multi-instance activity than as paths side by side.
Inside a sub-process or a process started by a call activity, an end event finishes only that inner part. The parent process then continues with the next step.
An end event produces no data.
#The kinds of end event
| End event | Status | What happens |
|---|---|---|
| Plain end event | ✅ | Finishes the instance |
| Terminate end event | ⚠️ | Finishes the instance — exactly like a plain one. Open steps on other paths are not withdrawn |
| Error end event | ⚠️ | Finishes normally. No error is thrown: an error boundary event on the calling step does not fire |
| Message end event | ⚠️ | Finishes normally. No message is sent |
| Signal end event | ⚠️ | Finishes normally. No signal is broadcast |
| Escalation, cancel and compensation end events | ⚠️ | Finish normally, and do nothing else |
To send a message or a signal at the end of a process, put a message throw event or a signal throw event before a plain end event. See Process elements.
⚠️ When you change an end event's type, the menu describes the variants as they are meant in BPMN — "Terminates the whole process", "Ends with an error", "Ends and sends a message". Chester does not do any of that; the table above is what happens.
#Configure an end event
An end event has only General — its name and id — and Documentation. Error, message, signal, escalation and compensation end events also show a group for their reference or code. Nothing entered there is used when the process runs.
#What validation checks
- A process without an end event gets a warning.
- An end event with an outgoing flow gets a warning.
- A path that never reaches an end event gets a warning.
- An element other than an end event that has no outgoing flow is an error — at runtime the instance would fail there.
The messages are shown in German. See Check that a process can run.
