AnsweredAssumed Answered

Signal Boundary Event

Question asked by nicktee on May 24, 2012
Latest reply on Mar 24, 2016 by venkatesh@activiti
Hi All,

I'm using Activiti 5.9 and either I've misunderstood how a Signal Boundary Event works, or they don't seem to be working.

This is the test process I've put together:
[img]http://i.imgur.com/8UIeJ.jpg[/img]

When a process starts the execution arrives at "Receive Task" and waits for it's signal. If
runtimeService.signal(executionId);
is invoked the execution continues down the "Normal Path" and ends at it's end state.

What I was expecting was that if instead of calling
runtimeService.signal(executionId);
I call
runtimeService.signalEventReceived("TheSignal");
(that's the signal ID specified on the Boundary Signal Event) when the execution was waiting at "Receive Task" that would make it take the "Signal Path" and end at it's end event. Instead it appears to have no effect on the execution (the "Signal Path" is never taken and I can subsequently call signal(executionId) and the normal path is taken).

The "Receive Task" and boundary event definitions are as follows:

<receiveTask id="receiveTask" name="Receive Task"></receiveTask>
<boundaryEvent id="boundarysignal1" name="" cancelActivity="true" attachedToRef="receiveTask">
  <signalEventDefinition signalRef="TheSignal"></signalEventDefinition>
</boundaryEvent>
and "TheSignal" is defined at the top level definitions.

I just noticed something else. If I call:
runtimeService.signalEventReceived("TheSignal", executionId);
I get the error message: "org.activiti.engine.ActivitiException: Execution '22' has not subscribed to a signal event with name 'TheSignal'."

I have verified that the execution is waiting at the "Receive Task".

If anyone could let me know what I am doing wrong or whether there is actually a bug given the described behaviour that would be sincerely appreciated. There doesn't appear to be any examples that include a signal in the 5.9 distribution.

Regards,
Nick T

Outcomes