使用来自控制器的触发器执行Quartz作业

时间:2013-09-06 02:16:49

标签: grails groovy quartz-scheduler

我可以从作业文件夹中的静态触发器运行一个cron,它会执行,但是当我尝试从我的控制器触发一个触发器时,它只是失败了...我错过了什么?

错误代码:没有方法签名:static com.example.TaskReminderJob.triggerNow()适用于参数类型:(java.util.LinkedHashMap)值:[[params:[name:Frank,email:frank @ test .COM]]]

grails-app / jobs / example中的Quartz Job

  package com.example
  class TaskReminderJob {
     def reminderMailService 
     static triggers = { }

     def execute(context) {
         def email = context.mergedJobDataMap.get('email')
         def name = context.mergedJobDataMap.get('name')
         reminderMailService.remindMail1(name, email)  //send email via service       
     }
  }

控制器致电招聘

package example

class UserController {
    def quartzScheduler 
    ...
    //user is created
    ...                     
    TaskReminderJob.triggerNow([name:"frank",email:"frank@test.com"] )
} 

1 个答案:

答案 0 :(得分:12)

更正您的包裹路径,然后您可以使用triggerNow方法手动触发您的作业。如果您需要将任何参数传递给它,您可以像这样传递它:

package com.example

class UserController {
     def someAction(){
        ...
        TaskReminderJob.triggerNow([id:params.id])
     }

工作

package com.example

class TaskReminderJob {
    static triggers = {}

    def execute(context) {
        def id = context.mergedJobDataMap.get('id')
        ...
    }
}