Embedded versus Re-usable Subprocesses in BPMN

Scott Francis
Next Post
Previous Post

Anatoly often posts the best examples and cautionary tales in BPMN2. In the latest post, he derides the limited usability of Swim Lanes in BPMN 2 – And he has a point.

On the one hand, embedded subprocesses can’t have swim lanes (the best way to think about these is simply a set of collapsed activities, for notational convenience). On the other hand, “Reusable subprocesses introduce additional complexity because unlike embedded they are executed in a separate data context”.

Anatoly’s conclusion is that overusing reusable subprocesses is bad practice, because of this overhead.  I conclude differently:  the BPMS should minimize or optimize this overhead – and the business process designer should be able to ignore it on a robust BPMS.

To make a coding analogy:  we should be talking about the difference between an embedded block of code and a function call.  Yes there is overhead, but it should be managed by the BPMS transparently. In fact, some BPMS authoring environments don’t even allow for the embedded subprocess- treating it as just a special case of the reusable subprocess who’s primary difference is that it doesn’t happen to be re-used.

I don’t think we should optimize around the shortcomings of a particular BPMS too much, in terms of our general BPMS modeling advice.  However, I’ll concede that once you’ve chosen your BPMS, you might as well optimize somewhat around its capabilities as they become known to you, and model accordingly.


  • Anatoly’s usually pretty good but sometimes stuck in a BPMN 1.x world.  Then it was true that expanded subprocesses (not embedded) could not have lanes; no longer true in BPMN 2.0.  Even in BPMN 1.x the idea that hierarchical expansion (i.e. child level modeled in a separate diagram hyperlinked to the collapsed subprocess at parent level) required reusable subprocess is simply incorrect.  In BPMN 2.0, the semantic model is completely separate from the graphical model.  You can’t even tell from the semantic model whether expansion is inline or hierarchical – that’s all in the graphical model, which is optional.  Lanes are part of the semantic model, independent of how expansion is rendered graphically.  So this whole discussion makes no sense at all in BPMN 2.0.  I think what you can say is BPMN tools have trouble putting lanes in expanded subprocesses – i.e. a tool issue not a BPMN issue.  Some tools like Blueworks Live have the expanded subprocess shape enclose multiple lanes on the process canvas (but then collapse to a single lane).  If they ever export decent BPMN 2.0 xml we can see what they do with lanes in the semantic model… but don’t hold your breath.

    • I think most of us have our perceptions colored by the tools we use most often in our daily use-  and I think Anatoly (and I) are no different, though use of different tools causes us to think about some modeling issues differently.

      For example, using IBM BPM, BPMN2 is kind of irrelevant. Its really a mostly BPMN1+ modeling environment.  Some of its ideas got into the BPMN2 spec, but it hasn’t changed much at all to support BPMN2 concepts.  If it did, some of those concepts I would welcome, but some things, quite honestly, IBM BPM just does better than the BPMN1 or 2 specs ask for. 

      “I think what you can say is BPMN tools have trouble putting lanes in
      expanded subprocesses – i.e. a tool issue not a BPMN issue. ”  – so true :)

  • interesting discussion happening on “the twitter” about this post, sadly it didn’t happen on the comment-stream :)  just look for @donpega, @pelujan