3

次のコードを検討してください。

class MyJob {  
    def execute() {
        println "Hello at->"+new Date()
    }
}

このコードを実行すると、トリガーを割り当てずに1分ごとに実行が開始されます。このプロパティを無効にするにはどうすればよいですか?トリガーをかけるたびにこの仕事を始めたいです。

4

3 に答える 3

3

デフォルトのトリガーを無効にし、起動時にトリガーを割り当てない場合は、クラスで空のトリガークロージャが必要です。

class MyJob {
    static triggers = { }

    ...
}

これにより、デフォルトのトリガーではなく、クロージャーのトリガー(none)がジョブに割り当てられます。

于 2012-08-18T14:17:50.373 に答える
0

あなたが成し遂げようとしていることは少し曖昧です。トリガーを「作成」するときにこれを実行する場合は、実際にはこれをcronジョブに入れる必要はありません。

ただし、特定のイベントの後にこれをアクティブにしたい場合。次に、トリガーを作成しますが、実行前に何らかのチェックを行います。元。

class MyJob {
   static triggers = { .... create the schedule      

   def execute() {
     // instead of create a trigger, you create a temp file that would allow/prevent
     // the execution
     def runIt = new File(runFile.txt)  
     if (runIt.exists()) {
        println "Hello at->"+new Date()
     }
   }
}
于 2012-08-17T17:50:57.857 に答える
0

私があなたがやりたいことを理解しているなら、あなたは最初にクォーツ構成をインストールするでしょう:

grails install-quartz-config

次に、自動起動を無効にします。

quartz {
    autoStartup = false
    jdbcStore = false
}

次に、アプリケーション内でジョブを動的にスケジュールします。

// creates cron trigger;
MyJob.schedule(String cronExpression, Map params?)
//  creates simple trigger: repeats job repeatCount+1 times with delay of repeatInterval milliseconds;
MyJob.schedule(Long repeatInterval, Integer repeatCount?, Map params?) )

// schedules one job execution to the specific date;
MyJob.schedule(Date scheduleDate, Map params?)

//schedules job's execution with a custom trigger;
MyJob.schedule(Trigger trigger)

// force immediate execution of the job.
MyJob.triggerNow(Map params?)
于 2012-08-17T19:34:16.830 に答える