This content is dedicated to our next version. It is work in progress: its content will evolve until the new version is released. Before that time, it cannot be considered as official.

Timers execution

What are timers

Timers are BPMN event that are executed at a given date (type DATE), after a periode of time (type DURATION) or following a CRON expression (type CYCLE)

Execution mechanism

Their execution is delegated to the Quartz Job Scheduler, a popular Java scheduling library.

Change timers execution data

Execution date for timer of type DATE or DURATION (not CYCLE) can be changed using the BPM Rest API

Handle failures on timer execution

Failure behavior

When a timer fails the following happens:

  • a FailJob is registered that contains

    • The id of the JobDescriptor that failed

    • The stacktrace of the last failure

    • The date of the failure

    • The number of times it has failed

  • If the timer is of type CYCLE subsequent executions will still be triggered

Handling the failure

To check for failure you can call the API method org.bonitasoft.engine.api.ProcessRuntimeAPI#getFailedJobs(int, int)

Then you can replay a timer that failed using org.bonitasoft.engine.api.ProcessRuntimeAPI#replayFailedJob(long)

If the job failed more than one time, you can restart this job multiple times by calling this api method the number of times you wish.

Once this method is called (at least once) the FailedJobs for this timer will be cleared.

Tune performance of timers execution

If you notice that timers are executed significantly after the date they should be executed, you might suffer Quartz performance issues. Check this page to fine tune Quartz performance.