Skip to content

BPMN Element Support Inventory

npond edited this page Sep 7, 2026 · 1 revision

BPMN element support inventory

Flowable 8.0.0. Every verdict below was produced by generating a minimal BPMN process containing the element, deploying it to a running engine, and starting an instance — not by reading documentation. The fixtures are kept in the M4 branch as the tests the implementation stories are written against.

Written for #103. The scope is the 68 entries users are shown in SUPPORTED_BPMN_TYPES (14) and COMING_SOON_BPMN_TYPES (54) in WorkflowStudio.tsx. That list is Auton8's own inventory of what it offers, not a BPMN 2.0 conformance claim — see the M4 milestone description for what the specification defines and what is deliberately not claimed.

What the three verdicts mean

  • executes — deployed, an instance started, and the token behaved as the element requires.
  • deploys but does nothing — deploys cleanly, an instance starts, and the element has no effect. This is the dangerous category and the reason the epic exists.
  • fails at deployment — the engine refuses it, with a message.

A limitation of this survey, stated plainly

A probe that deploys and starts an instance proves deployment and instantiation. It does not, on its own, prove the element's semantics. Complex Gateway is the proof: it deploys, an instance starts, and the token passes straight through to the next activity — no activation condition evaluated, no join. Flowable has no ComplexGatewayActivityBehavior and falls back to a default that simply proceeds.

Every element marked executes below was deployed and instantiated. Where an element's semantics were separately verified, the evidence column says so. The implementation stories are where per-element semantics get asserted; this page tells them which elements need that most.

Elements with no engine implementation at all — five

Element Missing at which layer
bpmn:ComplexGateway no activity behaviour (deploys, behaves as pass-through)
Intermediate Throw (Message) no activity behaviour; validator rejects the definition
Compensation Start Event no EventSubProcessCompensationStartEventActivityBehavior
Intermediate Throw (Link) no link type in the BPMN model — deeper than a missing behaviour
Intermediate Catch (Link) no link type in the BPMN model

The planning documents said three. Link events were found by this survey; spike #217 established that Flowable's BPMN model jar contains no link class at all, so the XML converter cannot represent one.

Already offered as supported (14)

Element Verdict Evidence
Start Event (None) executes deployed and started
Signal Start Event executes deployed and started
Timer Start Event executes deployed and started
Intermediate Catch (Timer) executes deployed and started
End Event (None) executes deployed and started
End Event (Terminate) executes deployed and started
Task (Generic) executes deployed and started
User Task executes deployed and started
Script Task executes deployed and started
Service Task (Behavior) executes deployed and started
Exclusive Gateway (XOR) executes deployed and started
Inclusive Gateway (OR) executes deployed and started
Parallel Gateway (AND) executes deployed and started
Sequence Flow executes deployed and started

Offered as "coming soon" (54)

Element Verdict Evidence
Message Start Event executes deployed and started
Conditional Start Event fails at deployment legal only inside an event subprocess, not at process level
Error Start Event executes deployed and started
Escalation Start Event executes deployed and started
Compensation Start Event fails at deployment no EventSubProcessCompensationStartEventActivityBehavior; descoped
Intermediate Throw (None) executes deployed and started
Intermediate Throw (Message) fails at deployment no behaviour class; validator rejects the definition
Intermediate Throw (Signal) executes deployed and started
Intermediate Throw (Escalation) executes deployed and started
Intermediate Throw (Link) fails at deployment no link type in the BPMN model at all (spike #217)
Intermediate Throw (Compensation) executes deployed and started
Intermediate Catch (Message) executes deployed and started
Intermediate Catch (Signal) executes deployed and started
Intermediate Catch (Conditional) executes deployed and started
Intermediate Catch (Link) fails at deployment no link type in the BPMN model at all (spike #217)
Message Boundary executes deployed and started
Timer Boundary executes deployed and started
Signal Boundary executes deployed and started
Conditional Boundary executes deployed and started
Error Boundary executes deployed and started
Escalation Boundary executes deployed and started
Cancel Boundary executes BoundaryCancelEventActivityBehavior ships; minimal transaction completed before the cancel applied
Compensation Boundary executes deployed and started
Message End executes deployed and started
Signal End executes deployed and started
Error End executes raw probe had no catching boundary; a modelling requirement, not an engine gap
Escalation End executes deployed and started
Cancel End executes CancelEndEventActivityBehavior ships; same fixture limitation
Compensation End executes deployed and started
Send Task needs configuration flowable-sendtask-invalid-implementation — needs a type/implementation attribute
Receive Task executes deployed and started
Manual Task executes deployed and started
Business Rule Task needs configuration NoClassDefFoundError org/kie/api — rules engine absent from the image (#105)
Call Activity executes first probe named a callee that did not exist; with a real callee, executes
Sub-Process (Embedded) executes deployed and started
Event Sub-Process executes deployed and started
Transaction executes deployed and started
Ad-Hoc Sub-Process executes deployed and started
Event-Based Gateway executes deployed and started
Complex Gateway deploys but does nothing no behaviour class; verified at runtime — token passes straight through, no activation condition, no join
Loop Marker executes deployed and started
Multi-Instance (Parallel) executes deployed and started
Multi-Instance (Sequential) executes deployed and started
Compensation Marker executes deployed and started
Pool / Participant executes deployed and started
Lane executes deployed and started
Message Flow executes deployed and started
Data Object Reference executes deployed and started
Data Store Reference executes deployed and started
Data Input executes deployed and started
Data Output executes deployed and started
Text Annotation executes deployed and started
Group executes deployed and started
Association executes deployed and started

Where the three internal lists disagree

Auton8 keeps three lists and they do not agree. Reconciling them is #107's job; this is the input.

1. Shown as "coming soon" but not in the runtime deny-lists — 22 items. These deploy today. Nothing stops them, and nothing promises they work: Message/Error/Escalation/Compensation/Conditional start events, Message/Signal/ Error/Escalation/Cancel/Compensation end events, all three activity markers plus the compensation marker, all four data elements, and all three artifacts.

2. In the runtime deny-lists but the engine runs them — 25 items. The deny-lists work at BPMN localName granularity — boundaryEvent, intermediateThrowEvent, subProcess — while the palette distinguishes variants. So denying boundaryEvent blocks all eight boundary variants even though Flowable runs seven of them, and denying intermediateCatchEvent blocks message, signal and conditional catches that all work.

This granularity mismatch is the substance of #107. One source of truth is not enough on its own: the source has to be keyed the way the palette is keyed, or the same coarse denial reappears.

3. collaboration is denied but maps to no palette entry — the palette offers Pool, Lane and Message Flow, not the collaboration container itself.

Diagram-only artifacts

bpmn:Group, bpmn:TextAnnotation and bpmn:Association are annotations in the specification. They deploy and are ignored by the engine, which is correct — they are not gaps. DataObjectReference and DataStoreReference are not in this category: they become typed process-variable declarations (#166).

Needs configuration rather than implementation

  • Business Rule TaskNoClassDefFoundError: org/kie/api/runtime/rule/AgendaFilter. The rules engine is not in the image (#105).
  • Send Taskflowable-sendtask-invalid-implementation; needs a type or implementation attribute.

A nuance the palette hides

Conditional Start Event fails at process level with "Unsupported event definition on start event", but the engine ships EventSubProcessConditionalStartEventActivityBehavior — it is legal only inside an event subprocess. The palette offers it as though it were a process start. Relevant to #158 and #162.

Clone this wiki locally