Hi,
we have a process that starts a dynamic amount of parallel ack-user-tasks (to validate what was done in the previous step). The ack-Task allowes another user approve or decline. If one of the user "declines", we want to reset the process to the previous step. Having this scenario, we need to cancel the parallel ack-tasks that are still open because they are no longer needed.
We do that by sending a "done-signal" for the ack-tasks (caught by boundary-event). This normally works fine.
But sometimes the user dialog that "declines" is not yet finished before the "done-signal" is processed and so the dialog will stay open because the user-task is already marked as "done". We get an error message that the status of the task is not the way it should be.
I add the process-definition as a screenshot (see below):
- is the user task for the acknowledge
- sends a signal to check the "answer" of the user (which is received in the righthand part)
- if declined: the processpart on the right is sending the "done-signal" for all parallel user-ask-tasks including the currently open task (done-Signal are identical)

Right now the race-conditions did only appear on the local mashine when implementing with the designer (currently 10.0.34), but we are not sure whether this will be a problem in productive environment.
Our question is:
Would that be the correct way to implement that kind of process? As we do have a 2-way-async signal-process we assumed that there would not be any race-conditions.
Any hints on how to define this kind of process (dynamic amount of parallel tasks that are to be canceled from another part of the process) are welcome.
Greets Alex