Allowing pools in subprocesses

@sergeschiltz @philippfromme @sombrek Very interesting discussions here.

What is important for us (as maintainers of bpmn.io) is that our tools are editors, not drawing tools. Hence we’re careful to adopt anything that may have weak semantics and/or could easily break the consistency of diagrams during refactoring; we opt to offer what is predicable and common ground (over supporting all quirks).

From what I understand we discuss two topics here:

  • Can sub-processes have lanes? Yes, according to the BPMN spec and schema) :arrow_right: I think this could be a simple and reasonable addition to our existing sub-process features.

  • Can (external) participants/pools be shown inside of (collapsed) sub-processes for the purpose of visualizing that external connection? This would allow us to keep the (visual) semantics, once collapsing something like this:

    image

    Here we have to answer many important questions, around UX, and representation in the BPMN. We want to avoid a situation where every vendor implements their own way of representing such “external ghost element”.

Do I capture the essence of the conversation correct?

2 Likes

@nikku I guess you captured well the essence of our discussion.

@sergeschiltz Asking again: How are lanes without a participant supposed to work? Is my assumption correct:

  1. Parent process looks like this:

  1. You collapse the subprocess, drill down into it and can see the lane the collapsed subprocess is part of:

Is that the idea?

That was my original thought! I was thinking there might be a way to A) store the message flow information as a custom extension property and B) use the renderer customization (as used in this example, since we’ve already got it implemented on our instance) to either allow “special” pools or just represent the parent pool. It might not be feasible; I was looking to get a starting point to dig around from.

This seems to contradict the explanation given earlier (my emphasis):

So it’s not the Foo lane that is replicated, but the Foo lane within the sub process is a subdivision of the Foo lane in the parent process.

By the way, lanes without parent pools are already rendered within sub processes. See this sample model I’ve exported from Adonis: nested-lanes-export.bpmn (9.3 KB)

@kirstenhh Editing this model shows some bugs, e.g. elements can be placed outside of the lanes and dragging lanes won’t work. Those might be starting points to get into the code.

@kirstenhh Yes, a model extension and some kind of custom rendering could achieve this but it’s not a simple customization use case so it’s difficult to provide easy pointers.

1 Like

Thanks @sombrek, I understand it now.

1 Like

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.