I have some doubts regarding the best way to model the following process.
One user (user1) creates a list of materials to be purchased.
Another user (user2) receives a notification indicating that the list has been created and then sets up a reminder (e.g. in Outlook) for each item on the list to be purchased, since the purchase dates for each material differ (some materials must be purchased before others).
In addition, this same user (user2) must carry out the purchase process each time he/she receives a reminder indicating that the deadline for the purchase has been reached.
I understand that the best way to implement this model and prepare it for automation would probably be to have three pools (user1, user2 and maybe Outlook).
As you can see, user2 performs two independent sub-processes: scheduling reminders in Outlook and making a purchase each time a reminder is received. How should I model this behaviour in the pool of user2? Should I consider two unrelated sequences with independent start events that run completely parallel? Or should I create a none start event followed by a parallel gateway and call in each case a sub-process that waits until the respective notification (shopping list created or shopping reminder received) occurs?
I hope the explanation is clear enough. Otherwise, please let know.
Thanks for your help.
If “Scheduling Outlook Reminders” is considered a single task then a process similar to the one below can serve your business case
If “Scheduling Outlook Reminders” is considered as multiple tasks (one per material item) then a process similar to the one below can serve your business case
Thank you very much for your reply.
I see the point and I understand now what my problem with this model was.
Let me illustrate this to try to make it clearer. Suppose this is the process I wish to model:
Since I know that the “Missing material identified” event cannot be triggered before the “New project created” event, I could also model the first pool using an event based gateway after the “Generate materials list” that would wait for the event “Missing material identified”. I would then execute the task “Add element to material list”, followed by a XOR gateway looping back to the event based gateway.
Concerning the first example, I would have the following questions:
- According to the book Real-life BPMN (4th edition), it is recommended that each process participant gets his/her own pool in the operational model. In the first pool (User 1), there are two parallel, completely independent sequences related to the same process. Is it correct to model them in this way?
- Is having two start events the best approach in the case of the second pool (User 2)?
- I have used sequential Multi instance for pool 2 since they are each call to either “Schedule Outlook reminder” or “Purchase processing” is performed sequentially. The problem I see with this approach is that the input list for the “Schedule Outlook reminder” is static after the event has triggered in both cases (“Materials list created” or “New material added”), but this is not the case with “Purchase processing” since it should only finish after all Outlook reminders have been processed. How would the user know when the task is completed in order to move forward to reach the end event? I believe this is wrong and that I should use a loop.
By the way, concerning the problems I just mentioned, imagine that there were several events that could take place at any time, as depicted below:
Imagine also that event 2 triggers while task 1 is being performed. The token would be consumed and, after the loop, Task 2 would not be executed.
How can such a situation be prevented? How can waiting for asynchronous events be modelled? Are independent start events always required?
Thank you very much for your help.
Thank you very much, @hassang!
From your diagram, I can deduce the answers to my questions.
Just one more question. Is it ok to have decoupled sequences in the same pool as for User 1 in your diagram (and in mine)? Is this the “normal” way of modelling independent sequences for the same participant in a process diagram?