3 Understanding Triggers - Reference Documentation
Authors: Sergey Nebolsin, Graeme Rocher, Ryan Vanderwerf, Vitalii Samolovskikh
Version: 1.0.2
3 Understanding Triggers
Scheduling configuration syntax
Currently plugin supports three types of triggers:- simple — executes once per defined interval (ex. “every 10 seconds”);
- cron — executes job with cron expression (ex. “at 8:00am every Monday through Friday”);
- custom — your implementation of Trigger interface.
class MyJob { static triggers = { simple name:'simpleTrigger', startDelay:10000, repeatInterval: 30000, repeatCount: 10 cron name:'cronTrigger', startDelay:10000, cronExpression: '0/6 * 15 * * ?' custom name:'customTrigger', triggerClass:MyTriggerClass, myParam:myValue, myAnotherParam:myAnotherValue } def execute() { println "Job run!" } }
simple
:name
— the name that identifies the trigger;startDelay
— delay (in milliseconds) between scheduler startup and first job’s execution;repeatInterval
— timeout (in milliseconds) between consecutive job’s executions;repeatCount
— trigger will fire job execution (1 + repeatCount) times and stop after that (specify 0 here to have one-shot job or -1 to repeat job executions indefinitely);cron
:name
— the name that identifies the trigger;startDelay
— delay (in milliseconds) between scheduler startup and first job’s execution;cronExpression
— cron expressioncustom
:triggerClass
— your class which implements Trigger interface;
Dynamic Jobs Scheduling
Starting from 0.4.1 version you have the ability to schedule job executions dynamically.These methods are available:// creates cron trigger; MyJob.schedule(String cronExpression, Map params?)// creates simple trigger: repeats job repeatCount+1 times with delay of repeatInterval milliseconds; MyJob.schedule(Long repeatInterval, Integer repeatCount?, Map params?) )// schedules one job execution to the specific date; MyJob.schedule(Date scheduleDate, Map params?)//schedules job's execution with a custom trigger; MyJob.schedule(Trigger trigger)// force immediate execution of the job. MyJob.triggerNow(Map params?)// Each method (except the one for custom trigger) takes optional 'params' argument. // You can use it to pass some data to your job and then access it from the job: class MyJob { def execute(context) { println context.mergedJobDataMap.get('foo') } } // now in your controller (or service, or something else):MyJob.triggerNow([foo:"It Works!"])