BPMN 2.x

BPMN - Fundamentals

BPMN diagram types

In BPMN, there is no direct diagrammatic notation for drawing a process on its own. Indeed, either the process' content is drawn “as is”, i.e., a BPMN process diagram or several processes' content are drawn with communications between each other, i.e., a BPMN collaboration diagram (a.k.a. BPMN orchestration diagram).

From ver 2.x of BPMN, a BPMN conversation diagram (example*) is an infrastructural (summarized) vision of a BPMN collaboration diagram while a BPMN choreography diagram (example*) puts forward interaction coordination as a whole.

In short, a BPMN conversation diagram shows the “network infrastructure” while a a BPMN choreography diagram shows how this network infrastructure is used in terms of “business interaction protocol”.

As described, these new BPMN diagram types only aim at bringing out more readability and thus comprehensibility without any introduction of essential (new) notation.

*Look at here

BPMN conversation diagrams

Notation allows markers as sub-conversation , multi-instance , etc.

BPMN choreography diagrams

BPMN pool

A BPMN pool generally has a name. It is a support of a running process. For example, a case of Customer Relationship Management (CRM) may be modeled by means of a customer pool and a supplier pool. The interaction between the customer and the supplier BPMN processes makes up a BPMN collaboration diagram.

BPMN lane

A BPMN lane generally has a name. It is a well-identified part of a running process (and graphically depicted “as is” within an inner rectangle). Lanes can be further subdivided by lanes.
Contrary to a BPMN pool, a BPMN lane is a deliberately isolated functional part of a process that may be viewed as a specific role or responsibility in terms of workflow.

A BPMN lane appears or disappears at design time according to business objectives: BPMN processes' shapes change for improvement and lanes play a great role in this changeability for management efficiency.

*An interesting analysis on modeling heuristics about BPMN pool versus BPMN lane is here

BPMN collaboration diagram

The size of a BPMN model often requires a collapsed view (a.k.a. black-box view) of its interacting BPMN pools.

BPMN activity

A BPMN activity is a functional unit whose name is preferably a verb (imperative mode) to make feel an action in the designed process. A BPMN activity is part of a BPMN pool or, a BPMN lane of a BPMN pool when lanes are used.

BPMN activity cont'd

BPMN reusable subprocess, example (callee)

Download jBPM .bpmn file

BPMN reusable subprocess, example (caller)

Download jBPM .bpmn file

BPMN reusable subprocess, example (callee/caller data exchange)

Download jBPM .bpmn file

BPMN sequence flow -▶

A BPMN sequence flow -▶ is a key notational construct for showing progress within a business process. Functional and behavioral elements of a business process dependent on each other; so, flows mark business dependencies. Besides, flows optionally carry data to irrigate business organizations.

BPMN example*: “Business as usual?”

*This two-lane model has implicit behavior: subprocess has no start event and no end. No start event (global process) leads to indeterminism at start time…

Download Bizagi Modeler .bpm file

Download bpmn.io .bpmn file

“Business as usual?”, exercise

  1. Draw by means of Bizagi Modeler or bpmn.io the model on previous slide.
  2. Change the process diagram by trying to draw only one Work task, merging for that the two extant Work (1st part) and Work (2nd part) tasks! Tip: use a gateway…

“Business as usual?”, solution

Download Bizagi Modeler .bpm file

BPMN control flow ○⚋▷ and BPMN message flow ○⚋ ✉ ⚋▷

BPMN control flow ○⚋▷ and BPMN message flow ○⚋ ✉ ⚋▷ share the same semantics.

BPMN control flow ○⚋▷, (non-exhaustive) scenario list

BPMN event

Theoretically, an event is an external phenomenon with a null duration. The opposite notion is that of state (i.e., BPMN activity). Usually, “event” implies “caught event occurrence” although BPMN also supports the idea of “thrown event occurrence”.

Events like activities and gateways are known as “flow objects” in BPMN. Event entries (except* BPMN start events ) and event exits (except* BPMN end events ) are BPMN sequence flows -▶.

*There are other minor exceptions.

BPMN event, start versus end versus intermediate

*Notation is sometimes a simple circle whose thickness is between “start” (thin) and “end” (thick)!

BPMN start event, example

Download bpmn.io .bpmn file

BPMN end event, the notion of token

Tokens match to execution paths, which are often multiple! Processes terminate when all (inner) execution paths become inactive…

BPMN event, received versus emitted

BPMN makes a distinction between event reception (the idea of BPMN caught event) and event emission (the idea of BPMN thrown event), for instance, BPMN intermediate caught message event and BPMN intermediate thrown message event .

For the sake of clarity, in a conceptual spirit, it is more opportunistic to view the notion BPMN thrown event as that of “activity” in general and not as that of “event” in a theoretical sense!

