camunda / camunda-modeler-token-simulation-plugin

Token simulation as a plugin for the Camunda Modeler
180 stars 24 forks source link

Parallel gateway join is not spec compliant (does not account for tokens on all incoming flows) #84

Open EliM147 opened 9 months ago

EliM147 commented 9 months ago

Describe the Bug

When multiple tokens (2 or more) arrive at a parallel gateway from a single flow, two of them merge and one token will continue (e.g., if there were 3 tokens, 2 will merge, and only 1 will be stuck there).

It is wrong, and all three tokens should get stuck there, since it waits for the merge on ALL the incoming flows.

How it should be: image

How it is: image

Parallel gateway waits for as many tokens as there are incoming flows, not necessarily for all the tokens from all sides to be merged.

Steps to Reproduce

Have a model (e.g., like one I showed), and then have a situation, when 0 tokens come from one path to a parallel gateway, and all the tokens come from a single path, and then see how each 2 tokens would merge.

https://github.com/camunda/camunda-modeler-token-simulation-plugin/assets/67518482/5b31a081-3392-40d9-a957-e16163d6e1b2

https://github.com/camunda/camunda-modeler-token-simulation-plugin/assets/67518482/bd47605f-8d93-4d64-9986-fab1f4ea7393

Expected Behavior

Parallel gateway MUST wait for tokens from ALL incoming paths (i.e., a token coming from two paths can be merged, and two tokens from one path - cant).

I believe it is because a gateway merges the tokens automatically, depending on the number of incoming flows

P.S. We are the researchers trying to use CAMUNDA token modeler for better teaching of the students, we were thinking if we can contact somehow the person, who could help with fixing the bug? Thanks!


Depends on https://github.com/bpmn-io/bpmn-js-token-simulation/issues/130

nikku commented 9 months ago

Thanks for your bug report, and great to hear you find this useful as a learning tool. We could not agree more.

The issue you reported needs to be fixed upstream via https://github.com/bpmn-io/bpmn-js-token-simulation/issues/130, in the library that powers this plug-in.