When to break down my process to multiple pools?

This topic helps me to recognize that I’m almost on the right path of how to use pools thanks to @Ingo_Richtsmeier

However, there are still some concerns, I have a complex process (due to its participant’s interactions, not to its business logic) with many participants (all of them belong to the same organization) and each one does a small task such as review, approve, etc. then forward it to another participant to do its task and so on.

Pools confuse me a lot, starting from how to know when I need a new pool? because a new pool means a new process (not a subprocess) but sometimes I see one process broken down into many pools each represents one participant in one process, then I rethink again and say, okay a pool is not a new different process, it’s still related to the origin process but technically it’s a new process! Is that right?

Then another dilemma is, how to distribute the participants to their corresponding pools? is there a rule or something? or it’s just as flexible as I want so I can have many pools for the same participant?

Should I stick with the (participant/pool) solution even the pool becomes too complex?

I prefer to break down each participant’s group of activities, that are executed at the same time before collaborating with another participant (waiting for work to be done by others then continue). Therefore each pool contains a group of activities.

So the result is, many pools, each one represents a participant’s sub-work (not all work in this pool is done by that participant).

Is it okay to have such pools that are executed in the same engine for the same big process?

Please note that I’m trying to break down my process to multiple pools as much as I can in order to decrease the complexity of the process and to make it more readable due to its huge workflow and its interactions with many participants.

Am I on the right path or misunderstood pool concepts?

At my point of view, If all of participants belong to the same organization, Its better to use only one pool with different lanes. I prefer to use multiple pools when there are some participants out of organization.

Yes, me too at the beginning!. But when I started to model a complex collaborative business process, I started to look for ways for reducing the complexity of the interactions which are the sequence flows between lanes since all participants belong to the same organization).

We usually use a global subprocess to reduce the complexity of the diagram because it has many activities inside, so we exclude them out and that reduces the number of activities inside one pool however, the case here is to reduce the number of interactions which means the number of sequence flows inside one pool

Yes I have the same problem in my model, I am trying to solve it using Link Events and reducing sequence flow overlaps by this way.

1 Like

@moath.alshorman , BPMN Pools are used to represent a process. BPMN lanes can subdivide an organization in a single process, and a BPMN pool can represent a completely separate organization.

A common mistake is to use the same BPMN Pool to represent more than one business process. Each pool should represent only one process. A Pool acts as a container for a full business process, and the process has to be fully contained within the Pool. The sequence flow cannot cross outside the boundaries.

Communication with each other through message exchange elements.

image

A Pool has two basic representations: “white-box” and “black-box”. A white-box representation shows the internal details of the Pool, whereas a black-box representation hides any processes.

Black-box representations are best used when the Pool doesn’t reference a process but only an external process participant. Therefore, black-box pools are commonly named according to the process participant they represent, while white-box pools are commonly named according to the contained process.

Also read about this Avoiding the “BPM monolith” when using bounded contexts blogpost.

Thanks @aravindhrs for your explanation of the pool concepts!

But what do you think that answers of the below question like one unit modeled by many pools?

@moath.alshorman - What did you followed at last? I also need to design the similar process where there are multiple participants of same organisation and they have small tasks to do, the tasks are like TODO, IN PROGRESS, SUBMITTED. Once they submits the task, reviewer can initiate to review but if any task gets rejected, it goes back to TODO task.

Will appreciate your help!