As a result, BPMN control flows ○⚋▷ and BPMN message flows ○⚋ ✉ ⚋▷ aim at connecting BPMN thrown events to BPMN caught events across BPMN pools, typically, ○⚋▷* (signals) or ○⚋ ✉ ⚋▷ (messages).

*In principle, this notation between signals is not BPMN-compliant, but it may be tolerated to make communication flows more readable.

BPMN event, (primary) “correction-based” event triggers

BPMN start events , BPMN intermediate events and BPMN end events aim at being specialized*.

*By default, throughout this tutorial, BPMN intermediate caught events are depicted when discussing event triggers (e.g., error, timer, etc.) in a general-purpose way.

BPMN boundary error event* and BPMN end error event (Kogito)

*Status can be interrupting only.

BPMN boundary non-interrupting escalation event (Kogito)

BPMN boundary interrupting escalation event (Kogito)

BPMN intermediate thrown escalation event (Kogito)

BPMN event, (secondary) “correction-based” event triggers

BPMN compensation event *

*The relationship between a BPMN compensation event and its compensation activity is not fully part of the process' execution flow: a BPMN association (instead of a BPMN sequence flow -▶) is used to connect the BPMN compensation event with the compensating activity. In contrast, an BPMN compensation end thrown event is part of the process' execution flow to trigger the compensation.

Download bpmn.io .bpmn file

BPMN timer event (doc.+)

Timers, bad!

Download bpmn.io .bpmn file

Timers, good!

Download bpmn.io .bpmn file

“Business as usual?”, exercise (use timers in the model)

Download bpmn.io .bpmn file

BPMN conditional event (doc.+)*

Other specializations** of BPMN start events , BPMN intermediate events and BPMN end events .

*This doc. example is ambiguous: the exit flow from Check application is not explicitly the boolean opposite of Application changed?.

**By default, throughout this tutorial, BPMN intermediate caught events are depicted when discussing event triggers (e.g., error, timer, etc.) in a general-purpose way.

BPMN conditional event (intermediate)

Download bpmn.io .bpmn file

BPMN event, collaboration

*This notation between signals is not BPMN-compliant. Nevertheless, it may be tolerated to make communication flows more readable.

BPMN signal event

Download bpmn.io .bpmn file

BPMN signal event , step 1

BPMN signal event , step 2

BPMN signal event , step 3

BPMN message event

Download bpmn.io .bpmn file

BPMN message event , step 1

BPMN message event , step 2

BPMN message event , step 3

BPMN message event , step 4

BPMN message event , step 5

BPMN event, other triggers

Second-class specializations* of BPMN start events , BPMN intermediate events and BPMN end events exist.

*By default, throughout this tutorial, BPMN intermediate caught events are depicted when discussing event triggers (e.g., error, timer, etc.) in a general-purpose way.

BPMN link event

BPMN event, multiple

BPMN multiple event (XOR) is poorly supported in editors & platforms. It aims at replacing all 3 events on the left hand side model*.

*Exclusion when entering Have lunch is only intuitive.

BPMN event, parallel multiple

BPMN parallel multiple event (AND) aims at replacing all 3 events on the left hand side model.

BPMN boundary event, interruptibility

A BPMN caught event* can be interrupting (default) or not. A dashed-line circle (double circle for BPMN intermediate caught event) means “non-interrupting”. Interruptibility** is systematically linked to the notion of BPMN boundary event (illustration).

*Interruptibility only makes sense for “received” events.

**Note that some types can never be “non-interrupting”, e.g., BPMN intermediate caught error event .

BPMN event, allowed combinations in the BPMN official doc.

Quiz: better understanding of BPMN (here…)

“Chemistry process”, exercise

A chemistry process requires enhanced capabilities in order to be better controlled. Namely, the suite of the three first tasks must not last more than 1 min. If so, the process stops… Moreover, an external decision may stop the waiting task to restart the process at the first Heat task… Finally, the last Heat task may fail in a “unexpected way”…

Download Bizagi Modeler .bpm file

“Chemistry process”, solution

Download bpmn.io .bpmn file

BPMN gateway, (exclusive) gateways

A BPMN exclusive gateway establishes the path taken by a BPMN flow. Outgoing flows have conditions (a possible default flow as well) to compute execution paths in business processes. A synthesis about the possible BPMN gateway types in BPMN is here… or there

BPMN gateway, (parallel) gateways

A BPMN gateway with possible/systematic parallelism establishes the path(s) triggered by BPMN flows. Inclusive gateways have conditions (a possible default flow as well) while parallel gateways have not.

Exclusive versus inclusive…

Download bpmn.io .bpmn file

Inclusive versus parallel…

