Intro to BPMN (Part 3): Pools and Lanes Are Not Just for Swimming
When Processes Have Multiple Participants.
In the last post, we added the possibility for alternative paths in a process. A person is able to decide if a vacation request is approved or rejected. The process stated clearly what has to be done, but it lacked clarity about who is responsible for which task.
While a supervisor is responsible for the vacation requests approval, they might not be responsible to do changes in the HR system. BPMN offers a possibility to do just that. Let’s take a look.
Dividing a Process Into Separate Lanes
By dividing your process into separate lanes, and assigning different parties to each lane, we are able to place tasks into them, giving the process an additional layer of clarity:
The Employee is the initiator of the process.
The Supervisor is responsible to review the process, make a decision and inform the employee about a rejection.
HR is responsible to update their system.
The model below shows, how the process looks like with a responsibility model.
Each lane represents another participant in our vacation process, so everyone is on the same page on who does what.
The BPMN Building Blocks
Pools
A Pool represents a participant in a process.
It can be an organization, a department or even an external entity.
Pools can also be collapsed, if the process inside is unknown or not relevant.
Lanes
Lanes are subdivisions in a pool.
They’re used to visibly organize and structure the tasks inside of a pool.
What’s Next?
Now we have added some more organizational information to make our process clearer:
All participants of the process know, which tasks are their responsibility.
They also can see dependencies related to their tasks.
Imagine now, that we have multiple departments, all with their own vacation process. The HR department could also be modeled in a separate pool. But how is it possible to communicate between different pools?
In the next post, we will learn about communication between different entities, even if they are not in the same pool. For that, I will introduce message events and message flows.