Grails - параметр в кварцевом триггере - PullRequest
3 голосов
/ 16 сентября 2011

У меня есть следующее кварцевое задание, установленное с помощью 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 ]

3 голосов
/ 16 сентября 2011

Сделайте вашу работу реализующей StatefulJob , тогда у вас будет доступ к JobExecutionContext , который имеет Trigger средство доступа к экземпляру.Если у вас есть собственный класс Trigger, это будет его экземпляр.

2 голосов
/ 16 сентября 2011

Большое спасибо, это помогло. Вот как я его использовал:

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