Flow

Sequence Flow

A sequence flow is the arrow connecting elements. It carries the token from one element to the next. Most flows are unconditional — the token simply moves along them. Conditions are only evaluated when the source is a gateway.

Properties

PropertyTypeRequiredDescription
IDstringyesUnique identifier
Sourceelement IDyesThe element the arrow leaves
Targetelement IDyesThe element the arrow enters
ConditionFEEL expressionnoOnly evaluated when source is an Exclusive or Inclusive Gateway
NamestringnoOptional label shown on the arrow

Condition Expressions

Conditions are FEEL expressions referencing process variables by name:

approved
score >= 80
tier = "gold" and amount > 1000
status = "pending" or status = "in_review"
count(items) > 0

A flow without a condition is unconditional — always taken when the source element advances.

XML Example

<!-- Unconditional flow -->
<bpmn:sequenceFlow id="flow_1"
  sourceRef="start" targetRef="first_task"/>

<!-- Conditional flow from exclusive gateway -->
<bpmn:sequenceFlow id="high_value_path"
  sourceRef="amount_check" targetRef="manual_review">
  <bpmn:conditionExpression>amount > 1000</bpmn:conditionExpression>
</bpmn:sequenceFlow>

<!-- Default fallback (no condition) -->
<bpmn:sequenceFlow id="default_path"
  sourceRef="amount_check" targetRef="auto_process"/>

Where Conditions Are Used

Source ElementCondition Behavior
Exclusive GatewayFirst true condition wins; one unconditioned flow = default
Inclusive GatewayAll true conditions activate; at least one must match
Task / EventIgnored — unconditional flow always taken
Parallel GatewayIgnored — all outgoing flows always activated

FEEL Quick Reference

ConceptSyntax
Equality=
Inequality!=, <, >, <=, >=
ANDand
ORor
Negationnot(expr)
String"double quotes"
List[1, 2, 3]
List lengthcount(list)