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, while a BPMN conversation diagram shows the “network infrastructure”, 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.

Further detail here (in French) …

BPMN choreography diagrams

Further detail here (in French) …

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 client pool and a supplier pool. The interaction between the client 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 reusable subprocess, example (callee)

Download jBPM .bpmn2 file

BPMN reusable subprocess, example (caller)

Download jBPM .bpmn2 file

BPMN flow

A BPMN flow is a key notational construct for showing progress in business processes. Processes and activities are not independent at all; so, flows exist to link them to each other and to irrigate business organizations with data.

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

“Business as usual?”, exercise

  1. Draw by means of Bizagi Modeler 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…

Download Bizagi Modeler .bpm file

“Business as usual?”, solution

BPMN event, start, end & intermediate

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”. Event entries (except BPMN start events ) and event exits (except BPMN end events ) are BPMN sequence flows -▶.

*BPMN also supports the idea of “thrown event occurrence” (slide #17).

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

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 between BPMN pools, for instance, ○⚋▷ (signals) or ○⚋ ✉ ⚋▷ (messages).

BPMN event, “correction-based” event triggers

BPMN start events , BPMN intermediate events and BPMN end events have to be 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 compensation event *, example in jBPM

*The relationship between a 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 compensation event with the compensating activity. In contrast, an end thrown compensation event is part of the process' execution flow to trigger the compensation.

Download jBPM .bpmn2 file

BPMN boundary error event , example in jBPM

Download jBPM .bpmn2 file

BPMN boundary non-interrupting escalation event , example in jBPM

Download jBPM .bpmn2 file

BPMN boundary interrupting escalation event , example in jBPM

Download jBPM .bpmn2 file

BPMN event, timer

BPMN timer event (doc.+).

Timers, bad!

Download bpmn.io file

Timers, good!

Download bpmn.io file

“Business as usual?”… with timers, exercise

Introduce timers (instead of the exclusive gateway) in the model.

Download bpmn.io file

BPMN event, condition & interaction

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

*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.

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

BPMN conditional event

Download jBPM .bpmn2 file

BPMN signal event , reception

Download jBPM .bpmn2 file

BPMN signal event , emission

Download jBPM .bpmn2 file

BPMN signal event , broadcast communication

Scenario:

  1. the ID_Caught_intermediate_signal_event process is launched; it blocks on the arrival of an occurrence of the 'FB' signal.
  2. the ID_Thrown_end_signal_event process is launched; it immediately terminates.
  3. the ID_Thrown_end_signal_event process both triggers the ID_Caught_start_signal_event process (which itself immediately terminates) and unblocks the ID_Caught_intermediate_signal_event process, which terminates as well.

Download jBPM .bpmn2 file

BPMN start message event

Download jBPM .bpmn2 file

BPMN end message event

Download jBPM .bpmn2 file

BPMN intermediate caught message event , point-to-point communication

Scenario (note that jBPM requires some Java code while it does not for signals):

  1. the ID_Intermediate_caught_message_event process is launched; it blocks on the arrival of an occurrence of the 'FB' message.
  2. the ID_End_message_event process is launched; it immediately terminates.
  3. the ID_End_message_event process both triggers the ID_Start_message_event process (which itself immediately terminates) and unblocks the ID_Intermediate_caught_message_event process, which terminates as well.

Download jBPM .bpmn2 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 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 circle (or double circle for BPMN intermediate caught event) with a dashed line means “non-interrupting”. Interruptibility is ideally linked to the notion of BPMN boundary event that has a special graphical look (illustration). In the following exhaustive list of BPMN intermediate caught events, absent event triggers cannot be set to “non-interrupting” (e.g., BPMN intermediate caught error event ):

*Interruptibility only makes sense for “received” events.

**A relevant analysis of the power and interest of “non-interrupting” events is here

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 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, basic gateways

A BPMN gateway establishes the path taken by a BPMN flow. Outgoing flows from gateways often have conditions to compute execution paths in business processes. A synthesis about the possible BPMN gateway types in BPMN is here… or there

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

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

jBPM raises other errors: tasks cannot remain “abstract” (errors on A, B, C and D); they must be characterized as of BPMN script task , BPMN service task , BPMN user task or any other supported type; a BPMN service task must be associated with an operation; etc.

BPMN exclusive gateway

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

Implicit join versus join based on BPMN “full white” gateway *

*The model piece on the left hand side model is both shaky and unclear in the sense that the Prepare & serve Bolognese sauce may 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 model is then non-equivalent!

BPMN gateway, other gateways

The BPMN event-based gateway type 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 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

Variations on BPMN task

A “generic” BPMN task is not enough precise; specializations are required*.

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

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

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 explicitely transfered at calling time).

*Morning embedded subprocess on slide #12, slide #14 or, slide #26.

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 (doc.+) is a self-contained subprocess that starts from an -interrupting or not- (BPMN official doc., p. 440) event generated 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 file

Variations on BPMN activity, BPMN marker

BPMN activities (BPMN tasks or BPMN subprocesses ) may be equipped with BPMN markers (see also here…). BPMN multi-instance activities use specific BPMN markers: ; activities' executions are stopped by dedicated (textual) conditions*.

*Further detail and modeling heuristics are exposed here

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

BPMN multi-instance subprocess, example*

*Server log after execution:2018-10-31 13:09:13,243 INFO [stdout] (default task-31) Franck Franck... The end...

Download jBPM .bpmn2 file

BPMN multi-instance subprocess, example

Download bpmn.io 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 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 flows 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, by construction, has a graphical counterpart.

*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.

Exercise

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

Variations on BPMN gateway, fork and join

By nature, 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

In this document, for example, in Figure 1, the absence of routing vertex (e.g., a BPMN parallel gateway ) on the left hand side model prevents, contrary to the right hand side model, any “reentrance”.

More generally, exclusive and inclusive gateways offer possibilities of robust fork and join management. Two other examples of such a management may be studied here and there

fork and join, non-conformance

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.

OR join

Excerpt from jBPM doc.: “OR or inclusive means that it continues as soon as all direct active paths of its incoming branches has been completed. This is complex merge behaviour that is described in BPMN2 specification but in most cases it means that OR join will wait for all active flows that started in OR split. Some advanced cases (including other gateways in between or repeatable timers) will be causing different “direct active path” calculation.”

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