Tutorials / Glossary / Inclusive Gateway

Inclusive Gateway

Splits a process into one or more of several paths — any combination of conditions that evaluate true is taken.

Which apply? Escalate

An inclusive gateway (a diamond with a circle) sits between an exclusive gateway's "pick exactly one" and a parallel gateway's "take all paths": every outgoing flow whose condition is true is activated, and the matching join waits only for the branches that were actually taken.

It models scenarios like a support ticket that might need escalation, a refund, or both, depending on independent conditions.

Example

Bpmn.createProcess("ticket")
  .startEvent("start")
  .inclusiveGateway("gw", { name: "Which apply?" })
  .branch("escalate", (b) => b.condition("= severity = \"high\"").serviceTask("escalate", { taskType: "escalate" }))
  .branch("refund", (b) => b.condition("= refundRequested").serviceTask("refund", { taskType: "refund" }))
  .join("join")
  .endEvent("end")
  .withAutoLayout()
  .build();
Try it hands-on: Flexible branching with inclusive gateways →