- Red Hat JBoss BPM Suite
- 6.1 Update 3
- 6.1 Update 4
We have the following (simplified) use case:
- Process instance starts and kicks off as reusable subprocess, which contains a human task, with "Wait for completion" set to false
- As subprocess runs, parent does a couple simple things and then pauses at a catching signal event (SignalRef=foo)
- Once human task in subprocess is completed, it goes to an end signal event that throws SignalRef=foo
At this point, I would expect the parent to receive the signal and complete, but it doesn't. Is there something else I need to do here?
Note that this has worked in earlier versions of the product, but fails in BPMS 6.1.3.
Migrate to either 6.1.5 or 6.2.0 (once available), as these versions contain a fix for the bug mentioned below.
Until these are avaible, a possible workaround is to change the signalRef from the id, to a name, i.e. (in your child process):
<bpmn2:signalEventDefinition id="_gbKfWo0IEeWdgMj39isC5g" signalRef="_3858f622-30ac-3c91-9f30-0c664312c63f"></bpmn2:signalEventDefinition>
<bpmn2:signalEventDefinition id="_gbKfWo0IEeWdgMj39isC5g" signalRef="foobar"></bpmn2:signalEventDefinition>
However, this workaround is fragile, as even after you change the underlying BPMN definition manually, opening the process in designer may cause the issue to show up again.
This is a bug1 in the product, introduced as a side effect of another feature.
What happens here is that designer provides valid signal element that is referenced by signalEventDefinition element via proper ids. While engine parser does not look up for signal elements and considers id given in signalRef as signal name. That’s why it cannot be matched on execution.
This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.