chesterdocs

#Process elements

The designer lets you draw every BPMN element, but only some of them run, so this page lists which ones Chester executes and which it rejects.

#Why the palette offers more than runs

The BPMN editor offers the full BPMN 2.0 palette, because a documentation-only process may use any of it. In an executable process, validation marks every element Chester cannot run as an error ("not implemented"), and a process with errors cannot be deployed. You find out while modelling, not when the process runs.

flowchart LR
  E[Element in the diagram] --> Q{Process executable?}
  Q -- "no" --> OK1["Allowed — documentation only"]
  Q -- "yes" --> S{Supported by Chester?}
  S -- "yes" --> OK2["Configured and run"]
  S -- "partly" --> W["Deploys, but behaves as described below"]
  S -- "no" --> X["Validation error — blocks deployment"]

#What is supported

✅ runs as described · ⚠️ deploys, but with the limit noted · ❌ rejected by validation

#Start and end events

Element Status Note
Start event (none) ✅ Started by a person once Manual start is on, optionally with a start form, or by a calling process. See Start a process
Message start event ✅ Started by an incoming webhook or a request to a fixed URL, optionally followed by a delta query. See Start a process from an incoming request
Timer start event ⚠️ Deploys, but never fires — nothing starts the process when the time comes
Signal, conditional, error and escalation start events ⚠️ Deploy, but nothing triggers them
Compensation start event ⚠️ Runs like a plain start event
End event (none) ✅ Ends the whole instance as soon as any path reaches it. Steps still open on other paths are not withdrawn. See End a process
Terminate, error, message, signal, escalation, cancel and compensation end events ⚠️ All behave like a plain end event: terminate does not withdraw the other paths' open steps, error throws nothing, message and signal send nothing

#Tasks and activities

Element Status Note
Task (none) ✅ Passes straight through — useful as a documented placeholder
User task ✅ A person works on it in a form. See Hand work to a person with a user task
Service task ✅ Calls a system through an HTTP or GraphQL action. See Call a system with a service task
Send task ✅ Sends an email through an email adapter. See Send an email with a send task
Call activity ✅ Runs the production deployment of another process or an agent and waits for it. See Call another process or an agent
Sub-process ✅ Runs its steps as a separate part that sees only the inputs passed in. See Group steps in a sub-process
Ad-hoc sub-process ✅ The building block of an agent. ⚠️ Without an agent configuration it runs like a plain sub-process
Event sub-process ⚠️ Deploys, but never runs — no event starts it
Script, business rule, receive and manual tasks ❌
Transaction ❌

#Gateways

Element Status Note
Exclusive gateway ✅ Takes the first path whose condition holds, or the default path if none does. With neither, the step fails. See Decide which path a gateway takes
Inclusive gateway ✅ Takes every path whose condition holds, or the default path if none does
Parallel gateway ❌ Not available. For parallel work use an inclusive gateway whose conditions all hold, or a multi-instance activity
Event-based gateway ✅ Waits for the timer, message or signal events that follow it; the first to happen decides the path. Cannot be retried from the instance view
Complex gateway ❌

#Intermediate and boundary events

Element Status Note
Message catch event ⚠️ Waits for an incoming request. In webhook mode it needs a challenge on the adapter, and a message that arrives early is lost. See Wait for an incoming message
Message throw event ✅ Calls an outbound action and waits for its answer, like a service task. See Send a message to a system
Timer catch event ⚠️ Waits for a fixed duration in days, hours, minutes and seconds only — no date, cycle or expression, and at most about 24 days. See Wait for a while with a timer event
Signal catch and throw events ⚠️ A throw wakes every waiting catch for that signal, in every process and environment; a signal nobody waits for is lost. See Wake waiting processes with a signal
Link catch and throw events ⚠️ Jump from one point to another on the same level of the diagram. A throw without a matching catch still deploys, and fails at run time. See Jump across the diagram with link events
Intermediate catch and throw events (none) ✅ Pass straight through — useful as a documented milestone
Conditional catch, escalation throw and compensation throw events ⚠️ Deploy, but do nothing: the process passes straight through, without waiting for the condition or throwing anything
Error boundary event (interrupting) ✅ Takes over when the activity it sits on fails — any failure, there is no filter by error code. See Handle a failed step with an error boundary event
Timer, message, signal, escalation, conditional, compensation and cancel boundary events ❌ A timeout on a task is not available

#Markers

Marker Status Note
Multi-instance (parallel or sequential) ✅ On user, service and send tasks, sub-processes and call activities — one run per item of a list or per member of a user group. Sequential runs one at a time on every element. ⚠️ The Assignee expression of a user task is not used. See Run a step once per item
Loop ❌ Has no effect: the activity runs once

#Configure an element

Only executable processes show the configuration of an element. Select it in the diagram and the properties panel opens beside the canvas. What can be set depends on the element: a service task needs a system, an adapter and an action; a user task needs an assignee and a form; a condition lives on the outgoing sequence flow of a gateway, not on the gateway itself. Values that depend on the running process are written as expressions.