3

我有以下石英工作,通过石英插件设置:

class UserMonthlyNotificationJob { 
static triggers = {
        cron name:'dailyTrigger', cronExpression: " ... "
        cron name:'weeklyTrigger', cronExpression: " ... "
        cron name:'monthlyTrigger', cronExpression: " ... "
}

    def execute(){ ... }
}

我希望能够在execute块中可用的触发器中设置一个参数。似乎我无法在 a 中设置任何变量cron trigger,并且custom trigger要求实现Quartz Trigger interface,我不知道该怎么做。

非常感谢任何帮助。

4

2 回答 2

3

让您的工作实现StatefulJob,然后您将可以访问具有Trigger实例访问器的JobExecutionContext 。如果您有自己的 Trigger 类,那将是它的一个实例。

于 2011-09-16T09:58:26.637 回答
2

非常感谢,它成功了。这就是我最终使用它的方式:

import org.quartz.StatefulJob
import org.quartz.JobExecutionContext

class UserPeriodicalNotificationJob implements StatefulJob{   

    static triggers = {
        cron name:'dailyTrigger', cronExpression: ConfigHolder.config.userDailyNotificationJob
        cron name:'weeklyTrigger', cronExpression: ConfigHolder.config.userWeeklyNotificationJob
        cron name:'monthlyTrigger', cronExpression: ConfigHolder.config.userMonthlyNotificationJob   
    }

    void execute(JobExecutionContext context){
        def triggerName = context.trigger.key
        try {
            switch (triggerName) {...}
        }
        catch(Exception) {...}
  }
}
于 2011-09-16T14:33:47.040 回答