Lesson 4 of 4
What a Gateway is
A Gateway is a diamond shape. It controls where the flow goes next — either splitting into multiple paths or merging multiple incoming paths back into one. Gateways do not perform work; they route the process based on conditions, events, or the state of parallel branches.
Exclusive Gateway (XOR)
Marked with an X or left empty. One and only one outgoing path is followed. Use this when a decision has mutually exclusive outcomes — the invoice is either approved or rejected, not both.
Example: Is the invoice amount above £5,000? Yes → Finance Manager Approval. No → Auto Approve. Only one path is taken.
Common mistake with XOR: Having three outgoing paths where one of them is 'both conditions apply.' That situation is not an XOR — it is an Inclusive Gateway (OR). XOR requires genuine mutual exclusivity.
Parallel Gateway (AND)
Marked with a +. All outgoing paths happen simultaneously. All must complete before the process continues past the merging Parallel Gateway.
Example: When a new employee starts, IT provisioning AND HR paperwork AND the line manager's induction plan all happen in parallel. A Parallel split Gateway triggers all three. A Parallel merge Gateway (also a + diamond) waits for all three to complete before the induction session begins.
Parallel Gateway rule
A Parallel Gateway never evaluates a condition. Every outgoing path fires, always. If you find yourself wanting to label the outgoing paths of a Parallel Gateway with conditions, you are probably using the wrong gateway type.
Inclusive Gateway (OR)
Marked with a circle inside the diamond. One or more paths may be followed, based on conditions. Used when multiple paths are possible and any combination of them may apply.
Example: A new product listing may trigger 'Notify Marketing' AND/OR 'Update Inventory System' AND/OR 'Alert Regional Manager' — depending on product type and region. Any combination may apply.
Event-Based Gateway
Routes based on whichever event happens first. The process pauses and waits, then takes the path corresponding to the event that arrives.
Example: After sending a quote to a customer, the process waits. If the customer accepts within 5 days → 'Process Order'. If the 5-day timer expires → 'Send Reminder'. Whichever happens first determines the path.
The pairing rule
Always pair split with merge
Every gateway that splits the flow (a diverging gateway) should have a matching gateway that rejoins it (a converging gateway) — unless each split path ends in its own End Event. A Parallel split needs a Parallel merge. An Exclusive split needs an Exclusive merge or explicit End Events on each branch. Forgetting the merge gateway is one of the top structural errors caught by BPMN validators.
Gateway comparison
| Gateway type | Symbol | Question to ask yourself | Use when |
|---|---|---|---|
| Exclusive (XOR) | Diamond with X or empty | Can only ONE path happen? | Decision has mutually exclusive outcomes |
| Parallel (AND) | Diamond with + | Must ALL paths happen simultaneously? | Multiple tasks must run in parallel |
| Inclusive (OR) | Diamond with O | Can ONE OR MORE paths happen? | Conditions allow any combination of paths |
| Event-based | Diamond with pentagon | Which event arrives first determines the path? | Process waits for external trigger to determine routing |
The single most common BPMN mistake
Using an Exclusive Gateway when a Parallel Gateway is needed — or vice versa. Ask yourself: can only one path happen based on a condition, or do all paths happen? Only one → Exclusive. All simultaneously → Parallel. The visual difference (X vs. +) is small; the semantic difference is enormous.
✓ When to use
- XOR for approval/rejection decisions and any mutually exclusive outcome
- AND when multiple tasks must happen simultaneously and all must complete before continuing
- OR when conditions may enable any combination of paths
✗ When not to use
- ✕Don't use XOR when both paths might apply — use OR
- ✕Don't use AND when only some parallel paths may apply — use OR
- ✕Don't forget the matching merge gateway — a split without a merge is a structural error