Signals
Signals can be local or global. Local signals are thrown and caught within a single process instance. Independent processes may need to collaborate through swapping events and data when you have more than one inter-related process with an interest in the same thing. Global signalling provides an inter process version of the signalling capability, with the capability to pass data as a payload.
Local signals are thrown and caught within a single process instance. They can be used for triggering event handlers, task cancellations and to halt and resume parallel flows.
You can throw (publish) a global signal and it can be caught by subscribing events in more than one process. You can also throw a global signal which will be available for a define period of time. During that time any processes that subscribe to the signal with the required correlation data will catch the signal. However the signal does not "go away" if it is caught by a single process during that period of time.
A global signal can be published from anywhere and consumed by multiple processes so you need to identify the process instances that are waiting for a particular instance of a global signal. You define signal correlation data that will identify the process instance waiting for the global signal. Data and parameters from the signal that are used for correlation are defined in the signal specification.
As global signals do not specifically belong to either the publisher or consumer of the signal (signals may be published and consumed from multiple locations), they are defined separately from where they are used or referenced (in the Global Signal Definition project).
Global signals have a data payload. Payload data is defined in the Global Signal Definition project.
Catching of global signals is supported from event handlers and event sub-processes, and is supported from within business processes. Throwing of global signals is supported from business processes, service processes, pageflows and business services.
- A transitory global signal will only exist for the period of time it takes to identify the set of process instances that are waiting/attempting to correlate with this signal instance. As soon as the currently waiting process instances have received the global signal it is destroyed.
- For persistent signals, after the signal has been generated it will exist for a defined period of time and correlate with any global catch signals that try to correlate with it during that period, in addition to those waiting when the signal was generated. When the period expires, the signal is purged.