The Scheduler Service

The Scheduler Service is an easy way to manage Java EE timer services. A Timer can be configured by a configuration document of the type ‘scheduler’. The Configuration has to provide at least the following fields:

  • type - fixed to value ‘scheduler’
  • _scheduler_definition - the chron/calendar definition for the Java EE timer service.
  • _scheduler_enabled - boolean indicates if the scheduler is enabled/disabled
  • _scheduler_class - class name of the scheduler implementation
  • _scheduler_log - optional message log provided by the scheduler implementation

The Scheduler Interface

A new scheduler can be easily implemented by just implementing the interface org.imixs.workflow.engine.scheduler.Scheduler. The SchedulerService will automatically call the concrete scheduler implementation defined in the scheduler configuration document (_scheduler_class). The scheduler class will be injected via CDI so all type of beans and resources supported by CDI can be used.

public class MyScheduler implements Scheduler {
	...
	@Inject
	WorkflowService workflowService;

	public ItemCollection run(ItemCollection configuration) throws SchedulerException {

		try {
			// do the job...
			.....
		} catch (Exception e) {
			// set item _schduler_enabled to false to cancel the timer.
			configuration.setItemValue("scheduler_enabled",false); 
		}
		return configuration;
	}
}