BPMN Examples

Real-world BPMN 2.0 examples and answers to common questions.

Online Modeler

Our modeler is an online and desktop tool for designing, discussing and sharing BPMN diagrams with your team.

Try Modeler

Overview

We have taught BPMN to thousands of people and we apply the notation in our daily project work since 2007. Below you can find lots of BPMN examples of common modeling problems. Regardless of your specific project or your industry, there are a lot of common questions about using BPMN. In our experience, most of the BPMN examples below are useful to any BPMN user.

We joined the OMG in 2009 as an influencing member. Since then, we have been participating in the development of BPMN 2.0.


BPMN Examples

Business Rules and BPMN


Modeling Scenario

Let's say we want to model a process in BPMN and the process induces some business rules. We will use the example of creating a bill. In order to create the bill, a discount needs to be computed. The sum of the order and the customer type are the relevant criteria to compute the discount.

This is a very simple example which will show us where to apply BPMN and where not to.

The Solution as BPMN 2.0 Diagram

Business Rules and BPMN – solution diagram

Explanation

During modeling, we focus on the process flow. In this example, the process has two steps. A discount is computed before the bill is created. The result is a very simple process.

It does not make sense to model the calculation of the discount itself in the BPMN model. For the rules decision tree, for every additional criteria, the cardinalities will grow exponentially.

Therefore, it makes sense to separate process and business rules.

The Wrong Way to Model It

Business Rules and BPMN – wrong way diagram

Dependent Instances


Modeling Scenario

Let's say we want to model a process with concurring instances. We are using a simple example. If one credit check of a customer is running, we do not want another credit check for the same customer to be performed at the same time.

The reason could be that the total number of credit checks performed influences the result of the check.

Let's assume that we are running a credit check for a customer and we get a second request for the same customer at the same time.

What all solutions have in common is that every new instance needs to check for concurring instances on the data level before starting the actual credit check.

Solution with Signal Event

Dependent Instances – signal event solution

The signal event is the easiest and most compact way to model the interaction between different instances. The problem of the signal is that it functions as a broadcast and does not address any specific instance.

Solution with Message Event

Dependent Instances – message event solution

This solution is a bit more complex, since you need to determine the recipient of the message. However, this is the correct way to solve the problem that occurs in the signal event solution.

Solution with Timer and Loop

Dependent Instances – timer and loop solution

In this example we do not need any communication between instances. The instance itself checks periodically if it can proceed to the credit check.


Four Eyes Principle


Modeling Scenario

We want to model the following situation using BPMN 2.0. For a request (e.g., a payment) two approvals of two different people are needed. A Process Engine should ensure that both approvals are fulfilled before the request is approved.

The Solution as BPMN 2.0 Diagram

Four Eyes Principle – solution diagram

Explanation

We use separate pools for the Process Engine, for the 1st Approver and for the 2nd Approver. This way, we can clearly define who is in control of which process.

The interaction between the user tasks in the engine and between the manual process of the approvers is modeled using message flows.

Variations

Approver as Collapsed Pools

Four Eyes Principle – approver as collapsed pools

Approver Determination with LDAP

Four Eyes Principle – approver determination with LDAP

Monthly Invoicing


Modeling Scenario

This example explains a very common struggle with structuring BPMN 2.0 diagrams. Let's say there is a lawyer who offers legal advice to his customers. The service works as follows: The customers can ask for legal advice whenever they need it.

This example illustrates a very common modeling scenario. It's not the steps of the processes that are difficult, it's the structure of the diagram.

The Solution as BPMN 2.0 Diagram

Monthly Invoicing – solution diagram

The most important aspect of the diagram is its structure.

The Provide Legal Advice process is performed many times per month. The Monthly Invoicing process is only performed once a month. Therefore, these two processes should be modeled as separate pools.

The Wrong Way to Model It

Monthly Invoicing – wrong way diagram

In this example, both processes are mixed into one. This is – at best – a very implicit way to model it.


Additional Information Required after User Task


Modeling Scenario

Let's assume we want to model the following scenario: we want to execute a user task which is performed by a user in a portal. After the user task is completed, additional information might be required.

Solution 1: Request information from another User

Additional Information Required – solution 1: request from user

Solution 2: Request information from a technical service

Additional Information Required – solution 2: request from technical service

Processing a Batch of Orders from a Marketplace


The Situation

We want to model the following scenario using BPMN 2.0: let's assume a company receives orders from different distribution channels. One of these channels is a marketplace. Within certain intervals of time, the orders from the marketplace are fetched as a batch.

The Solution as BPMN 2.0 Diagram

Processing a Batch of Orders – solution diagram

This example shows a very common modeling scenario. We sometimes call it a 1-to-n problem. One process instance (Import of Orders) results in many single process instances of another process (ERP System).


Reassigning User Tasks


Modeling Scenario

This example shows how to model the reassignment of user tasks in BPMN 2.0, a common requirement when the original assignee is unavailable.

Solution 1: Message boundary event and reassignment service

Reassigning User Tasks – solution 1: reassignment service

This makes sense if the engine calls a service to determine the new assignee.

Solution 2: Message boundary event and reassignment rules

Reassigning User Tasks – solution 2: reassignment rules

This makes sense if the engine calls a rule engine to determine the new assignee.

Solution 3: Message boundary event and implicit reassignment

Reassigning User Tasks – solution 3: implicit reassignment

This makes sense if the engine determines the new assignee itself, e.g., by using an expression.


Two Step Escalation


Modeling Scenario

We will use the following example to illustrate how to model a two step escalation using BPMN 2.0. When we want a pizza, we order one. Sometimes the pizza delivery screws up and the delivery takes longer than 30 minutes.

Solution 1: Two Event-Based Gateways

Two Step Escalation – solution 1: two event-based gateways

Advantages of this solution

This solution very explicitly shows how the two step escalation is performed. Timers are modeled separately, followed by their corresponding escalation activities.

Disadvantages of this solution

Using two event-based gateways makes the model larger and leads to a duplication of the "Pizza received" message event.

Solution 2: Receive Task with timers attached

Two Step Escalation – solution 2: receive task with timers

Solution 3: One Event-Based Gateway with a generic timer

Two Step Escalation – solution 3: one event-based gateway with generic timer

BPMN Modeling Styles

Avoid Crossing Flows


Recommendation

This BPMN example is about creating a good layout of process models. The better the layout, the higher the degree of understanding.

Try to avoid crossing flows as much as possible. This will increase understanding of BPMN process models – for both experienced and inexperienced BPMN users.

Good Example of Handling Flows

Avoid Crossing Flows – good example

Counter-example

Avoid Crossing Flows – counter-example

Naming Conventions


Recommendation

Most important: every BPMN symbol should have a label.

Events should be labeled using object + past participle. Tasks should be labeled using object + verb. X-OR Gateways should be labeled with a question.

Good Example of Naming

Naming Conventions – good example

The Generic Version

Naming Conventions – generic version

Counter Example

Naming Conventions – counter example

Symmetric Modeling


Recommendation

We have determined that symmetric structures increase understanding of BPMN process models – for both experienced and inexperienced BPMN users.

Good Example 1

Symmetric Modeling – good example 1

Counter-example

Symmetric Modeling – counter-example 1

Good Example 2

Symmetric Modeling – good example 2

Counter-example 2

Symmetric Modeling – counter-example 2

Use Equal Task Sizes


Recommendation

We recommend to always use equal task sizes. People tend to interpret task sizes although they do not have any semantics in the BPMN standard.

Good Example

Use Equal Task Sizes – good example

Counter-example

Use Equal Task Sizes – counter-example