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.
Timer Configuration
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
Avio Consulting, LLC
5600 Tennyson Parkway
Suite 340
Plano, TX 75024
Email: info@avioconsulting.com
Phone: +1 (972) 608-4777
Comments
Problem with timer after restart server
Hi Hal.
Have you notice that when you restart soa server while flow is on a timer event, after restart the flow never continues?. The flow stay in the timer event.
I have that problem and i have not been resolved.
I use version 11.1.1.
Regards
Set start timer
Hello Hal.
Great post you wrote.
I have one doubt and I wonder if you could help me on this one.
Do you know if it is possible to configure the time in which the event will be triggered? In other words, imagine I have a Timer Start Event and it is configured to as Time Cycle to run every day (P1D). The question is: How can I set the "WHEN" the timer will start to count in order the start event. For exemple: I want that the timer start at 23:59 and from that time start over and over.
I don't know if I make myself clear...
Thanks
@Hal You can do that by two
@Hal
You can do that by two timer activity in sequence one with trigger time anoher with actual deadline
Humantask------------WhenTimer----------ActualTimer
Timer Start Event specifics
Hi,
This is Hal Pruessner, at Avio Consulting. I am looking into the specifics of the Timer Start Event specifics and will get back with you when I get the details.
Thanks,
Hal P.
Nicely done
Well written article Hal. I like that it wasn't laced with the technical jargon you usually see in posts like this.