Grails - параметр в кварцевом триггере

У меня есть следующая кварцевая работа, установленная через Quartz-плагин:

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 ответа

Решение

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

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

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) {...}
  }
}
Другие вопросы по тегам