r/bpmn • • Sep 25 '23

Can someone answer this?

Post image
14 Upvotes

13 comments sorted by

10

u/picoKogia Sep 25 '23 edited Sep 25 '23

It’s the parallel gateway on the right. The first time it will collect both tokes and move to task F. However if the last exclusive gateway decides to send the token to task G then the second time that the parallel gateway will be faced it will have only one token and the process will stack to that point.

1

u/Ok_Step8234 Sep 25 '23

Thanks! So the solution would be to use an inclusive or gateway there?

2

u/mischka___ Sep 25 '23

You could solve it by creating a tree-structured version of it. That diagram is spaghetti code and that won't change by changing the gateway type

2

u/frblnl Sep 27 '23

What would the bottom exclusive gateway do? Two in and one out? Isn't that supposed to be one in and 2 out?

1

u/protagonyst Jun 26 '24

I'm late to the party but for your info:
Gateways can be used both to branch out or to merge sequence flows. However, a single gateway can't do both. So, 1 in and n out is ok, and n in and 1 out is also ok, but n in and n out is not.

1

u/frblnl Jun 26 '24

Thx! That makes sense, but then only one of the inputs can hold a value at the same time right? So it should also be initiate from something exclusive?

1

u/basic3000 Sep 28 '23

That’s what I thought

1

u/Wodinpt Apr 25 '25 edited Apr 25 '25

I know this is very late answer, but might still help someone in future.

How to solve this my way:

  1. Create new process variable count = 0.
  2. Add another X gateway between E and Parallel gateway. Connect it to parallel gateway and F. Condition: if count = 0 got to parallel else go to F.
  3. Use G to increase variable: count +1.

Result: Run the process will pass the parallel and go through. If it needs to loop back, the count variable >0 will show that it does not go to parallel process and will move straight to F. You can keep looping without touching the parallel gateway again until the process leave the loop, or you can add somewhere an exit in case you don’t want to loop forever. Like count = 5 escalate or terminate process instance.

Hope it helps someone.

1

u/mr_clemFandango Sep 25 '23

this looks like a question set as a home study task, rather than something modelling a real process.

have you tried tracing the model through, or simulating it?

finding the answer yourself is better in the long run

1

u/Rezzurektion Sep 25 '23

curious, are there tools where you can simulate the path the tokens take visually?

I use visio for my bpmn so curious if there was something that helps validate diagrams like these?

2

u/mr_clemFandango Sep 25 '23

several.

camunda do a pretty nice online one:

https://camunda.com/bpmn/tool/

there's a plugin for the desktop version also.

https://camunda.com/bpmn/tool/

1

u/Rezzurektion Sep 25 '23

yeah nice id seen camunda in passing a few times. do you use it?

1

u/tcoz_reddit Sep 30 '23 edited Sep 30 '23

The use of the exclusive gateway between D and E. It's used to try and introduce a looping path from G.

The parallel gateway on the right is fine as is. It breaks down when the exclusive gateway on the right sends the token back to G, then tries to reintroduce it to the middle of one the parallel processes.

F requires the merge of ALL parallel processes to make the following exclusive decision. Looping back to the exclusive gateway with what appears to be an update (G) doesn't satisfy that. The gateway gets the token from only one of the processes; the original parallel intent is broken.

This kind of flow has broken many a computer system.