3

我有以下的石英工作,通過石英插件設置:的Grails - 參數石英工作觸發

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,我不知道該怎麼做。

任何幫助非常感謝。

回答

3

使您的工作執行StatefulJob,那麼您將有權訪問JobExecutionContext其中有一個Trigger實例訪問器。如果你有你自己的Trigger類,那將是它的一個實例。

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