A short addendum to previous post “A Case For BPMN Signal Event“.
The pecularity of the signal event noted there - a signal is catched by every instance of a receiver process which is waiting for the event at the moment the signal is thrown - refers to intermediate events.
In case of start event one process initiates a signal and another process starts as a result. But why using a signal here - a message seemingly can do the same?
Firstly, a signal allows to initiate several processes at once.
Secondly, a signal has conceptual advantage:
- Let a given signal thrown by a process A initiate start of a process B.
- Now let’s recall that BPM is a management of business processes that change in time and assume that we decided to make process C handle the signal instead of B.
- When a message is used, the receiver is specified in process A, hence we need to modify A scheme in order to change the handler. And if we do we got a problem with A instances already running.
- When a signal is used, we simply install C and uninstall B. We don’t need to modify A nor to do anything with A instances.
This way signal implements late binding: a handler can be set/reset at time of execution rather than development.