For now, we will be getting started with a simple process, to get to know the basics of the tool and the language. Let’s take a web shop as an BPMN example for our first model. One of the core activities of a webshop, is of course order fulfillment. High-level, we can distinguish the following steps in an order process:
- Receive an order,
- Check credit,
- Fullfill order and
- send invoice.
Let’s start with visualizing these steps in a simple BPMN model. The model should look something like this:
The BPMN diagram above is not yet a real process model. A real process model, shows all activity flow paths from start to end. So if there are activities that could be performed either successfully or unsuccessfully, this would mean that the model should include the paths for both conditions.
BPMN Example With Gateways
In the model we just created, there are two instances which could and should be tested by a gateway: the activity ‘check credit’, and ‘fulfill order’. If any of those two activities is not successful, the order is not completed. We should thus add another possible end state to the diagram: order failed. Two end-states means two end-events, labeled with the name of the end-state. This is not part of the BPMN specification but is part of best practice. It helps to keep things simple.
How far you want to differentiate end-states and process steps is up to you. In a real-world web shop scenario, the seller would probably follow-up on the order if it is out of stock, resulting in a different process flow and possible different end-states. Also, the check credit activity in this model is atomic, we can not see of which sub processes the activity is compiled. If the activity was compound, there might have been more possible outcomes.
Based on the initial description of this particular process, we should assume that we are only interested in the process that leads to order complete and order failed. This model is thus sufficient.
In modelling real-world processes, your research question or the process you want to improve dictates the level of detail you will add in your model. Depending on your stakeholders and scoping of the process, you can add as much detail as you like.
BPMN Example Diagram with Pool
Let’s take the BPMN example we just created, containing the top-level order process. Remember that a pool should be viewed as a container for an entire process. In this model, we can thus simply place the entire end-to-end process inside the pool and give the pool the name of the process.
BPMN Example with Pools and Lanes
We just updated our order process BPMN example model with a pool and name that represents the process. Now we will add more detail to the order process diagram by adding lanes. A lane is a sub-partition within a pool and is used to organize and categorize activities of a process. Most commonly, a lane represents an organizational role, like developer, sales or manager. A pool, which contains an entire process, can thus be compiled of several lanes inside it.
Now let’s add lanes to the order process pool we already created. We add three lanes to the pool: one for sales, one for finance, and one warehouse, and put the activities in the right lanes.
BPMN Diagram with Different Task Types
As discussed earlier, activities are the only flow objects in BPMN that represent work. An activity is either a subprocess, or a task. In the level one pallet of BPMN, tasks are further specified in three task types. The different task types, are visualized by different icons inside the task shape.
- The first task type is defined as ‘user’. This task type represents any atomic activity carried out by a human. The task differentiates itself with the person symbol.
- The second task type, is defined as ‘service’. The service task type represents any automated atomic activity. Automated means there is no user involved in this process step. Its visualized by a gear symbol inside the task.
- The third event type is labeled abstract task type, or none task, which is the type we used so far and has no symbol inside it.
Expanding the BPMN Diagram Example
Let’s expand the BPMN Example model with the different task types we just discussed. Receive order, is a user task. So we label the task with the person symbol. Check credit, is usually an automated process step, where no user is involved. We will thus label this step as service task. Fulfill order is not a task but a subprocess. So let’s change this activity to a subprocess by adding the + symbol. Sending an invoice is nowadays mostly and luckily an automated process step, but let’s assume the invoice is send manually. Change the send invoice to a user task. Your BPMN Example diagram should look something like this.