Search code examples
bpmncamunda

Send signal from multi-instance subprocess without terminating the other instances?


Basically, I have a multi-instance subprocess and want to be able to send some kind of signal to the parent process without terminating all other instances of the subprocess.

Please have a look on this sample process: sample process

  • The subprocess is a multi-instance subprocess with a cardinality of 3.
  • i.e. when completing UserTask A, three instances of the subprocess are created. The user then needs to complete Task B three times. Fine.
  • But when the gateway routes to the "throw signal" event, I want the other two instances keep on running! Currently, all instances of the subprocess are terminated as soon as the signal is thrown.
  • With the help of the signal, I want to create some more instances of the subprocess after visiting UserTask A again.

How can I model this behavior in BPMN / Camunda?

Thanks in advance! Chris


Solution

  • It is possible to achieve what you want by declaring the boundary catching signal event to be non-interrupting.

    (Having said that, from a pure BPMN perspective an escalation event throw/catch would be a better fit for your case, but it is not yet supported by camunda BPM. So, just be careful not to cause side effects with the signal, because the signals may be received by other catching signal events, too.)