Skip to Content
BPMN ElementsGatewaysInclusive (OR)

Inclusive Gateway (OR)

Fork: Activates all outgoing paths whose condition evaluates to true. Join: Waits for the number of branches actually activated at the corresponding fork.

<inclusiveGateway id="routeOrder" /> <sequenceFlow sourceRef="routeOrder" targetRef="sendEmail"> <conditionExpression>${notifyByEmail} == true</conditionExpression> </sequenceFlow> <sequenceFlow sourceRef="routeOrder" targetRef="sendSms"> <conditionExpression>${notifyBySms} == true</conditionExpression> </sequenceFlow> <sequenceFlow sourceRef="routeOrder" targetRef="skipNotification" />

Fork behavior

  1. For each outgoing flow with a condition: advance if condition is true
  2. For each outgoing flow without a condition: always advance
  3. If no flows matched: take the default flow (if configured)
  4. The engine records activatedCount for each downstream inclusive join it can reach via a 2-hop trace (fork → task → join), so the join knows how many tokens to wait for

Join behavior

The inclusive join waits for arrivals >= activatedCount (the count stored at fork time), then advances and clears both counters.

Key difference from parallel join: A parallel join always waits for a fixed number of branches (the number of incoming arcs). An inclusive join adapts to how many branches were actually activated.

Last updated on