BPMN Gateways
A BPMN gateway is the element that splits or joins the flow of a process. It is drawn as a diamond, and the marker inside the diamond tells you its type. A gateway does no work itself. It only decides which sequence flows the process takes next.
Guide: Decide with Gateways shows how to write conditions on Jira fields, and Make Approval Steps builds an approval with them.
Exclusive, Parallel, and Inclusive Gateway Compared
| Exclusive gateway (XOR) | Parallel gateway (AND) | Inclusive gateway (OR) | |
|---|---|---|---|
| Marker | X, or an empty diamond | + | O |
| As a split | Takes exactly one path | Takes all paths | Takes every path whose condition is true |
| Conditions | Yes, on the outgoing flows | No | Yes, on the outgoing flows |
| As a join | Passes each incoming flow through at once | Waits for all incoming flows | Waits for the flows that were started (not supported in Flower yet) |
| Typical use | Approved or rejected? Amount above the limit? | HR, IT, and facilities work at the same time | Any combination of optional steps |
Which Gateway Do I Need?
- Only one of several paths can run: use an exclusive gateway. Example: an approved request continues, a rejected request goes back.
- All paths always run at the same time: use a parallel gateway. Example: the tasks before the first day of a new employee.
- One or more paths run, depending on data: use an inclusive gateway. Example: a request needs a security review, a legal review, both, or none.
- Join what you split with the same type. Paths that a parallel gateway started are joined by a parallel gateway. If an exclusive gateway joins them, every branch passes through on its own and the steps after the gateway run once per branch.
Supported Gateways
| Gateway | What it does | Support in Flower |
|---|---|---|
| Exclusive (XOR) | Chooses exactly one path, based on conditions | Supported |
| Parallel (AND) | Starts all paths, and as a join waits for all of them | Supported |
| Inclusive (OR) | Starts every path whose condition is true | Supported as a split only |
| Event-based | Waits for the first of several events | Not supported |
| Complex | Routes with custom rules | Not supported |
Elements that are not supported can be modeled but are ignored during execution. See BPMN Coverage in Jira.
Exclusive Gateways
An exclusive gateway (or XOR gateway) lets you make a decision based on data, namely the data of your Jira work items.

If an exclusive gateway has several outgoing sequence flows, all of them except one need a condition that defines when the flow is taken. One flow can have no condition. You mark it as the default flow.
When the process enters an exclusive gateway, Flower evaluates the conditions. The process takes the first sequence flow whose condition is fulfilled.
If no condition is fulfilled, the process takes the default flow. If the gateway has no default flow, the process cannot continue at this gateway. Therefore, always define a default flow.
An exclusive gateway can also join several incoming flows to make the model easier to read. A joining exclusive gateway only passes tokens through. It does not wait for the other flows, unlike a parallel gateway.
Conditions
A condition says when a flow is taken. In BPMN it is an expression on the data of the process. In Flower this data is your Jira work items:
piis the work item of the process instance.curis the work item of the last activity before the gateway.
The condition is written inside ${ } and is fulfilled when the expression returns true:
| Expression | What it checks |
|---|---|
${cur.fields.status.name == 'Rejected'} | The status of the last work item |
${cur.fields.customfield_10113 >= 5000} | A number field of the last work item |
${pi.fields.summary == 'New Request'} | The summary of the process instance |
How to write expressions, combine them, read complex fields, use external data, and troubleshoot them is the subject of the guide Decide with Gateways.
Parallel Gateways
A parallel gateway (or AND gateway) splits the flow into concurrent paths.

When the process enters a parallel gateway with several outgoing sequence flows, all flows are taken. In Flower, the work items of all branches are created at the same time, and the people responsible work on them independently.
You can join the concurrent paths with a parallel gateway that has several incoming sequence flows. The process waits at this gateway until every incoming flow has arrived.
Inclusive Gateways
Flower supports the diverging (splitting) inclusive gateway only. The converging (merging) inclusive gateway is not supported yet.
As an alternative, you can merge the flows with a combination of parallel and exclusive gateways.
The inclusive gateway (or OR gateway) lets you make several decisions based on data. The process takes every flow whose condition is fulfilled, so more than one flow can run.

If an inclusive gateway has several outgoing sequence flows, all of them need a condition. If it has only one outgoing sequence flow, it needs no condition.
You can mark one flow as the default flow. It should not have a condition, because it is only taken when no other condition is fulfilled.
When the process enters an inclusive gateway, Flower evaluates the conditions. The process takes all flows whose condition is fulfilled.
For example, the selected courses are pasta and salad:

For example, the selected courses are steak, pasta, and salad:

If no condition is fulfilled, the process takes the default flow. Flower does not evaluate the default flow. If no condition is fulfilled and the gateway has no default flow, the process cannot continue at this gateway.
For example, no courses are selected, so the default flow is taken:

Conditions
The conditions of an inclusive gateway work as described for the exclusive gateway: JavaScript expressions inside ${ } that use the data of your Jira work items. The flow is taken when the expression returns true.
Event-Based Gateways
Event-based gateways are not supported. You can model them, but Flower ignores them during execution, because Flower does not support intermediate catch events.
Complex Gateways
Complex gateways are not supported. You can model them, but Flower ignores them during execution.
Frequently Asked Questions
What is a gateway in BPMN?
A gateway is a diamond-shaped element that splits the flow of a process into several paths or joins several paths into one. The marker in the diamond shows the type.
What is the difference between an exclusive and an inclusive gateway?
An exclusive gateway (XOR) takes exactly one outgoing path. An inclusive gateway (OR) takes every outgoing path whose condition is true, so several paths can run at the same time.
What is the difference between an exclusive and a parallel gateway?
An exclusive gateway decides between paths with conditions. A parallel gateway has no conditions: it always starts all outgoing paths, and as a join it waits for all incoming paths.
Does an exclusive gateway need a default flow?
BPMN does not require it, but you should always define one. Without a default flow the process cannot continue when no condition is fulfilled.
Can I split or merge without a gateway?
BPMN allows several flows to leave or enter an activity. A gateway makes the behavior explicit and the model easier to read, so use one. See 11 Common BPMN Modeling Mistakes.
Learn More
- BPMN Gateways & Decision Handling: Write conditions, read complex fields, and use default transitions.
- BPMN Coverage in Jira: All supported BPMN elements at a glance.





