Grails — Параметр в задании Quartz Trigger

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

Любая помощь очень ценится.


person Alexandre Bourlier    schedule 15.09.2011    source источник


Ответы (2)


Реализуйте свою работу StatefulJob, тогда вы будет иметь доступ к JobExecutionContext, который имеет < метод доступа экземпляра href="http://www.quartz-scheduler.org/api/2.0.0/org/quartz/Trigger.html" rel="nofollow">Trigger. Если у вас есть собственный класс Trigger, это будет его экземпляр.

person Victor Sergienko    schedule 16.09.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) {...}
  }
}
person Alexandre Bourlier    schedule 16.09.2011