Signal Event Handlers

An event handler flow can be triggered from within the same process instance using signal events. The signal event handler flow can be executed asynchronously or synchronously with the invoking flow (the invoking flow generally waits at the throw-signal event for the completion of the event handler flow before continuing). This allows process designers to define and re-use complex sets of repeatable activities.

Note: This could be especially useful when considering the additional tasks and exception handling that are required by case data updates because each update on a single piece of case data could involve several tasks (one to do the update, plus exception handling if the update fails). Therefore if many updates are performed on case data, then the process could soon become very cluttered with case data handling activities reducing the visibility of the actual business process tasks. Use of the signal event handler could greatly reduce this type of problem by allowing the process designer to implement the set of tasks to update a case data item and handle exceptions only once and re-use that from many places in the process.

The catch signal event Properties tab contains Event Handler configuration controls (which are shown only when the catch signal is an event handler (with no incoming flow).

The default setting is Wait at the invoking signal until event handler flow is complete. This setting controls whether the throw signal's outgoing flow is processed after the event handler flow. If you unset this flag it can be processed without waiting.

Note that:

  • Signal event handlers can also be used within embedded sub-processes. Place the signal event handler inside the embedded sub-process. This will ensure that the embedded sub-process local data is in scope of the signal event handler flow.
  • Signal event handlers can be used within pageflow processes.
  • Case data signal event handlers allow a process to subscribe to a particular case object that the process uses. The process will then be notified if that case object is modified, and can take appropriate action to respond to the change. See Notifying a Process That a Case Object it Uses Has Been Modified .