Gateway

Exclusive Gateway

amount > 1000Path AdefaultPath B

Routes to exactly one outgoing flow. Each outgoing flow can have a FEEL condition expression. The first flow whose condition evaluates to true is taken. Leave one flow without a condition as a default fallback — it is taken when no other condition matches.

Properties

PropertyTypeRequiredDescription
IDstringyesUnique element identifier
NamestringnoDisplay label (shown on the diamond)

Conditions are set on the outgoing Sequence Flows, not on the gateway itself. Select a sequence flow from the gateway to edit its condition.

Condition Expressions (FEEL)

Conditions reference process variables by name:

approved
amount > 1000
status = "pending"
amount > 1000 and tier = "gold"
count(items) >= 3
customer.tier = "gold"
ConceptSyntax
Equality= (not ==)
Inequality!=, <, >, <=, >=
Boolean ANDand
Boolean ORor
Negationnot(expr)
List lengthcount(list)
List accesslist[1] (1-based)
String literal"double quotes"

XML Example

<bpmn:exclusiveGateway id="check_amount" name="Amount Check?"/>

<bpmn:sequenceFlow id="high_value_flow" sourceRef="check_amount" targetRef="manual_review">
  <bpmn:conditionExpression>amount > 1000</bpmn:conditionExpression>
</bpmn:sequenceFlow>

<bpmn:sequenceFlow id="default_flow" sourceRef="check_amount" targetRef="auto_approve"/>

Default Flow

Mark one outgoing flow as the default by omitting the condition (or setting the default attribute). It is taken when all conditional flows evaluate to false. If no flow matches and there is no default, the engine throws an error.

Notes

  • Evaluation order follows the XML document order of outgoing flows
  • A flow with no condition is treated as the default (always matches) — put it last
  • For OR routing (activate multiple matching branches), use an Inclusive Gateway