startEvent | Supported | timerType | BPMN·JSON | Supported | Literal | Timer kind: date, duration, or cycle. |
| | timerExpression | BPMN·JSON | Supported | Literal | ISO 8601 timer expression. |
| | ioMapping | BPMN·JSON | Supported | outputs[].source: Expression (variables, instance, session, now); outputs[].target: Variable name | outputs only (inputs is rejected at publish). On the process start event, the outputs are the instance input contract: sources read the start variables, session, instance and now, and only the mapped targets are written to the instance; other start variables are discarded. On a subProcess start event, outputs are added to the instance variables. |
endEvent | Supported | signalRef | BPMN·JSON | Supported | Literal | Name of the signal this element throws. On arrival it is broadcast to every waiting signal catch/boundary event of the tenant with the same name, exactly as POST /events/signal/:signal_name does (no payload). |
| | eventName | BPMN·JSON | Supported | Literal | Name of the named event this end event throws to its own instance. On arrival the event is recorded and delivered to the waiting named-event catch and boundary events of the same instance, exactly like POST /v1/instances/:id/events; other instances are not affected. In BPMN it comes from the stateway:eventCorrelation extension or, when that is absent, from the name of the message referenced by a native message event definition (messageRef). The payload is the variables listed in variableFilter, and a notification carrying the eventName is published. |
| | variableFilter | BPMN·JSON | Supported | Variable name | Names of variables to include in the payload of the named event this end event throws (only used together with eventName). |
| | terminate | BPMN·JSON | Supported | Literal | Marks a terminate end event. When reached, every other active path of the same scope is cancelled (open user tasks included). At the top level the instance ends as completed; inside a subprocess only that subprocess ends, and the parent flow continues. Cannot be combined with a signal or a named event. |
task | Supported | activityContract | BPMN | Supported | Literal | Typed input/output specification (data inputs/outputs and input/output sets). |
| | dataInputs | BPMN | Supported | Literal | Names of the declared data inputs. |
| | dataInputAssociation | BPMN | Supported | Literal | Resolved names/IDs of the element's data input associations. |
userTask | Supported | activityContract | BPMN | Supported | Literal | Typed input/output specification (data inputs/outputs and input/output sets). |
| | dataInputs | BPMN | Supported | Literal | Names of the declared data inputs. |
| | dataInputAssociation | BPMN | Supported | Literal | Resolved names/IDs of the element's data input associations. |
| | assignmentDefinition | BPMN·JSON | Supported | assignee: Expression (variables, instance, session, now); candidateUsers: Expression (variables, instance, session, now); candidateGroups: Expression (variables, instance, session, now) | Human-task assignment (assignee, candidate users, candidate groups). |
| | formSchema | BPMN·JSON | Supported | Literal | JSON Schema of the human task's form. |
| | ioMapping | BPMN·JSON | Supported | inputs[].source: Expression (variables, instance, session, now); inputs[].target: Variable name; outputs[].source: Expression (result, instance, session, now); outputs[].target: Variable name | inputs are resolved when the task is created and become the task's variables (alongside any typed inputs). outputs are applied when the task is completed: sources read the submitted variables (as result.* or by name), instance, session and now, and only the mapped targets are written to the instance. Without outputs, every submitted variable is written, as before. session is the user who started the instance, not the one completing the task. |
serviceTask | Supported | activityContract | BPMN | Supported | Literal | Typed input/output specification (data inputs/outputs and input/output sets). |
| | dataInputs | BPMN | Supported | Literal | Names of the declared data inputs. |
| | dataInputAssociation | BPMN | Supported | Literal | Resolved names/IDs of the element's data input associations. |
| | taskDefinition | BPMN·JSON | Supported | Literal | The worker type that executes the task (e.g. "http"). |
| | taskHeaders | BPMN·JSON | Supported | url: Expression (variables, instance, session, now); headers: Expression (variables, instance, session, now, credentials); authorization: Expression (variables, instance, session, now, credentials); method: Literal; timeout: Literal; executionMode: Literal; callbackEvent: Literal | Key/value configuration passed to the worker (method, URL, timeout). |
| | ioMapping | BPMN·JSON | Supported | inputs[].source: Expression (variables, instance, session, now); inputs[].target: Variable name; outputs[].source: Expression (response, instance, now); outputs[].target: Variable name | Maps process variables into and out of the task. |
scriptTask | Recognized, not executed | activityContract | BPMN | Supported | Literal | Typed input/output specification (data inputs/outputs and input/output sets). |
| | dataInputs | BPMN | Supported | Literal | Names of the declared data inputs. |
| | dataInputAssociation | BPMN | Supported | Literal | Resolved names/IDs of the element's data input associations. |
businessRuleTask | Supported | activityContract | BPMN | Supported | Literal | Typed input/output specification (data inputs/outputs and input/output sets). |
| | dataInputs | BPMN | Supported | Literal | Names of the declared data inputs. |
| | dataInputAssociation | BPMN | Supported | Literal | Resolved names/IDs of the element's data input associations. |
| | taskHeaders | BPMN·JSON | Supported | decisionKey: Literal; decisionVersion: Literal; executionMode: Literal; timeout: Literal | Key/value configuration for the DMN evaluation: decisionKey (required) and optionally decisionVersion. The stateway:decisionRef / stateway:decisionVersion attributes on the task are an equivalent shorthand and take precedence. DMN evaluation is always synchronous — setting executionMode to async errors the instance. timeout does not abort a running evaluation; it only bounds how long a job can sit orphaned after an engine crash before startup recovery marks it as timed out. |
| | ioMapping | BPMN·JSON | Supported | inputs[].source: Expression (variables, instance, session, now); inputs[].target: Variable name; outputs[].source: Expression (result, instance, session, now); outputs[].target: Variable name | Maps process variables into and out of the task. |
sendTask | Supported | activityContract | BPMN | Supported | Literal | Typed input/output specification (data inputs/outputs and input/output sets). |
| | dataInputs | BPMN | Supported | Literal | Names of the declared data inputs. |
| | dataInputAssociation | BPMN | Supported | Literal | Resolved names/IDs of the element's data input associations. |
| | taskHeaders | BPMN·JSON | Supported | url: Expression (variables, instance, session, now); headers: Expression (variables, instance, session, now, credentials); authorization: Expression (variables, instance, session, now, credentials); method: Literal; timeout: Literal; executionMode: Literal; callbackEvent: Literal | Key/value configuration passed to the worker (method, URL, timeout). |
| | ioMapping | BPMN·JSON | Supported | inputs[].source: Expression (variables, instance, session, now); inputs[].target: Variable name; outputs[].source: Expression (response, instance, now); outputs[].target: Variable name | Maps process variables into and out of the task. |
receiveTask | Recognized, not executed | activityContract | BPMN | Supported | Literal | Typed input/output specification (data inputs/outputs and input/output sets). |
| | dataInputs | BPMN | Supported | Literal | Names of the declared data inputs. |
| | dataInputAssociation | BPMN | Supported | Literal | Resolved names/IDs of the element's data input associations. |
exclusiveGateway | Supported | default | BPMN | Supported | Literal | ID of the default sequence flow, taken when no condition matches. |
parallelGateway | Supported | — | — | — | — | Parallel (AND) split and synchronized join. |
inclusiveGateway | Supported | default | BPMN | Supported | Literal | ID of the default sequence flow, taken when no condition matches. |
eventBasedGateway | Recognized, not executed | — | — | — | — | Event-based routing. |
subProcess | Supported | activityContract | BPMN | Supported | Literal | Typed input/output specification (data inputs/outputs and input/output sets). |
| | dataInputs | BPMN | Supported | Literal | Names of the declared data inputs. |
| | dataInputAssociation | BPMN | Supported | Literal | Resolved names/IDs of the element's data input associations. |
callActivity | Supported | calledElement | BPMN·JSON | Supported | Literal | Key of the called process definition. It must resolve to a published definition of your tenant when the calling definition is published; the version in force at that moment is the one the parent calls from then on. |
| | callConfig | BPMN·JSON | Supported | onChildFailure: Literal | Execution options for the call activity. onChildFailure decides what the caller does when the called instance ends in error or is terminated: "propagate" (default) routes to the call activity's error boundary event, or fails the calling instance when there is none; "continue" completes the call activity anyway and publishes the outcome as <elementId>__childOutcome. |
| | activityContract | BPMN | Supported | Literal | Typed input/output specification (data inputs/outputs and input/output sets). |
| | dataInputs | BPMN | Supported | Literal | Names of the declared data inputs. |
| | dataInputAssociation | BPMN | Supported | Literal | Resolved names/IDs of the element's data input associations. |
boundaryEvent | Supported | timerType | BPMN·JSON | Supported | Literal | Timer kind: date, duration, or cycle. A boundary timer arms when the host activity enters waiting and fires on schedule. A timeDate/timeDuration boundary fires once; a non-interrupting timeCycle (R<n>/...) boundary re-arms itself after each occurrence, with the count decremented, until it runs out (R/... never stops on its own) — an interrupting boundary never re-arms, since firing it kills the host. |
| | timerExpression | BPMN·JSON | Supported | Literal | ISO 8601 timer expression. A boundary timer arms when the host activity enters waiting and fires on schedule. A timeDate/timeDuration boundary fires once; a non-interrupting timeCycle (R<n>/...) boundary re-arms itself after each occurrence, with the count decremented, until it runs out (R/... never stops on its own) — an interrupting boundary never re-arms, since firing it kills the host. |
| | attachedToRef | BPMN·JSON | Supported | Literal | ID of the host activity the boundary event is attached to. |
| | cancelActivity | BPMN·JSON | Supported | Literal | true interrupts the host activity (default); false is non-interrupting. |
| | errorCode | BPMN·JSON | Supported | Literal | Matched error code; empty matches any error. |
| | eventName | BPMN·JSON | Supported | Literal | Name of the named event this message boundary waits for. In BPMN it comes from the stateway:eventCorrelation extension or, when that is absent, from the name of the message referenced by a native message event definition (messageRef); the extension takes precedence. A boundary event arms this catch when the host activity enters waiting (or re-arms after a non-interrupting fire) and fires when a matching event is posted after that point — an event recorded earlier does not retroactively fire it. Interrupting (default) never re-arms; non-interrupting re-arms unconditionally after each fire, reacting to every further occurrence while the host stays active. |
| | signalRef | BPMN·JSON | Supported | Literal | Name of the signal this boundary waits for, matched against POST /events/signal/:signal_name. Arms when the host activity enters waiting. Interrupting (default) never re-arms, since firing it kills the host; non-interrupting re-arms unconditionally after each fire, reacting to every further broadcast of the same signal name while the host stays active. A signal broadcast before the boundary (re-)armed does not retroactively fire it. |
| | ioMapping | BPMN·JSON | Supported | inputs[].source: Expression (variables, instance, session, now); inputs[].target: Variable name; outputs[].source: Expression (event, instance, now); outputs[].target: Variable name | Maps the delivered event payload into process variables via outputs. inputs is accepted for schema consistency with other task types but has no effect here. |
intermediateThrowEvent | Supported | signalRef | BPMN·JSON | Supported | Literal | Name of the signal this element throws. On arrival it is broadcast to every waiting signal catch/boundary event of the tenant with the same name, exactly as POST /events/signal/:signal_name does (payload: the variables listed in variableFilter). |
| | eventName | BPMN·JSON | Supported | Literal | Name of the named event this element throws to its own instance. On arrival the event is recorded and delivered to the waiting named-event catch and boundary events of the same instance, exactly like POST /v1/instances/:id/events; other instances are not affected. In BPMN it comes from the stateway:eventCorrelation extension or, when that is absent, from the name of the message referenced by a native message event definition (messageRef). The payload is the variables listed in variableFilter, and the published notification carries the eventName. |
| | variableFilter | BPMN·JSON | Supported | Variable name | Names of variables to include in the event payload. |
| | dataInputAssociation | BPMN | Supported | Literal | Resolved names/IDs of the element's data input associations. |
| | activityContract | BPMN | Supported | Literal | Typed input/output specification (data inputs/outputs and input/output sets). |
intermediateCatchEvent | Supported | timerType | BPMN·JSON | Supported | Literal | Timer kind: date, duration, or cycle. |
| | timerExpression | BPMN·JSON | Supported | Literal | ISO 8601 timer expression. |
| | eventName | BPMN·JSON | Supported | Literal | Name of the named event this catch event waits for. In BPMN it comes from the stateway:eventCorrelation extension or, when that is absent, from the name of the message referenced by a native message event definition (messageRef); the extension takes precedence. |
| | signalRef | BPMN·JSON | Supported | Literal | Name of the signal this catch event waits for, matched against POST /events/signal/:signal_name. |
| | ioMapping | BPMN·JSON | Supported | inputs[].source: Expression (variables, instance, session, now); inputs[].target: Variable name; outputs[].source: Expression (event, instance, now); outputs[].target: Variable name | Maps the delivered event payload into process variables via outputs. inputs is accepted for schema consistency with other task types but has no effect here. |