I am puzzled by the following:
I have modelled a customer (pool) and several tasks and sub-processes in our company (pool with lanes). Some of the tasks interact with the pool of the customer through message flows. However, some of the tasks within the sub-process also interact with the customer.
Now I see a few options:
- copy the pool of the customer into the sub-process
- connect a message flow from the customer to the border of the sub-process
The first would create multiple instances of the same pool (customer), some of them independent and some of them included within the pool of another organization. Further more it could be confusing in the end, as the only indicator to recognize two items as being ‘the same’ would be the name.
Option two leaves the interacting task within that sub-process unspecified (any of the tasks within the sub-process could be interacting with the pool)
Now I am not that familiar with BPMN to be sure what is the best modelling solution, or maybe I am just overlooking an option?
If not, I was wondering whether there is any objection to let sequence flows and message flows cross the borders of sub-processes to let them reach a task within there?
P = Pool
() = sub-process
task = task
<— = message flow
a) sub-process to pool:
<—(task1; task 2)
b) task to repeated pool in sub-process
and possibly even
c) task to repeated pool in sub-process plus sub-process to pool
d) pool to task within sub-process
----(->task1; task 2)
Actually, about the same puzzle exists for connecting some level-m document to a level-n task (within a sub-process).
Again: I am not sure that this does not violate against BPMN-specs
Have a nice day!
Only message flows can cross pool limits and therefore your proposal is violating the BPMN specification. I don’t know what you mean with document connecting to task so I can decide about the second puzzle.
I think the idea here is that from your internal process, you trigger some customer process and you’re waiting for the answer before you move to the next task. This can be represented by a “SEND task” that will send the request to the customer and then an intermediate event to wait the answer from the customer. you can use a event based gateway if depending on the answer you trigger different tasks.
Thanks and have a nice day,
Thank you for your solution Patrice.
I want to model several tasks that can be temporarily interrupted by a lack of information. This should trigger a decision process over multiple department as for who is to contact the customer (a salesman might already have made an oral agreement, for example, so he should be consulted first).
If I let this process show as an exception each time, I will create a very confusing and extensive model. Also, I think I cannot model it once and then use links at each task (replacing the messages as you suggested), as it would not be specified to which of multiple tasks the answer should return.
I guess another solution could be to use an independent sub-process and model the pools again in there (so I can model the mentioned decision process at the highest level) and then reduce clutter by using reference sub-processes to this independant sub-process?
sorry I also mentioned sequence flow, that would indeed cause a violation.
I made an example to better illustrate what I mean.
I just discovered I can draw a message flow from a pool to a task within a sub-process, without any complaint. The opposite however is not possible and immediately indicates an invalid connection. It then shows, that the message flow from pool to task is also invalid.
A message flow to a sub-process is possible and valid, but contains less information, as it is not clear which tasks interacts with the Customer.
About the same holds for the document shown: I can associate the sub-process with the document, but not a task within the sub-process.
Would this violate BPMN-rules? (and if not, would it be convenient to model this way?)
The message flow crossing the Sub-process border is violating the BPMN rules (Jick??). A sub process should be seen as a black box not interfering with the outside world excepted through Start, End and Boundariy Intermediate event. No flow or association is supposed to cross the border of the sub-process.
Regarding the document, you can put it inside the Subprocess or keep it at a higher level or do it both using the Copy View function which will copy a view of that model menaing updating one will update the other!
Regarding your process issue, you have I think 3 options:
you consider that as being part of the procedure when executing task 1 in which case you don’t need to model it in you process as a separate task but just document in task 1 that you can contact the customer in different case.
you consider “resolving issue with the customer” as a separate process which I can trigger from different part of the main process, I would then use intermediate event to represent the fact I’m waiting the result of that sub process.
You do it like you represent it with the Issue process explicitly shown in the main one.
My preference would go for 2 if you really need to document this as part of your process and for 1 if this is more at procedure level.
I just can’t attach an image like you did but i will try through a private message.
thanks, that is a helpful construction.