Download bpmn.io .bpmn file

No gateways (often) leads to ambiguities, even errors (jBPM*)…

*A BPMN task has at most one incoming flow (error on D entry) and a BPMN task has at most one outgoing flow (error on A exit).

BPMN parallel gateway (explicit versus implicit FORK*)

**

*While these two model pieces are known as equivalent, model on the top has to be preferred because of its explicit nature.

**Conditions as properties of the outgoing flows of a BPMN parallel gateway are not allowed (OCEB 2 Certification Guide, Second ed., p. 120).

BPMN exclusive gateway

Implicit JOIN versus JOIN based on BPMN exclusive gateway *

*The model piece on the left hand side is both shaky and unclear in the sense that the Prepare & serve Bolognese sauce might be executed twice: “If several sequence flows end in an activity, each incoming token triggers the activity.” (OCEB 2 Certification Guide, Second ed., p. 98).

The model piece on the right hand side is non-equivalent!

BPMN complex gateway*

A BPMN complex gateway has to be used when conditions cannot be expressed in “common logic”. Tricky business rules correspond to such a situation.

*In the BPMN official doc., complex gateways are declared close to inclusive gateways.

BPMN complex gateway* , example

Download bpmn.io .bpmn file

BPMN complex gateway* , alternative?

Download bpmn.io .bpmn file

BPMN gateway, event-based gateways

The BPMN event-based gateway type (start or intermediate) relies on events instead of conditions.

*See The Pizza Collaboration case study (PDF, p. 4).

**A BPMN receive task is permitted as well.

BPMN event-based gateway (exclusive), example

BPMN event-based gateway (parallel*), example

*Please note that the Have speed dating task is executed once.

Download Bizagi Modeler .bpm file

BPMN event-based gateway: start* versus intermediate

*BPMN parallel event-based gateway: start only!

BPMN event-based gateway (intermediate)

Download BPMN .bpmn file

“Business as usual?”, exercise (why timers are misused in the model?)

Download bpmn.io .bpmn file

BPMN annotation & BPMN group

A BPMN annotation is a BPMN model element without interpretation scope in terms of execution. By definition, an annotation is expressed in natural language* and is bound to one or more execution-meaningful BPMN model elements.

A BPMN group allows the isolation (by surrounding**) of a given set of BPMN model elements for easier readability, even comprehensibility. Similar to a BPMN annotation , a BPMN group has no interpretation scope in terms of execution.

*Commenting on BPMN models is obviously useful. Nonetheless, the presence of numerous BPMN annotations may show, even prove, the designer's incapacity of precisely and completely modeling all issues of a business process… So, be careful about any excessive use!

**Note that a group may cross over pool boundaries.

Quiz: better understanding of BPMN (here…)

Exercise
Belongings drop-off and pick-up at the Museum Of Modern Art (MOMA) of New York City here

BPMN - Variations

Types of BPMN task

“Abstract” BPMN tasks are the basic notation for tasks, but specializations are possible*.

*An interesting analysis of the types and usages of BPMN tasks is here

Types of BPMN task cont'd

Three types of BPMN task embody common Information Technology (IT) concerns (e.g., programming).

Variations on BPMN task , BPMN message task

The idea of BPMN message task creates confusion with that of BPMN message event . Despite some redundancy*, a BPMN boundary event may be attached to BPMN message task to catch any event (typically an error) that may occur within the task of message emission or message reception. Moreover, these BPMN markers may be used to model multiple message emissions or message receptions.

*An interesting analysis about the distinction between the ideas of BPMN message event and BPMN message task is here

BPMN receive task , restriction*

While receive tasks may have boundary events, they *CANNOT* in the case they act as outgoing elements of event-based gateways.

*BPMN official doc., p. 297

Variations on BPMN activity, BPMN embedded subprocess

A BPMN embedded subprocess (example*) is fully part of the execution scope of its wrapping process in the sense that they share data. This is the key difference with a BPMN call activity (data must be explicitly transferred at calling time).

*Morning embedded subprocess here

BPMN embedded subprocess , implicit parallelism*

*This is scenario a. (scenario c. is equivalent while scenario b. is not: D is executed twice).

Variations on BPMN activity, BPMN event subprocess

A BPMN event subprocess is a self-contained subprocess that starts from an -interrupting or not- (BPMN official doc., p. 440) event that may be thrown within its enclosing activity.

A BPMN event subprocess completes in an autonomous way and has access to the execution context of its enclosing activity.

BPMN event subprocess , non-interruption

Download bpmn.io .bpmn file

BPMN event subprocess , interruption versus non-interruption

Download bpmn.io .bpmn file

Variations on BPMN activity, BPMN marker

BPMN activities may have BPMN markers to become more specific.

