Grails - Quartz作业触发器中的参数

时间:2011-09-15 23:15:57

标签: grails parameters quartz-scheduler crontrigger multitrigger

我有以下石英作业,通过Quartz-plugin设置:

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

    def execute(){ ... }
}

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

任何帮助非常感谢。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

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

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) {...}
  }
}