有没有办法告诉哪个触发器是踢掉工作的?我有一个Grails应用程序,我正在使用石英插件安排一些工作,但我希望能够做一些不同的事情取决于哪个触发器开始工作...
class MyJob {
static triggers = {
cron name: 'noonTrigger', cronExpression: '0 0 12 * * ? *'//12:00 PM every day
cron name: 'twoPMTrigger', cronExpression: '0 0 14 * * ? *'//2:00 PM every day
}
def execute(){
if(noonTrigger)
...
else if(twoPMTrigger)
...
else
...//kicked off from controller
}
}
有没有办法告诉执行哪个触发器启动了这个?或者甚至可以说这个工作没有被触发器拉开,但是从一些控制器代码或类似的东西开始?
编辑: 根据Joshua Moore的信息,代码如下:
def execute(context){
if(context.trigger.key.name == 'noonTrigger'){
...
}...
...
}
像冠军一样工作。从控制器看来,名称是随机生成的(?),但这仍然可以正常工作:
class MyController{
def myMethod(){
MyJob.triggerNow([:])
}
}
答案 0 :(得分:2)
Grails Quartz插件允许您使用JobExecutionContext的单个参数定义执行方法(例如def execute(context))。从JobExecutionContext中,您可以使用getTrigger()来查找用于触发作业的触发器。看一下API文档 JobExecutionContext了解更多信息。