Tutorials / Glossary / Parallel Gateway

Parallel Gateway

Splits a process into multiple simultaneous paths that all execute, and later joins them back together.

+ Fork Pack + Join

A parallel gateway (a diamond with a plus sign) forks the process into every outgoing path at once — all branches proceed concurrently, no condition involved.

A second parallel gateway later joins the branches: it waits for a token to arrive on every incoming path before continuing. This models genuinely concurrent work, like preparing packaging and processing payment for an order at the same time.

Example

Bpmn.createProcess("fulfillment")
  .startEvent("start")
  .parallelGateway("fork")
  .branch("pack", (b) => b.serviceTask("pack", { taskType: "packaging" }))
  .branch("charge", (b) => b.serviceTask("charge", { taskType: "payment" }))
  .join("join")
  .endEvent("end")
  .withAutoLayout()
  .build();
Try it hands-on: Running tasks in parallel →