BPMN - Business Process Modeling Notation

  • This is a graphical language for describing business processes for BPM
  • BPMN 2.0 is de-facto the industrial standard for BPM
  • executable via BPeL or there are tools that natively support execution of BPM

Control Flow Syntax

Differences with YAWL and Workflow Nets

  • no such things as places in BPML


Activities are things that are performed as a part of the process

They can be:

  • bpmn-activities.png
  • task: a single business action
  • look: an action that repeats over time
  • sub-process that contains other process inside
  • and all other things


Gateways are needed for routing purposes

There are the following gateways

  • bpmn-gateways.png
  • AND-split and AND-join
  • XOR-split and XOR-join
  • Event-based (which is Deferred Choice)
  • OR-split and OR-join (same semantics as in YAWL)

Note that activities can be connected to multiple activities without any gateways

  • but these gateways are implicitly assumed in this case
  • bpmn-activities-impl-gateways.png
  • so be careful with the following construction:
  • bpmn-activities-impl-gateways-careful1.png
  • because it will implicitly assumed to be something like the following
  • bpmn-activities-impl-gateways-careful2.png


Events represent actions that take place

  • when the flow starts and ends
  • when something happens on the way from start to end
  • it is also possible to add some decorations to express meaning of some events


During the flow some exceptions can occur

There are 2 types of events for that:

  • "throw" events
  • "catch" events


  • bpmn-exceptions.png
  • something inside a subflow can throw an exception
  • and there are "guarding" listeners that are triggered when such exceptions are thrown

Consider this example:

  • bpmn-exceptions-ex.png
  • there's one throwing event that interrupts the flow
    • throwing event
    • produces some events
    • these events are interrupting: the flow ends with such event
  • and this exception is caught outside of the subflow and handled
    • catching event
    • listens for certain events
  • we also have non-interrupting events - border events
    • they are activated when something happens outside of the flow

Also note that in this example there are two blocking intermediate events

  • bpmn-events-receive.png
  • these events stop the flow and resume when a message is received
  • note that in this case such events keep tokens inside
  • so we need a concept of Cancellation Regions to be able to terminate all subprocess
  • bpmn-events-bullseye.png terminates all the processes and stops the flow

Here's a list of decorations for events:

  • bpmn-events-all.png

Pools and Lines

Different organizations and different actors withing the organization are represented with

  • pools for organizations
  • lines withing the pools for actors
  • that makes it possible to show visually who is in charge of what

If a task is on a line that belongs to some actor,

  • he is responsible for executing it

External actors

  • it is advisable to model external actors - actors that do not execute the business process themselves (clients, etc) - with "empty" pools
  • this way the interaction with them can be clearly seen
  • it is good because such actors do not perform any actions, but they generate "incoming events"
  • and we don't have any illusion that we have control over what the external actors
  • we interact with them only with messages


  • bpmn-external.png
  • a student is an external actor: they generate events but do not execute any business process themselves
  • student is "abstract" - there are no actions in this pool

Approach for Building a Model

  1. Decide: when does process start/end
  2. Enumerate main activities & possible end-states
  3. Create top-level BPMN diagram
  4. Expand top-level activities to sub-processes
  5. Add pools for external parties & message flow (business context)
  6. Repeat 4-5 for sub-processes

Walk-through example:


Example 1:

  • bpmn-ex1.png

Example 2:

  • bpmn-exceptions-ex.png

Example 3:

  • booking a trip
  • YAWL diagram:
  • yawl-travel-agency.png
  • converting it to BPMN:
  • bpmn-insurance-ex.png