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… and there

BPMN conversation diagram

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

BPMN choreography diagram

Choregraphy: the way FSC and PSC exchange to each other.

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 bpmn.io .bpmn file , Bizagi Modeler .bpm file , CATIA Magic .mdzip file

Exercise ⤳ Business as usual?

  1. Draw by means of bpmn.io, Bizagi Modeler, or CATIA Magic 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…

Solution ⤳ Business as usual?

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

Download Kogito .bpmn file

BPMN boundary non-interrupting escalation event (Kogito)

Download Kogito .bpmn file

BPMN boundary interrupting escalation event (Kogito)

Download Kogito .bpmn file

BPMN intermediate thrown escalation event (Kogito)

Download Kogito .bpmn file

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.+)

*In BPMN, the concept of BPMN thrown timer event is meaningless

**ISO 8601 standard is used in BPMN platforms to formally express durations and dates

BPMN timer event ⤳ bad

Download bpmn.io .bpmn file

BPMN timer event ⤳ good

Download bpmn.io .bpmn file

Exercise ⤳ Business as usual? (timers in the model)

Download bpmn.io .bpmn file

“Solution” ⤳ Business as usual? (timers in the model)

Download bpmn.io .bpmn file , CATIA Magic .mdzip 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 eventcollaboration

*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

Exercise ⤳ messages or signals?

Download bpmn.io .bpmn file

Exercise

Quote

Solution ⤳ Quote

Download CATIA Magic .mdzip file

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

Download bpmn.io .bpmn file

BPMN multiple event

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 parallel multiple event

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

Exercise ⤳ Chemistry process

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 , CATIA Magic .mdzip file

Solution ⤳ Chemistry process

Download CATIA Magic .mdzip file

Solution ⤳ Chemistry process

Download bpmn.io .bpmn file

BPMN exclusive gateway

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 ⤳ parallelism

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.

BPMN exclusive versus inclusive gateway…

Download bpmn.io .bpmn file

BPMN inclusive versus parallel gateway…

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 event-based gateway

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 exclusive event-based gateway ⤳ example

BPMN parallel event-based gateway* ⤳ example

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

Download Bizagi Modeler .bpm file

BPMN gateway ⤳ start* versus intermediate

*BPMN parallel event-based gateway: start only!

BPMN exclusive event-based gateway (intermediate)

Download BPMN .bpmn file

Exercise ⤳ Business as usual? (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…)

Case studies
  1. TĂ©lĂ©travail    in French
  2. Clinique    in French, digital signature, Business Process Analysis -BPA-, platform implementation

BPMN - Variations

BPMN task ⤳ types

“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

BPMN task ⤳ types cont'd

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

BPMN business rule task

DMN and BPMN business rule task

DMN and BPMN business rule task cont'd

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 activityBPMN 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 1. (scenario 3. is equivalent while scenario 2. is not: D is executed twice).

Variations on BPMN activityBPMN 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 activityBPMN marker

BPMN activities may have BPMN markers to become more specific.

*Further detail and modeling heuristics are exposed here

Variations on BPMN activityBPMN 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 activityBPMN 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 ⤳ example

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 .

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 & 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 gatewayFORK 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 (sample here…).

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

BPMN parallel gateway ⤳ best practice

Never JOIN? Why not…

FORK and JOIN ⤳ non-conformance

BPMN inclusive gateway & BPMN exclusive gateway ⤳ best practice

BPMN exclusive gateway JOIN without FORK

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

FORK and JOIN ⤳ dead lock*

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

JOIN for BPMN exclusive event-based gateway ⤳ best practice

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 (input and output) versus BPMN input data object

BPMN input data object versus output data object

BPMN data object ⤳ state

DMN ⤳ Decision

DMN ⤳ Decision Table

A decision includes a decision table whose expressions are based on Friendly Enough Expression Language -FEEL-.

DMN ⤳ Business Knowledge Model

The concept of DMN Business Knowledge Model is controversial (see also here…) in the sense that a DMN Business Knowledge Model (e.g., Determine programming language) is nothing else than a small-size decision.

DMN ⤳ Business Source

A DMN Business Source (e.g., Android dev. security best practices) has no impact on the inference of a decision. It just states a context in which inference occurs.

DMNDecision Requirement Diagram -DRD-

DMN ⤳ FEEL*

*Using FEEL online here

DMN ⤳ FEEL “hit policy”

Case studies
  1. New York City Museum Of Modern Art -NYC MOMA-    real business case, synchronization issues
  2. Barbados Crisis Management System -BCMS-    collaboration issues

© Franck Barbier