Proper Modeling of Gateways

Hello, as I read in the documentation, one should add a branching exclusive gateway but not the merging exclusive gateway. In the Modeler, it then shows “Incoming flows do not join” under Problems. Does this mean that I should model the merging exclusive gateway now?

Hello my friend! :smile:

Personally, I always consider it a good modeling practice to “split” and “merge” the gateways, as this makes it much easier even if I need to create an extra task in this location, or do some validation after the merge.

Even the process modeling itself is more pleasing to our eyes.

Look at this model, it’s “ugly” and we have a problem with this approach, which I’ll explain next.

Now let’s go to the model that I consider most appropriate and correct:

Imagine the first scenario… let’s say that in a meeting with your company’s business team, they decided together that they needed a task BEFORE THE LAST TASK OF THE PROCESS.

Using the first model approach, it would be more complicated, you would have to remove the 2 flows, create the task, connect the 2 flows to this new task, and connect the new task to the last task.

Using the approach that I consider correct, you would just insert the task after the merge gateway (where i put the red arrows on the model), and you would be ready!

I hope this helps!

William Robert Alves

3 Likes

I also forgot to mention the fact that if one day you decide to change the approach of your process, allowing both tasks to occur in parallel using parallel gateway, and not exclusively using XOR Gateway, you can just select both gateways and change to the parallel gateway, without having to modify your modeling form to do the mandatory parallel gateway merge.

Maybe this is one of the reasons why Camunda 8 is “forcing” you to do this.

William Robert Alves

Thank you so much.

1 Like

Good suggestions from @WilliamR.Alves here, i just wanted to add that the reason it shows up in the Problems section is because it’s picked up as bad practice. If you wanted you could ignore it and it’s technically correct BPMN. It simply violates what we consider to be best practice modeling.

2 Likes

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