BPMN basics by examples
Business Process Model and Notation (BPMN) is a graphical representation for specifying business processes in a business process model Wikipedia.
Tip
This is an opinionated introduction to some of the most common BPMN 2.0 symbols and their use. For a more complete overview, check Camunda BPMN Tutorial, Camunda BPMN Primer or take a free Camunda BPMN 2.0 online course.
Note
This starter intentionally excludes event based gateways, most of the BPMN messaging symbols, and everything not yet supported by Camunda Zeebe engine (in time of writing).
Sequence flow
Naming of elements
Gateways and paths
Concurrent tokens
Multiple end events
Intermediate events
Alternative start events
Events at boundary
Errors at boundary
There are two kind of errors in process automation:
Application errors, which are caused by technical issues like network outages or programming errors, and are fixed by retrying the failing part of the process once the technical issue has been solved.
Business errors, which are known exceptions in the process itself, and cannot be fixed by simply retrying, but must be expected and handled on the BPMN diagram level instead.
Embedded sub-process
Event sub-process
Multi-instance
Available task types
The examples above, use only so called undefined task. It is useful in drafting and documenting processes, but not really in actually implementing and automating the processes. Obviously, there are many more concrete task types.
User task
Manual task
Service task
Service task (custom)
Call activity
Business rule task
This imaginary bus ticket pricing is an example, in which decision table should be superior to possible alternatives, like “just coding it”:
When Age integer | And Discount group string | And Travelling alone boolean | Then Price double | Annotations | |
---|---|---|---|---|---|
1 | [0..4] | 0.00 | - | ||
2 | [5..6] | false | 0.00 | - | |
3 | [5..6] | true | 2.00 | - | |
4 | [7..11] | 2.00 | - | ||
5 | >=12 | "student" | 2.80 | 20 % discount | |
6 | >=12 | "pensioner" | 2.80 | 20 % discount | |
7 | >=12 | not(["student", "pensioner"]) | 3.50 | Regular price |
Note
This example is designed for Camunda Platform 7, because Camunda’s DMN Simulator does not yet support alla value types available in Zeebe.