Skip to content
← All terms

Conditional Flow

A sequence flow with a condition attached — the token only takes it when the condition evaluates to true.

What a conditional flow is

A conditional flow is a sequence flow that only fires when its condition is true. Visually, it is marked with a small diamond at its source end to distinguish it from an unconditional sequence flow. The token sitting at the source node only traverses the flow if the condition evaluates to true; otherwise the flow is ignored and the token waits for a flow that does match.

Conditional flows and exclusive gateways are two different ways to express the same idea. An exclusive gateway is explicit — a diamond, branches labelled with conditions, no ambiguity about the decision. A conditional flow is inline — it attaches the logic directly to the arrow, no gateway required. Exclusive gateways are more readable when the branching is the point; conditional flows are lighter when the branching is just a side effect of an already-named activity.

When to reach for conditional flows

  • After an activity whose outcome implicitly determines the next step ("Review request" → approved flow + rejected flow, no explicit gateway needed).
  • When the branching logic is simple and adding a gateway feels like overhead.
  • When one of the branches is a default flow (the back-slashed arrow) and the others are conditional — this expresses "take this path unless one of the conditions fires".

How LucidFlow models conditional flows

By default, LucidFlow emits exclusive gateways when the source document describes any branching with three or more outcomes. For simple "approve / reject" cases after a review task, the generator uses conditional flows with a default arrow — cleaner diagrams, same execution semantics. You can convert between the two forms in the canvas at any time; the export preserves whichever you chose.

Frequently asked questions

Does BPMN 2.0 require a default flow when I use conditional flows?

Not strictly, but in practice yes. If every outgoing flow has a condition and none matches, the token is stuck. A default flow (the one with the short back-slash mark at its source) is the safety net that fires when no condition matches.

Can a conditional flow come out of a gateway?

Yes. The conditions on flows out of an exclusive gateway are, technically, conditional flows. The diamond marker at the source is optional when the source is already a gateway because the branching is obvious.

Are conditional flows executable on a BPMN engine?

Yes, as long as the condition expression uses a language the engine supports (FEEL, JavaScript, Groovy depending on the engine). Purely visual conditions — labels like "if amount > 10k" — are documentation-only and have to be formalised before the diagram runs.

Related terms

← Back to the full glossary