I received an email today from a reader asking: “If you have multiple call activities that occur within a process pool, is there any reason you can’t create another pool for Call Activities and use that to group the call activities / processes, other than the fact that a sequence flow connection cannot be used?” Again, I think this goes back to the issue of what is a process in BPMN. Recall that a process is simultaneously a collection of activities linked by sequence flow AND an independent actor – an imaginary (or possibly real) process engine – that requests the performers of those activities to do their thing. A Call Activity is just like a subprocess with the exception that the called process is defined independently of the calling process, usually in a separate document. In a Call Activity, the process as an independent actor “calls” the external process, but it does not mean that the performers of the called process are external. Since the Call Activity is an activity in the process, its performers are “inside” the process, so you would not represent the called process as an external pool. If you wanted to represent the called process as an external pool you would use Send and Receive tasks (or throwing/catching Message events), not Call Activity. In that case, the process as an independent actor also effectively “calls” the external process by sending a message, which is the source of the confusion. I would note also that Method and Style asks you to model an end-to-end process as a single BPMN process “if you can” – and the reason why you sometimes cannot has to do with instance alignment, not the actors – so it would generally prefer Call Activity to Send/Receive tasks in this case.
For executable BPMN, there are some additional technical differences between a process called with Call Activity versus a message. With Call Activity, as with a subprocess, data is passed between calling and called process with data associations not messages. Also, the Call Activity and called process are supposed to magically be aware of the other’s state, so if the calling process terminates abnormally (e.g. via Terminate or Error event) before the called process is complete, the called process is notified somehow and is terminated. Also, an Error end event in the called process can be caught by an Error boundary event on the Call Activity. If you model the called process as an external pool linked by messages, you need to model all that synchronization explicitly.
Actually, I doubt that the principal authors of BPMN 2.0, IBM, Oracle, and SAP, who were so meticulous on the execution semantics, even respect these technical nuances in their own BPMS implementations. For me, a the bigger issue is for non-executable models: when to model a called service using Call Activity versus a black-box pool versus a white-box pool. I tend to fall back on the principle that the detailed process logic of external actors is unknown to the process, so if the performers of the called process are “external” to the organization providing the process, it’s best to use a black-box pool. If you know the details of the called process, and the instance is aligned with the calling process, it’s best to use a Call Activity (and model its performers as a lane). But reasonable people can disagree on that.
Thank you for your prompt response and helpful reply!
We have implemented an Enterprise Process Framework (EPF) (adapted from APQC/SCOR and some organizational specific processes). This means that there is a lot of opportunity for calling / linking to multiple defined global processes. With the defined EPF to work from we are using pools as processes. As we are in the initial phases of the modeling, we have been developing internal standards so that all areas can follow the same principals/style. The area of Call Activities / Global Tasks / linking to existing defined processes is proving to be the most complex per your final question “when to model a called service using Call Activity versus a black-box pool versus a white-box pool.”!
The primary goal is that consumers of the models (non-executable) want is to see the enterprise picture of where various processes are linked. How have you seen other organizations with a process framework display that?
Thanks,
Claire
I have seen some organizations try to link processes defined in an architectural classification framework, but it is often trickier than the enterprise architects imagine, because BPMN demands instance alignment, while BPM architecture rarely thinks in terms of the process instance.
–Bruce