My way of modelling this process is shown above and probably what you expect. As you can see, I expressed the dependencies by using sequence flows and gateways to order the given tasks. This gets complicated with many edges, which in turn are hard to lay out. Thus, my motivation to explore (better) layout options.
However, a colleague came up with a much better solution – at least visually his process model is much cleaner as shown above. You might ask whether this process model is correct and corresponds to the sceneario and the answer is yes: The dependencies between the tasks are not modeled with control-flow constructs but instead with data objects. Not all BPMN modelers know this, but BPMN allows to specify requirements on data availability before a task can start. I expect that most people will interpret this model in the correct way. If they should perform a task and the required data is not available they will postpone this task. However, most BPMN engines cannot correctly execute this model. Also, data flow pre- and post-conditions can get complex more quickly and require some task properties, which are not visible but are stored in properties in the process model (data input and output sets anyone?). There might be no intuitive way to understand such business process models. As a consequence, one might argue whether using these data-flow definitions is a good idea in general. In most scenarios, which I have encountered in my projects, expressing dependencies with the control-flow, i.e., sequence flows and gateways, is fine and also probably more readable and understandable for model consumers. However, I think this case is one of the examples in which using data-flow gives us a better comprehensible and thus better business process model.
I encountered this process some years back and as such my “experiment” is quite old. However, I was reminded of it last week: a PhD student named Maximilian König presented his approach to formalize data-flow in BPMN at the ZEUS workshop. You can find his paper here. I think it would be great, if in the future BPMN engines would be able to handle data-flow and data dependencies in a more standards-compliant way.
What do you think? Is expressing dependencies via data-flows good or bad? You can leave a comment on LinkedIn and take part in this discussion!