BPMN
Introduction[edit]
The Business Process Modeling Notation (BPMN) is a standardized graphical notation for drawing business processes in a workflow. BPMN was developed by Business Process Management Initiative (BPMI), and is now being maintained by the Object Management Group since the two organizations merged in 2005. The intent was to identify the best practices of existing approaches and to combine them into a new, generally accepted language.
Since 2.0 there are 4 diagram types:
- Business Process Diagram (no or only one pool)
- Collaboration Diagram (pools and message flows)
- Choreography Diagram (contains choreography activities)
- Conversation Diagram (message between participants)
A goal for the development of BPMN is that the notation be simple and adoptable by business analysts. Also, there is a potentially conflicting requirement that BPMN provide the power to depict complex business processes and map to BPM execution languages. To help understand how BPMN can manage both requirements, the list of BPMN graphic elements is presented in two groups. First, there is the list of core elements that will support the requirement of a simple notation. Second, there is the entire list of elements, including the core elements, which will help support requirement of a powerful notation to handle more advanced modeling situations.
If a process description is detailed enough (including the execution semantics) it is a executable process. A public process contains only the activities and events which are relevant regarding the messages between partners. It is therefore not executable. The private process contains all the neccessary details.
Versions[edit]
The differences betwenn the version 1.0 to 2.0 are described here
- 1.0 2006
- Die BPMN wurde 2002 durch Stephen A. White, Mitarbeiter von IBM, erarbeitet und durch die Business Process Management Initiative (BPMI) veröffentlicht.
- 1.1 Overview BPMN 1.1 changes
- signal event
- multiple instance marker not a pause symbol anymore
- optical difference between throwing and catching events
- event bases gateway and complex gateway => no star, but pentagon
- 2.0 Overview BPMN 2.0 changes
- XML exchange format
- activity categories
- non-interrupting boundary events
- Event-based Start Gateway
- artifact shapes
- default pool and default lane, even if not visible
- multi-instance marker for pools
- data associations
- data store
- escalation end event
- event sub-process
- choerography diagram
- conversation diagram
Missing Functionalities[edit]
The modeling of the following will not be a part of BPMN:
- Organizational structures and resources
- Functional breakdowns
- Data and information models
- Strategy
- Business Rules
Concepts[edit]
[8] says that process and orchestration is used synonymously. Is the process specification detailled enough that it can be exceuted by a process engine, it is called an executable process. A private process contains all activities whereas a public process only contains all activities and events that are needed for the message exchange with partners.
Notation[edit]
Colours have no meaning, but can be used.
Diagrams[edit]
- Process Diagram
- no or only one pool
- no messages
- Collaboration Diagram (usually two or more Pools and the Message Flow)
- Choreography Diagram (details of a conversation between participants)
- Conversation Diagram (overview of who talks to whom)
Choreography Diagram[edit]
A choreography focuses on the exchange of information (Messages) between Participants. BPMN Choreographies also have activities that are ordered by Sequence Flows. These Choreography Activities consist of one or more interactions between Participants. These interactions are often described as being message exchange patterns (MEPs). A MEP is the atomic unit (Activity) of a Choreography. Choreographies exist outside of or in between Pools.
Choreographies can have the following elements:
- Choreograpy Activities:
- Choreograph Task
- Global Choreograph Task
- Sub-Choreography
- Call Choreography
- Choreograph Task
- Sequence Flow
- Event
- Gateway
- Message
- Swimlane
Choreography Activity[edit]
- represents an Interaction, which is one or two Message exchanges between two or more Participants
- Initiator is white, other participants are grey
- can have initiating and follow-up messages as association
Choreography Task[edit]
- is an atomic Activity in a Choreography Process
- Only one initiator
- Markers are:
- Loop
- Multi-Instance
- Initiator has to be part of the predecessor activity
Sub-Choreography[edit]
- contains chereography tasks
- shows all participants of the inside tasks
Conversation Diagram[edit]
One problem of exchanging messages is to map a message to the right process instance. In this context the term correlation is used for messages which refer to each other, the object used for the mapping is called correlation key.
- it is a simplified version of Collaboration
- it has two additional graphical elements that do not exist in other BPMN views:
- Conversation Node elements (Conversation, Sub-Conversation, and Call Conversation)
- a Conversation Link
- a Conversation is a logical grouping of Message exchanges (Message Flows) that can share a Correlation. The logical relation, in practice, often concerns a business object(s) of interest
- a Conversation is the logical relation of Message exchanges
Elements[edit]
The graphical elements are devided into fore categories (Overview):
- Swimlanes
- Flow Elements
- Flow Nodes
- Data Objects
- Connecting Objects
- sequence flow
- message flow
- Artifacts
Swimlanes[edit]
Pools[edit]
Ein Pool ist ein Behälter für einen vollständig abgeschlossenen Prozess. Die Aktivitätenabfolge kann eine Poolgrenze nicht überschreiten, sondern nur innerhalb des Pools modelliert werden. Die Pools interagieren über den Austausch von Nachrichten. Ein Pool kann ein Unternehmen, eine Organisationseinheit, eine Person oder ein Computersystem sein. Ein black-box pool in contrast to a white box pool doesn't show any activities and messages go from or to the pool border. Silver empfiehlt einen Pool pro Prozess zu verwenden und einen white-box pool wie den Prozess zu benennen.
Pools können entlang ihrer Ausdehnung wiederum in Lanes unterteilt werden, wobei ein Pool mindestens eine Lane enthalten muss. Die Frage, ob Pool oder Lane scheint nicht eindeutig zu beantworten sein. Kriterien könnten sein:
- ist Prozessinformation z.B. Status notwendig, dann Lanes
- ist Änderbarkeit oder Transparenz notwendig, dann Pool
- Prozess- und Bearbeitungsübergänge, dann Pool
Since BPMN 2.0 there is a vertical mulit-instance (no sequential, only parallel) marker to define multi-instance Participants.
Lanes[edit]
Eine Lane repräsentiert jeweils eine ausführende Einheit (Rolle, Funktion, Position). Möglich ist auch eine Lane pro System (alternativ Kennzeichnung der Activities durch eine System-spezifisches Icon). Nach 2.0 repräsentiert eine lane abstrakt gesprochen eine category, eine Menge von lanes ein category set. Für einen Prozess kann es mehrere category sets geben, die jeweils verschiedene Sichten auf den Prozess wiederspiegeln.
- Activities may not cross lane borders
Flow Objects[edit]
All Flow Objects that do not have an incoming Sequence Flow (i.e., are not a target of a Sequence Flow) shall be instantiated when the Process is instantiated.
Activities[edit]
Overview in BPMN Activities:
Activites can be atomic or non-atomic (compound).
If the Activity has multiple incoming Sequence Flows, then this is considered uncontrolled flow. This means that when a token arrives from one of the Paths, the Activity will be instantiated. It will not wait for the arrival of tokens from the other paths. If another token arrives from the same path or another path, then a separate instance of the Activity will be created (it could be seen as an implicit XOR before the activity).
Multiple Outgoing Sequence Flows can be used (see figure top-right). This represents uncontrolled flow.
If an Activity has no incoming Sequence Flows, the Activity will be instantiated when the containing Process or Sub-Process is instantiated. Exceptions to this are Compensation activities, Link intermediate event, Event Sub-Process
Activity Marker[edit]
Activity markers are:
- Loop marker (reference to LoopCharacteristics is set and not NULL)
- Multi-Instance (Parallel or sequential Multiple Execution Marker)
- Compensation Marker
Loop[edit]
An Loop Activity defines looping behavior based on a boolean condition and has an additional attribute loopCounter which is set by the process engine. An attribute defines if the test is evaluated at the beginnnig or end of a loop iteration.
Multi-Instance[edit]
The Multi-Instance Activity is somehow a specialization of a Loop Activity because of the BPMN spec class diagramm. The behavior of when the token is passed on is a matter of configuration (BPMN 2.0 spec page 432). If a Interrupting Boundary Event is attached all instances are cancelled.
Compensation[edit]
Compensation is concerned with undoing steps that were already successfully completed, because their results and possibly side effects are no longer desired and need to be reversed. To be compensated, an Activity must have a boundary Compensation Event or contain a Compensation Event Sub-Process. Compensation is triggered by a throw Compensation Event, which typically will be raised by an error handler, as part of cancellation, or recursively by another compensation handler. Compensation of a failed Activity results in an empty operation. If compensation is triggered for a Multi-Instance Sub-Process compensation is triggered for all instances, but only if all its instances have completed successfully (BPMN 2.0 spec page 433).
Lifecycle[edit]
An Activity undergoes a specific Lifecycle (see BPMN Visio -> Activity Lifecycle). The Activity states are:
- Activated
- In execution
- Completed
- In Compensation
- Compensation
- In Error
- In Cancellation
- Cancelled
Task[edit]
- is atomic
- starts immediately after the predecessor activity, this is at least from the modeling view also true for user tasks*
- can have markers:
- Loop
- Multi-Instance
- Compensation
- Loop and Compensation
- Multi-Instance and Compensation
- task type can be represented by an icon. Task types are:
Send Task[edit]
- A Send Task is a simple Task that is designed to send a Message to an external Participant. Once the Message has been sent, the Task is completed.
- The difference to a throwing Message Intermediate Event is:
- it can have a Multi-Instance marker
- it can have boundary events
Receive Task[edit]
- A Receive Task is a simple Task that is designed to wait for a Message to arrive from an external Participant. Once the Message has been received, the Task is completed.
- Can start a process, but must not have any incoming sequence flow in this case. In this case the envelope is inside a circle.
User Task[edit]
- A User Task is executed by and managed by a business process runtime. Attributes concerning the human involvement, like people assignments and UI rendering can be specified in great detail.
- A User Task is a typical “workflow” Task where a human performer performs the Task with the assistance of a software application and is scheduled through a task list manager of some sort.
Manual Task[edit]
- A Manual Task is a Task that is expected to be performed without the aid of any business process execution engine or any application. An example of this could be a telephone technician installing a telephone at a customer location.
- A Manual Task is neither executed by nor managed by a business process runtime.
Business Rule Task[edit]
- A Business Rule Task provides a mechanism for the Process to provide input to a Business Rules Engine and to get the output of calculations that the Business Rules Engine might provide.
Service Task[edit]
- A Service Task is a Task that uses some sort of service, which could be a Web service or an automated application.
- should be used for synchronous calls
Script Task[edit]
- A Script Task is executed by a business process engine. The modeler or implementer defines a script in a language that the engine can interpret. When the Task is ready to start, the engine will execute the script. When the script is completed, the Task will also be completed.
- has exactly one input set and at most one output set
Sub-Process[edit]
- Sub-Types are:
- Markers are:
- Loop
- Multi-instance
- Compensation
- Ad-Hoc
- Compensation and Ad-Hoc
- must start with at least one undefined Start Event, but more than one are confusing
- Start Event can be drawn to the boundary
- if a pool is used the name must be the same as the parent process, if there is no pool there is an implicit one of the parent process
- can also shown in a BPD inline/expanded
- can be an embedded Sub-Process or an global Sub-Process
- Embedded Sub-Process may only have on None Start Event
- Embedeed Sub-Process may not have an pools or lanes
- Embedeed Sub-Process have access to the parent process data
- may contain lanes
- completes when all tokens have reached an End Event
- the exception flow happens immediately, triggering the next downstream, the sequence flow (normal flow) does not get executed
Ad-hoc Sub-Process[edit]
An Ad-Hoc Sub-Process or Process contains a number of embedded inner Activities and is intended to be executed with a more flexible. The Ad-Hoc Sub-Process contains only Activities, Sequence Flows, Gateways, and Intermediate Events. An Ad-Hoc Sub-Process may also contain Data Objects and Data Associations. The Activities within the Ad-Hoc Sub-Process are not required to have incoming and outgoing Sequence Flows. However, it is possible to specify Sequence Flows between some of the contained Activities. The contained Activities are executed sequentially or in parallel, they can be executed multiple times in an order that is only constrained through the specified Sequence Flows, Gateways, and data connections. After completion of an inner activity an completion condition is evaluated, so the sub-process might be completed by meeting the condition without having started some of the activities.
Event Sub-Process[edit]
- allow to handle an Event within the context of a given Sub-Processes or Process
- is a specialized Sub-Process that is used within a Process (or Sub-Process)
- when the triggeredbyEvent attribute of Sub-Process is true
- has no in-coming and out-going sequence flows
- MAY or MAY NOT occur while the parent Process is active, but it is possible that it will occur many times
- An Event Sub-Process MUST have one and only one Start Event
- has access to all data of the surrounding Sub-Process
- they cannot have attached boundary Events
- becomes initiated, and thus Enabled and Running, through the Activity to which it is attached
- There are two possible consequences to the parent Process when an Event Sub-Process is triggered:
- the parent Process can be interrupted (cancels execution of the enclosing Sub-Process, identified by an interrupting start event (if the isInterrupting attribute of its Start Event is set))
- the parent Process can continue its work (not interrupted, identified with an Non-interrupting Start Event) (enclosed runs parallel)
- If the parent Activity enters the state Completing, it remains in that state until all contained active Event Sub-Processes have completed.On the other hand the subsequent Activity of the Sub-Process with the Event Sub-Process will not be triggered until all Activities within the Sub-Process are finalized although the Event Sub-Process is already completed.
- there are special Event Sub-Processes
Compensation Event Sub-Process
- A Compensation Event Sub-Process can recursively trigger compensation for Activities contained in its parent (see OMG spec example)
Transaction Sub-Process[edit]
- A Transaction is a specialized type of Sub-Process that will have a special behavior that is controlled through a transaction protocol (such as WS-Transaction).
Call Activity[edit]
- is a wrapper for a globally defined Process or Task that is reused in the current process.
- A Call Activity has a thick border, it has the Sub-Process marker if it calls a process and it is collapsed.
- the called process has to have at least one None start event
- in BPMN 1.2 it was called re-usable Sub-Process
- Each time the Start Event is triggered while the parent Process is active, then the Event Sub-Process will start
Global Task[edit]
- a Global Task is a reusable task than can be called by a Call Activity
- The following types are available for Global Tasks:
- User Task
- Manual Task
- Script Task
- Business Rule Task
Events[edit]
Overview in BPMN Events
BPMN does not require to model events, but if there is a start event there has to be an end event and the other way round. This applies to different levels, so a surounding process may have a start, but a enclosed sub-process may not have a start event. Start event must not have an incoming sequence flow.
If the event has multiple incoming sequence flows, then this is considered uncontrolled flow. This means that when a token arrives from one of the paths, the event will be enabled (to catch or throw). It will not wait for the arrival of tokens from the other paths. If another token arrives from the same path or another path, then a separate instance of the Event will be created.
There are three types:
- Start Events (thin line)
- Intermediate Events (double line)
- End Events (thick line)
and two flavors:
- throwing (e.g. all end events are throwing)
- catching (e.g. all start event are catching)
Start Events[edit]
- There are six different Start events for starting a Process or a Event Sub-Process. The Event Sub-Process Start Events can be interrupting or Non-interrupting:
- None/undefined/unspecified start event
- Message Start Event
- Timer start event
- Signal Start Event
- Conditional Start Event
- Multiple Start Event (one out of many events)
- Parallel Start Event (all out of many events)
- There are three additional interrupting Event Sub-Process Start Events
- Escalation Start Event
- Error Start Event
- Compensation Start Event
- Since BPMN 2.0 there are two start gateways:
- Start events are always catching.
- There can be more than one start event. For each event a separate process instance is started. There can also be none start event, but it's not recommended.
- There should be only one undefined start event.
None Start Event[edit]
- the None/undefined/unspecified start event represents normally the manual process start by an user
- if there are multiple None Start Events the naming is important if the Events are different or the same
- if there are multiple None Start Events in a Sub-Process only one triggered either by a targetRef attribut or by chance
Message Start Event[edit]
Compensation Start Event[edit]
- The Compensation Start Event MAY NOT be used for a top-level Process
Timer Start Event[edit]
- A specific time-date or a specific cycle (e.g., every Monday at 9am) can be set that will trigger the start of the Process.
Signal Start Event[edit]
- A Signal is for general communication within and across Process levels, across Pools and between Business Process Diagram
- There is a source but no specific intended target
Conditional Start Event[edit]
- triggered when condition becomes true
- triggered again when condition became false and then true again
Multiple Start Event[edit]
- starts if one out of many events occurs
Parallel Start Event[edit]
- several disjoint start events must occur once to create a process instance
Event-based Start Gateway[edit]
- no incoming sequence flow to gateway
- process instance will be start if one of the events of the outgoing path is catched
- a additional Event starts a new Process instance
- could be modelled with a None Start Event and following Event-based Gateway, but in this case a process instance is already there
Event-based Parallel Start Gateway[edit]
- all Events which in the sequence have to be there to start the Process
Intermediate Events[edit]
- Intermediate can be split in catching und sending/throwing.
- Catching/receiving intermediate events are waiting until the event arrives, throwing events are throwing and continuing
- there are no throwing timer events, just catching
- Intermediate events at an activity borders are catching events, listening for the trigger and called boundary events. They can be located anywhere at the border.
- boundary events can be interrupting (solid line) or non-interrupting (dashed line). The interrupting event stops the activity immediately, including running Event Sub-Processes
- Error, Compensation and Cancel Event are always interrupting (non-interrupting make no sense)
- Compensation is only called, if activity is completed
- boundary events are listening as long the activity is running
- None intermediate events can e.g. be used to model state transitions of objects
- there are 12 intermediate events:
- None/undefined Intermediate Event
- Message Intermediate Event
- Timer Intermediate Event
- rule/condition
- Error Intermediate Event
- Signal Intermediate Event
- Link Intermediate Event
- Compensating Intermediate Event
- Escalation Intermediate Event
- Cancel Intermediate Event
- Multiple Intermediate Event
- Parallel Intermediate Event
None Intermediate Event[edit]
- is used as a throwing event to model some state changes of the process
- not allowed on a boundary
Message Intermediate Event[edit]
Timer Intermediate Event[edit]
- at boundary in can be a stop-watch which starts when the activity starts or a alarm at a specific date/time
Error Intermediate Event[edit]
- there is a throwing and catching Error Intermediate Event
- Catching Error Intermediate Event is only for boundary and always interrupting, in case of multi-instances all instances are interrupted
- in case of boundary catching the Sub-Process was cancelled and the data is not available and potentially lost. This could be solved by an catching Event Sub-Process Start Event.
Signal Intermediate Event[edit]
- a Signal is an undirected message
Link Intermediate Event[edit]
- conncecting sequence flow on different pages via a link id
Compensation Intermediate Event[edit]
- By default, the compensation throwing Event waits for the completion of the triggered compensation handler. Alternatively, compensation can just be triggered without waiting for its completion, by setting the throw Compensation Event’s waitForCompletion attribute to false
- Compensation handlers are associated to an Activity by a boundary catching Compensation Event. The handler can be triggered later in the process flow and is only executed if the Activity is completed successfully (other boundary event can only be triggered if the Activity is active and not completed).
- Triggered Compensation only refer to the own Process/Pool.
Escalation Intermediate Event[edit]
- meant for escalating to a higher level of responsibilities
Cancel Intermediate Event[edit]
- must be attached to a boundary of a Transaction Sub-Process
- will direct the flow after the Transaction has been rolled back and all compensation has been completed
Multiple Intermediate Event[edit]
- Catching if one of many events
- Throws all events
Parallel Intermediate Event[edit]
- no throwing, only catching
- all Events have to be there, to trigger the catch
End Events[edit]
- End Events signifies the end of a path in a process or subprocess.
- End Events consume tokens.
- End Events are always throwing.
- there can be more than one End Event.
- a process instance lives until the last token arrived at an end event or a process terminating end event is reached. If the process is a Sub-Process it can be stopped prior through interrupting Intermediate Events. In this case the tokens are consumed by the Intermediate Event attached to the boundary.
- there six different end events:
- None/undefined
- message end event
- signal end event
- error end event
- escalation end event
- cancel end event
- multiple consequences end event
- terminating end event
Signal End Event[edit]
- for loose coupling (publisher subscribe)
Error End Event[edit]
- reaching in a process or subprocess immediately ends that process level, even if path are active
- the result can only be catched by an (nearest enclosing) intermediate error event attached to the subprocess boundary
- does not trigger compensation (different from Cancel End Event)
Escalation End Event[edit]
- like error end event, but process or subprocess is not aborted if there are still active path, so it triggers an additional activity
Cancel End Event[edit]
- another special end event, it's only used in transactional subprocess
- it interrupts the process or subprocess like the error end event
Terminating End Event[edit]
- ends the process level, even if there running paths
- doesn't propagate a result signal
- if it ends a subprocess, the next process level continues the normal flow
Gateways[edit]
- Symbols see BPMN Gateways
- Gateways have 'routing rules' (to distinguish them from 'business rules', which have a more general scope). The routing rules are hardcoded in the process model, business rules are defined independently e.g. in a separate database
- Gateways can have multiple outgoing paths
- Default outgoing path is always the only outgoing path, because it is only used when no condition fits
- the merging gateways has to be the same as the splitting gateway
XOR or Data-based Exclusive Gateway[edit]
- also called 'split and merge'
- exactly one outgoing path gets the token
- graphical X can be ommitted
- issues:
- only one outgoing path gets the token, but what if condition leads to two, who will be the first and only (evaluation number)
- better to define a default path if condition leads to no path
- if the condition leads to no or more than one outgoing paths is a modelling error, if the process is executed such that none of the conditional Expressions evaluates to true, a runtime exception occurs
- merge if one incoming branch (it does not block additional tokens that come after the first one)
Parallel Gateway[edit]
- split to all out pathes
- other names: fork and join, parallel join, AND-join, synchronizing join
- merge only, when all ingoing paths have the token
- join may only be used to merge path that are unconditionally parallel
- doesn't have to be merged, can end in separate end events. In that case process or subprocess isn't finished until all end events are reached.
Inclusive Gateway[edit]
- one or more outgoing path gets the token
- other name: OR
- merge only, when all paths which got the token have the token
- issues:
- depending on the complexity like loops before the merge it is hard to tell (and implement by a process engine) how many tokens should be waited for
Complex Gateway[edit]
- 1 to n of n outgoing path based on rules get the token
- join n of m incoming paths have the token based on a rule
Event-based exclusive Gateway[edit]
- selects exactly one outgoing path based on the incoming event
- any other later event is ignored
- possible incoming events are Message, Timer, Condition, Signal and Multiple
- Event-Based Gateways are configured by having outgoing Sequence Flows target an Intermediate Event or a Receive Task in any combination
- it is never used as merge, merge is performed by a Parallel Gateway
- see also Event-based Gateway as process start event
Connecting Objects[edit]
Sequence Flow[edit]
- may not go out of a pool
Conditional Flow[edit]
Default Flow[edit]
Exception Flow[edit]
Message Flow[edit]
- message means communication between a process activity or event and some entity outside the process
- message in reality can be phone call, fax or even face-to-face
- message flows are only allowed between different pools
- tasks can only be completed when the the message to this task has arrived
- if the same Activity is sends a Message and receives a Message it is called synchronous Message flow
- Intermediate Send or Receive Events may only have one incoming or outgoing message flow, whereas Message Start or End Events may have multiple
Compensation Association[edit]
Data Objects[edit]
Data Objects provide information about what activities require to be performed and/or what they produce, Data Objects can represent a singular object or a collection of objects. The lifecycle of a Data Object is tied to the lifecycle of its parent Process or Sub-Process. When a Process or Sub-Process is instantiated, all Data Objects contained within it are also instantiated.
Data Input and Data Output provide the same information for Processes.
A Data Association uses the same notation as a directed Association to connect Data Objects to Activities. Data Associations are used to move data between Data Objects
A DataStore provides a mechanism for Activities to retrieve or update stored information that will persist beyond the scope of the Process.
Artifacts[edit]
Associations[edit]
- is used to link information and Artifacts with BPMN graphical elements
- no flow information
- can be directional
- from a sequence flow or message flow to data object it's non-directional, when linked to an activity or event it is directional
Text Annotation[edit]
- can but have not been connected to a BPMN object
Group[edit]
- is an Artifact that provides a visual mechanism to group elements of a diagram informally
- is not constrained by restrictions of Pools and Lanes
- can be used in all diagrams
- may have a (category) name
BPMN XML Specification[edit]
Modeling Conventions[edit]
- use of gateways
- implicit or explicit start events
- implicit or explicit end events
- avoid multiple start events
Questions[edit]
- does an activity need an outgoing flow (even if it has a boundary event)
- send task semantics (z.B. in Method & Style page 62, http://www.processmodeling.info/posts/highlights-from-bpmn-2-0-activity-types/) vs. message event
- is there a parallel start in BPMN 2.0 as mentioned by Method & Style page 76
- intermediate events in sub-processes work only if sub-process has the token?
- Pool with multiple instance icon (s. [8])
- can a Event Sub-Process within a Sub-Process be triggered if the enclosing Sub-Process is already completed
- there is intermediate throwing compensation event, but it is said that the compensation is not started before the activity to be compensated is completed
- By default, compensation is triggered synchronously, that is, the compensation throw Event waits for the completion of the triggered compensation handler. Alternatively, compensation can just be triggered without waiting for its completion, by setting the throw ompensation Event’s waitForCompletion attribute to false
- Compensations are called implicitly by an Cancel Event, at least this is stated in 'The microguide ..." on page 96, and BPMN 2.0 spec could be understand like that as well
- which diagramms can contain pools
- conversation links without split of the line at the end
- does the complex gateway block any token if the merge was applied once
- Eine Lane hat keine Semantik?
- Does a compensation marker only be used for an Activity with an incoming compensation association?
Workflow Patterns[edit]
Workflow patterns are here, the first version contained 22 patterns, the revised version 42. Some patterns are a specialization or a composition of another. Graphical Examples can be found here.
Control-Flow Patterns[edit]
Basic Control-Flow Patterns[edit]
| Nr. | Workflow Pattern | Description | BPMN Modelling |
|---|---|---|---|
| WCP1 | Sequence | Sequence Flow | |
| WCP2 | Parallel Split | Parallel Gateway or multiple flows out of an activity or Sub-Process with multiple unconnected (parallel) Activities without a Start Event | |
| WCP3 | Synchronization | wait until all incoming path have a token | Parallel Gateway Merge/Join or a single flow out of a Sub-Process with multiple unconnected (parallel) Activities without a Start Event |
| WCP4 | Exclusive Choice | only one outgoing path get the token | Data-based Exclusive Gateway |
| WCP5 | Simple Merge | each token from the incoming paths is forwarded | Data-based Exclusive Gateway or multiple flows in one activity |
Advanced Branching and Synchronization Patterns[edit]
| Nr. | Workflow Pattern | Description | BPMN Modelling |
|---|---|---|---|
| WCP6 | Multi Choice | a token is split to one or many of the outgoing paths | Inclusive Gateway or multiple flows out of an activity with gateway and condition |
| WCP7 | (Structured) Synchronizing Merge | merge into one token if the token arrives from all incoming path which have a token | Inclusive Gateway fork and Inclusive Gateway merge |
| WCP8 | Multi Merge | multi-choice (WCP6) path are merged and each token is passed on | Inclusive Gateway fork and Data-based Exclusive Gateway merge or uncontrolled parallel flow with a uncontrolled merge |
| WCP9 | (Structured) Discriminator | merge of parallel split only let the first (or concurrent token) through and blocks delayed token of other pathes | Complex Gateway merge |
| WCP28 | Blocking Discriminator | blocks parallel split for token behind the first token until the merge has performed | BPMN spec indidcates Complex Gateway |
| WCP29 | Cancelling Discriminator | concurrent tokens of a parallel split are merged, merge cancels all other delayed parallel tasks | |
| WCP30 | Structured Partial Join | n of m parallel splits are merged, delayed tokens will be not be forwarded by the merge | pattern description and BPMN spec indidcate Complex Gateway |
| WCP31 | Blocking Partial Join | n of m parallel splits are merged, blocks parallel split for token behind the first token until the merge has performed | BPMN spec indidcates Complex Gatewayor see this pattern example |
| WCP32 | Cancelling Partial Join | n of m parallel splits are merged, merge cancels all other delayed parallel tasks | see this pattern example with signal event |
| WCP33 | Generalized AND-Join | merge handling multiple tokens in the same instance, merge if all path of the merge have an active token | |
| WCP37 | Local Synchronizing Merge | example for a merge of non block-oriented process flow | according to BPMN specification Inclusive Gateway |
| WCP38 | General Synchronizing Merge | example for a merge of non block-oriented process flow with loops | according to BPMN specification Inclusive Gateway |
| WCP41 | Thread Merge | merges subsequent tokens in one path to one token | |
| WCP42 | Thread Split | splits one token to n subsequent tokens in one path | pattern example indicates multi-instance marker |
Multi Instances Patterns[edit]
| Nr. | Workflow Pattern | Description | BPMN Modelling |
|---|---|---|---|
| WCP12 | Multiple Instances without Synchronization | ||
| WCP13 | Multiple Instances with a priori Design-Time Knowledge | likely Multi-Instance Activity | |
| WCP14 | Multiple Instances with a Priori Run-Time Knowledge | likely Multi-Instance Activity | |
| WCP15 | Multiple Instances without a priori Run-Time Knowledge | ||
| WCP34 | Static Partial Join for Multiple Instances | n of m multiple instance have to be finalized to forward the token, rest has only be finished if the token arrives again at the multi-instance task | likely Multi-Instance Activity |
| WCP35 | Cancelling Partial Join for Multiple Instances | n of m multiple instance have to be finalized to forward the token, rest will be cancelled | |
| WCP36 | Dynamic Partial Join for Multiple Instances | likely Multi-Instance Activity |
State Based Pattern[edit]
| Nr. | Workflow Pattern | Description | BPMN Modelling |
|---|---|---|---|
| WCP16 | Deferred Choice | except one all multiple parallel path are cancelled due to a decision made later in the process flow by process interaction | Event-based exlusive Gateway |
| WCP17 | Interleaved Parallel Routing | process part consists of multiple task which can be performed in any order but only one at the same time | BPMN spec indicates Ad-Hoc Activity |
| WCP18 | Milestone | parts of a process flow are enabled if a specific state (milestone) of the process is reached like a specific task was executed | |
| WCP19 | Critical Section | like in programming only one process branch may be in this section, others are blocked | |
| WCP40 | Interleaved Routing | tasks of a set can be executed in any order, but not parallel and just once | partly by Ad-Hoc Sub-Process, but no ensurance of only one execution |
Iteration Pattern[edit]
| Nr. | Workflow Pattern | Description | BPMN Modelling |
|---|---|---|---|
| WCP10 | Arbitrary Cycles | ability to model XOR gateways which lead to loops | |
| WCP21 | Structured Loop | ability to model conditional loops either with a pre- or post-test | BPMN spec indicates Loop Activity |
| WCP22 | Recursion | ability to model recursion | Workflow pattern homepage indicates no BPMN support |
Resources[edit]
- My own diagrams file:///C:\Uwes\Documents\Software_Development\Modeling\BusinessProcessModeling\BPM.vsd saved to C:\Uwes\xampp\htdocs\VisioExports\BPM.htm
- http://camunda.org/bpmn/reference/ good reference for BPMN 2.0
- C:\Uwes\Documents\Software_Development\Modeling\BusinessProcessModeling\BPMN_2.0.vss
- Short, good Introduction C:\Uwes\Documents\Software_Development\Modeling\BusinessProcessModeling\Introduction_to_BPMN.pdf
- Poster mit Elementen C:\Uwes\Documents\Software_Development\Modeling\BusinessProcessModeling\BPMN2_0_Poster_DE.pdf
- BPMN Wikipedia http://de.wikipedia.org/wiki/Business_Process_Modeling_Notation Wikipedia
- file:///C:\Uwes\Documents\Software_Development\Modeling\BusinessProcessModeling\BPMNByExample.pdf
- file:///C:\Uwes\Documents\Software_Development\Modeling\BusinessProcessModeling\kollaborationen-choreographien-und-konversationen-in-bpmn-20.pdf