cancel
Showing results for 
Search instead for 
Did you mean: 

Parallel Event Gateway with User Task Ignores All Signals

elic
Champ in-the-making
Champ in-the-making
We have a process designed to implement Pause-Resume-Abort but there's an issue when the process reaches a User Task from a parallel event gateway. We'd like to be able to signal the "Complete" intermediate signal catching event while the process is sitting in the "Resume?" user task, but when we send the "Complete" signal the event is never handled. If the user makes a choice and the process doubles back to resubscribe to the "Pause" intermediate signal catching event before the "Complete" signal is raised then everything works fine.

Is it expected behavior that if the process reaches a user task from a parallel event gateway that intermediate signal catching events cannot be signaled until the user task is completed?

Please see the attached BPMN process model exported directly from Activiti Explorer. (This is simplified for clarity)
1 ACCEPTED ANSWER

gdharley
Elite Collaborator
Elite Collaborator

Looking at your process diagram, i is modelled such that the process instance starts, then pauses until either a "pause" or "complete" signal is received (this is the event gateway). The only way the "resume" task can be reached is after a "pause" signal is received.

This is a somewhat confusing pattern since a user task (Resume in your case) is an implicit wait state so I'm not certain as to the purpose of the "Pause" event.

Either way, you can simply add a boundary catch event to your "Resume" task to act on the "Complete" signal.
You can have multiple signal listeners for any signal.

I have attached a simple sample process that demonstrates both inline and boundary catch events responding to the same throw event.

Hope this helps,

Greg

View answer in original post

1 REPLY 1

gdharley
Elite Collaborator
Elite Collaborator

Looking at your process diagram, i is modelled such that the process instance starts, then pauses until either a "pause" or "complete" signal is received (this is the event gateway). The only way the "resume" task can be reached is after a "pause" signal is received.

This is a somewhat confusing pattern since a user task (Resume in your case) is an implicit wait state so I'm not certain as to the purpose of the "Pause" event.

Either way, you can simply add a boundary catch event to your "Resume" task to act on the "Complete" signal.
You can have multiple signal listeners for any signal.

I have attached a simple sample process that demonstrates both inline and boundary catch events responding to the same throw event.

Hope this helps,

Greg