Timer event nodes are a powerful feature in BPMN that allow you to introduce time-based behavior into your processes. These nodes enable you to trigger specific actions or events at predefined time intervals, durations, or cycles. With timer event nodes, you can design processes that respond to time-related conditions, ensuring smoother workflow execution and enhanced automation.
There are three primary types of timer event nodes:
Timers introduce the ability to trigger events at specific time intervals. They can be configured in three different ways: as a date, a duration, or a cycle. These configurations can use static values or dynamic/computed values.
Date: Events triggered on a specific date and time.
2019-10-01T12:00:00Z
or 2019-10-02T08:09:40+02:00
)Time Duration: Events triggered after a specified duration.
P(n)Y(n)M(n)DT(n)H(n)M(n)S
)
Examples:
PT15S
- 15 secondsPT1H30M
- 1 hour and 30 minutesP14D
- 14 daysP3Y6M4DT12H30M5S
- 3 years, 6 months, 4 days, 12 hours, 30 minutes, and 5 secondsR
)
R5/2023-08-29T15:30:00Z/PT2H
: Every 2 hours seconds, up to five times, starting with 29 August, 15:30 UTC timeR/P1D
: Every day, infinitely0 0 9-17 * * MON-FRI
: Every hour on the hour from 9 a.m. to 5 p.m. UTC, Monday to FridayImportant: Only Spring cron expressions are permissible for configuration. Refer to the official documentation for detailed information on configuring Spring Cron expressions.
Scheduled timer events are clearly indicated within the process definition list of an application at Runtime, as illustrated in the following example:
More information about timer expressions you can find in the below section:
For each node type, the following timer types can be configured:
Node Type | Date | Duration | Cycle |
---|---|---|---|
Timer Start Event | Yes | No | Yes |
Timer Intermediate Event | Yes | Yes | No |
Timer Boundary Event | Yes | Yes | No |
A process definition version should have a single Timer Start Event per swmilane.
For comprehensive details on each timer event node in this section, please refer to the corresponding documentation: