Hello everyone,
we encountered some problems while doing token manipulation within parallel gateways. Some of these scenarios might be not very logical executed steps to experts, but happened like this in reality to our users.
Example process
We have a very simple process with two parallel service tasks: Service Task 1
& Service Task 2
. After successfully finishing both parallel service tasks, a Service Tasks 3
will be executed.
Here the exemplary process: ExampleProcess.bpmn (5.2 KB).
Scenario 1: Process continues even if not all tokens reached the incoming parallel gateway
- Due to an error,
Service Task 1
&Service Task 2
failed with an incident. - As we know that it’s not possible to complete
Service Task 1
anymore, we move the token (via Operate UI) to the incoming parallel gateway. - The token at the incoming parallel gateway will go further and execute
Service Task 3
.
Question: Why does the instance not stop on the incoming parallel gateway?
First, there is still an active token at Service Task 2
with an unsolved incident. Second, the incoming parallel gateway has two incoming flows, but only one token reached it.
Extension to Scenario 1: Process stays active even if the only available token was canceled
Service Task 3
was executed successfully and the token moves to the end event.- As there is still an active token with an open incident at
Service Task 1
, we cancel that token asService Task 3
was already executed successfully. - The instance stays active, even if there is no active token anymore.
Question: Why does the instance stay active and is not marked as completed, if the first token ended successfully at the end event and the second token was canceled?
Scenario 2: Process stuck on incoming parallel gateway even if there is a canceled token
- Due to an error,
Service Task 1
&Service Task 2
failed with an incident. - As we know that it’s not possible to complete
Service Task 1
anymore, we cancel the token (via Operate UI). - Now we retry the incident at
Service Task 2
which will finish successfully, so that the token moves to the incoming parallel gateway. - The instance waits for the second token reaching the incoming parallel gateway, but there is no other active token anymore, as it was canceled before.
Question: Why does the instance wait on the second, already canceled token? I know this process is very simple, and there are way more complex ones, but is there no option to inform the incoming parallel gateway that one of the needed tokens was canceled so that the instance could continue?
Best regards
Alessandro