*Further detail and modeling heuristics are exposed here

Variations on BPMN activity, BPMN marker cont'd

A BPMN activity (BPMN task , BPMN call activity , BPMN embedded subprocess , or BPMN transaction subprocess ) may be equipped with a BPMN marker to make it a BPMN multi-instance activity. BPMN markers are (in an exclusive way): ; activity' executions are stopped by textual conditions (no graphical counterpart).

*Contrary to parallel multiple and sequential multiple , loop aims at processing the same data collection instance.

BPMN multi-instance subprocess (Kogito)

Download Kogito .bpmn file

BPMN multi-instance subprocess, example

Download bpmn.io .bpmn file

Variations on BPMN activity, BPMN transaction subprocess

A BPMN transaction subprocess (doc.+) aims at grouping several activities as a whole: they all succeed or fail with respect to the subprocess execution scope.

BPMN transaction subprocess

Download bpmn.io .bpmn file

Variations on BPMN sequence flow -▶, BPMN default sequence flow

A BPMN default sequence flow may be used for marking the exit of a BPMN activity or a BPMN gateway.

*From a forking BPMN inclusive gateway or BPMN exclusive gateway , a BPMN sequence flow -▶ should necessarily be endowed with a conditional expression that has no graphical counterpart.

Variations on BPMN sequence flow -▶, BPMN conditional sequence flow

A BPMN conditional sequence flow may act as a substitute for a BPMN inclusive gateway or a BPMN exclusive gateway .

Indeed, according to the BPMN official doc. (p. 32), a conditional flow should only be used when leaving a BPMN activity* (OCEB 2 Certification Guide, Second ed., p. 106). This means that, in a unexpected sense, this activity's exit is constrained by a conditional expression that is symbolized by the white diamond.

*Note that several BPMN conditional sequence flows being true when leaving a BPMN activity create as many as execution tokens, some parallelism in other words! Contrary to a a BPMN exclusive gateway , mutual exclusion is not compulsory.

BPMN default sequence flow and BPMN conditional sequence flow

Exercise

In the Shipment Process of a Hardware Retailer case study (PDF, p. 3), the flow labeled Always implicitly has true as underlying condition. To that extent, the flow labeled extra insurance required towards Take out extra insurance is optional. Would it be correct (as done below) to change this flow to a BPMN default sequence flow ?

Variations on BPMN gateway, FORK and JOIN

By construction, a BPMN gateway can fork either an incoming flow into multiple outgoing flows or join multiple incoming flows into an outgoing flow. Best practices associated with such an approach are exposed in a document accessible from here

It is important to notice that a JOIN gateway may be used to merge flows, which have not necessarily been split by a similar FORK gateway (reminder here…).

FORK and JOIN make no sense for a BPMN event-based gateway .

Best practice, BPMN parallel gateway

Never JOIN? Why not…

FORK and JOIN, non-conformance

Best practice, BPMN inclusive gateway and BPMN exclusive gateway

JOIN without FORK, BPMN exclusive gateway

Download bpmn.io .bpmn file

FORK and JOIN, execution consistency issues*

*Execution imposes well-formed models (a.k.a. “workflow patterns”). Note that the following model does not actually foster well-formedness (the expected “closing” gateway should be exclusive instead of inclusive ).

FORK and JOIN, probable execution inconsistency

Dead lock*

*Design error risks (example here…) come from “larger” models in which a JOIN imposed by a FORK located at a distant place.

BPMN association

Fundamentally, a BPMN association links a BPMN data object to a BPMN activity, BPMN event or BPMN gateway (OCEB 2 Certification Guide, Second ed., p. 142).

A BPMN association may also connect a BPMN data object with a BPMN sequence flow -▶. In this case, the BPMN association loses its direction (i.e., no ending arrow: ).

BPMN data object

BPMN supports data and data flow descriptions is a limited way. The notion of BPMN association allows the connection of data as inputs and/or outputs* of a BPMN activity, BPMN event or BPMN gateway. A key issue is the fact that a BPMN activity having an inbound BPMN data object cannot be executed until data are available. Further detail on the use of BPMN data object and BPMN association may be found here

*Optionally, states of data objects may be noted between square brackets, e.g., [Confirmed], to establish data objects' status before (as inputs) or after (as outputs) execution.

BPMN data object (both input and output) & “pure” BPMN input data

The way BPMN data are correlated with BPMN elements (e.g., BPMN sequence flows -▶) greatly depends on a given BPMN platform's support (the case of jBPM below).

“Pure” BPMN input data object & BPMN output data object

The way BPMN data are correlated with BPMN elements (e.g., BPMN sequence flows -▶) greatly depends on a given BPMN platform's support (the case of jBPM below).

© Franck Barbier