5

ジョブ フォルダー内の静的トリガーから cron を実行すると実行されますが、コントローラーからトリガーを起動しようとすると、単純に失敗します...何が欠けていますか?

エラー コード: メソッドのシグネチャがありません: static com.example.TaskReminderJob.triggerNow() は引数の型に適用できます: (java.util.LinkedHashMap) 値: [[params:[name:Frank, email:frank@test.com] ]]

grails-app/jobs/example の Quartz ジョブ

  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"] )
} 
4

1 に答える 1

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')
        ...
    }
}
于 2013-09-06T02:28:44.023 に答える