Throw and Catch Signal Events

With throw/catch signal events, an in-flow signal event broadcasts a signal, and if there is an active task with a signal event on the task boundary, that event "catches" the signal, and generally follows the exception path.

Signal events can be local or global.

Local signal events can be used for triggering event handlers, task cancellations and to halt and resume parallel flows. When attached to a user task they can be used to resend data to an outstanding work item for that task.

Global signal events are thrown and caught across process instances, allowing processes to collaborate with each other. They are only available for an event sub-process/handler. See Signals for information about defining signal correlation data that will identify the process instance waiting for the global signal.

A signal is transient: when it is thrown, if there is nothing to catch it at that moment, it is discarded. It is not stored for later use.

You may specify a signal name with a throw signal event. With a catch signal event, a signal name is optional:

You can define whether you want to update a scheduled work item from a non-cancelling signal event. Select from a pair of radio buttons directly beneath the signal name from the Properties view of a catch signal event attached to a task boundary:

A signal end event functions like any other inflow signal event, except that when one fires, if there are more tasks that need to complete as the result of an exception flow, the outstanding tasks complete; if there are no more tasks that need to be completed, the process ends.