The BPMN 2.0 Standard defines several absolute and relative timers that can be effectively integrated into process models to not only control relative timing within a sequences of activities, but can also be used to control time allocated for sub-processes and activities, by incorporating interrupting or non-interrupting boundary event timers. This blog presents examples of how BPMN 2.0 timers in the Oracle BPM 11g Suite can standalone in a sequence flow or can be used in conjunction with Event Based Gateways and/or sub-processes.
This in-line timer (above) is configured for one hour. When the process flow instance or ‘token’ arrives at the timer, it starts the 1 hour timer. The flow continues to the next activity on expiration of the timer. In this example, the user would ‘Fix the Problem’ wait one hour, and then ‘Verify Fix with Customer’.
This example depicts a non-automated process, but a practical use of an in-line ‘wait’ timer for an automated process could be configured to wait 5 minutes for all of the applicable data bases to update so current data would be available to the next automated or user activity step.
This timer (above) is configured on the ‘boundary’ of the ‘Fix the Problem’ activity as an ‘interrupting’ timer for one hour (as labeled on the exiting sequence flow of the timer). Note the symbol for an ‘interrupting’ timer (above) has solid concentric circles whereas ‘non-interrupting’ timers have ‘dashed’ concentric circles (as shown below). In this example, if the worker could not fix the problem in one hour, he / she would cease working on the problem and proceed to the next activity which is to ‘Contact Customer to Reschedule’. Also note that there would be no ‘token’ advance in the normal process flow to the next activity, because the process instance was rerouted by the ‘interrupting’ boundary timer.
These two process diagrams (above and below) are the same, with the exception that the diagram above depicts the ‘Address the Problem’ as a ‘collapsed’ sub-process whereas the diagram below depicts the same process as ‘expanded’.
Note that the ‘boundary timer’ on this sub-process is ‘non-interrupting’ as indicated by the ‘dashed’ concentric circles of the symbol. Also note that this entire sub-process must complete in one hour or the timer will kick off the alternative flow. However, in the case of a ‘non-interrupting’ timer, the instance ‘token’ is duplicated so it can be sent down the boundary flow as well as the main flow, because the sub-process was NOT interrupted, but allowed to complete regardless of how long it took.
The last example (above) that we will look at in this blog, shows a timer being used in conjunction with an ‘Event Based Gateway’. An ‘Event Based Gateway’ asks the question – “which of the following events will complete first?” In this example, the ‘Throw Message Event’ was sent to “Request Additional Information” . . . and consequently the ‘Event Based Gateway’ named “Receive Info Event Deadline” will evaluate whether the ‘Receive Info’ event will be received before the event ‘7 day’ timer expires.
The following screens are used to configure a timer that was ‘dragged and dropped’ on the edge or ‘boundary’ of an activity or sub-process.
The screen above shows the ‘Basic’ tab which can be used to change the name of the timer to depict its timing function.
The implementation tab lets you select ‘Message, Timer, or Error’ function.
Once ‘Timer’ is selected, the ‘Interrupting Event’ allows you to specify whether you want this boundary timer to ‘Interrupt or Stop’ the Process Instance or configure it as a ‘Non-Interrupting’ timer (leaving the box unchecked). It is also possible to configure the timer to fire upon completion of the ‘Time Cycle’ or set the timer to fire at a specified Date and Time.
A Quick Recap
- Timers can be configured in BPM 11g to control relative or absolute timing of activities or events
- They can be used in-line as ‘wait’ or ‘pause’ timers
- They can be used as ‘interrupting or non-interrupting’ boundary events on activities or sub-processes
- They can be configured in conjunction with Event Based Gateways to place a timer on a particular event