# BPMN Core Elements

**In short:** BPMN describes a business process with a small set of building blocks. Events, tasks, and gateways are joined by flows. Pools and lanes show who does the work. Data objects show what information is used.

## Explanation

BPMN is a diagram notation for business processes. A diagram is built from a few kinds of elements.

**Flow objects**

- **Events** are things that happen. They are drawn as circles.
- **Tasks** are atomic units of work. Several tasks together produce a meaningful result.
- **Gateways** are diamonds. They route the process in more complex patterns than a plain line can. They control forking (splitting paths) and merging (joining paths).

**Connecting objects**

- **Sequence flow** is a solid line with an arrowhead. It sets the order in which steps happen.
- **Message flow** is a different kind of connection. It can never link elements inside the same pool.

**Swimlanes**

- A **pool** represents a major participant, typically a different organization.
- A **lane** splits the work inside a pool by function or role.

**Data**

- **Data objects** show which data an activity needs or produces.

**Gateway types**

- An **exclusive (XOR) gateway** picks exactly one outgoing path, based on data. As a join, it only passes the flow through. It does not wait for other paths.
- A **parallel gateway** as a split starts all outgoing paths at once. As a join, it waits until every incoming path has arrived.
- An **inclusive (OR) gateway** as a split takes every path whose condition is true.

**Task and event types**

- A **user task** is work done by a human.
- A **service task** is a work item of a specific type that runs automatically.
- A **timer event** is triggered by a date, a duration, or a cycle.
- A **message event** refers to a message and waits until that message arrives.

For more detail, see the articles BPMN 2.0 Notation, BPMN Gateway, and BPMN Swimlane (Pool and Lane).

## Example

A small order process begins with an event, drawn as a circle. A user task follows: an employee reviews the order. Next comes an exclusive gateway. Based on data, such as whether the order is valid, it sends the flow down exactly one path. On the valid path, a service task sends a confirmation automatically. On the other path, a user task asks the customer for corrections. The paths then meet at a second exclusive gateway, which simply passes the flow on, and the process ends. Sequence flows, the solid arrows, set the order of all these steps.

## Trade-offs

Gateway choice matters. A joining exclusive gateway does not wait for other paths. A joining parallel gateway waits for every incoming path. Pairing a split with the wrong kind of join changes how the process behaves. See BPMN Gateway Mismatch Antipatterns.

BPMN diagram: [A small order process with a user task, an exclusive gateway, a service task, and sequence flows.](https://arc.fuet.ch/diagrams/concepts/modeling-bpmn/bpmn-element-categories/diagram-1.bpmn)

## Checks

- Message flow is used only between different pools, never between elements inside one pool.
- Each joining gateway matches its split: a parallel join where all paths must arrive, an exclusive join only where one path is taken.
- Pools represent participants such as different organizations, and lanes divide work inside a pool by role or function.

## Related

- [BPMN 2.0 Notation](https://arc.fuet.ch/concepts/modeling-bpmn/bpmn-2-0-notation-overview.md)
- [BPMN Gateway](https://arc.fuet.ch/concepts/modeling-bpmn/bpmn-gateway-semantics.md)
- [BPMN Event](https://arc.fuet.ch/concepts/modeling-bpmn/bpmn-event.md)
- [BPMN Activity](https://arc.fuet.ch/concepts/modeling-bpmn/bpmn-activity.md)
- [BPMN Swimlane (Pool and Lane)](https://arc.fuet.ch/concepts/modeling-bpmn/bpmn-swimlane-pool-and-lane.md)
- [BPMN Connecting Object](https://arc.fuet.ch/concepts/modeling-bpmn/bpmn-connecting-object.md)
- [BPMN Data Element](https://arc.fuet.ch/concepts/modeling-bpmn/bpmn-data-element.md)
- [BPMN Gateway Mismatch Antipatterns](https://arc.fuet.ch/concepts/modeling-bpmn/antipatterns-for-process-flows.md)

## Sources

- [BPMN primer | Camunda 8 Docs](https://docs.camunda.io/docs/components/modeler/bpmn/bpmn-primer/) — docs.camunda.io, accessed 2026-11-08
- [Business Process Model and Notation - Wikipedia](https://en.wikipedia.org/wiki/Business_Process_Model_and_Notation) — en.wikipedia.org, accessed 2026-11-08
- [Exclusive gateway | Camunda 8 Docs](https://docs.camunda.io/docs/components/modeler/bpmn/exclusive-gateways/) — docs.camunda.io, accessed 2026-11-08
- [Parallel gateway | Camunda 8 Docs](https://docs.camunda.io/docs/components/modeler/bpmn/parallel-gateways/) — docs.camunda.io, accessed 2026-11-08
- [Inclusive gateway | Camunda 8 Docs](https://docs.camunda.io/docs/components/modeler/bpmn/inclusive-gateways/) — docs.camunda.io, accessed 2026-11-08
- [User tasks | Camunda 8 Docs](https://docs.camunda.io/docs/components/modeler/bpmn/user-tasks/) — docs.camunda.io, accessed 2026-11-09
- [Service tasks | Camunda 8 Docs](https://docs.camunda.io/docs/components/modeler/bpmn/service-tasks/) — docs.camunda.io, accessed 2026-11-09
- [Timer events | Camunda 8 Docs](https://docs.camunda.io/docs/components/modeler/bpmn/timer-events/) — docs.camunda.io, accessed 2026-11-08
- [Message events | Camunda 8 Docs](https://docs.camunda.io/docs/components/modeler/bpmn/message-events/) — docs.camunda.io, accessed 2026-11-09
