2015-01-09 95 views
0

我仍在玩石英調度器。我使用 創建了以下作業,我在此嘗試的操作很簡單,那就是創建一個 觸發器和嘗試運行execute method.once這個基本代碼運行我想要 創建多個觸發器,每個具有不同的cron調度值,在 循環(具有不同的執行時間的多個觸發器)內,並運行執行 方法並在列表上執行sched.scheduleJob(triggerName)的這些觸發器動態調度作業:在groovy中使用cron觸發器

import org.quartz.* 
import org.quartz.Trigger 
import static org.quartz.JobBuilder.*; 
import static org.quartz.CronScheduleBuilder.*; 
import static org.quartz.TriggerBuilder.*; 
public class TrialJob 
{ 
    public static void main(String[] args) 
    { 
     JobDetail job = JobBuilder.newJob(TestJob.class).withIdentity("dummyJobName1","group11").build(); 

     CronTrigger trigger = newTrigger().withIdentity("trigger","group1").withSchedule(cronSchedule("0 55 15 * * ?")).build(); 

     Scheduler scheduler = new StdSchedulerFactory().getScheduler(); 

     scheduler.scheduleJob(job,trigger); 

     scheduler.start(); 

     //while(true){}; 
    }  

    public static class TestJob implements Job 
    { 
     public void execute(JobExecutionContext context) throws JobExecutionException 
     { 
      println "inside execute " 
     }   
    } 
} 
+0

請提供一個可運行的示例以允許其他用戶嘗試。 – Opal 2015-01-10 17:16:29

+0

嗨歐泊我已更新我的代碼仍然執行方法不起作用..我很新的qaurtz調度程序,所以不能確定如果cron觸發器是正確的? – elyon 2015-01-10 17:40:35

+0

什麼是石英的版本? – Opal 2015-01-10 17:41:50

回答

2

首先提供的代碼不編譯。有一種嘗試將類org.quartz.impl.StdSchedulerFactory的實例分配給一個聲明爲org.quartz.Scheduler的變量。

其次,程序運行良好,作業按計劃進行,但在任何輸出被捕獲之前存在。爲了證明它在下面的例子中運行,未註釋的//while(true){};行。該示例取自here

@Grab(group='org.quartz-scheduler', module='quartz', version='2.2.1') 

import org.quartz.*; 
import org.quartz.impl.StdSchedulerFactory; 

public class CronTriggerExample { 
    public static void main(String[] args) throws Exception { 
     JobDetail job = JobBuilder.newJob(HelloJob.class) 
     .withIdentity("dummyJobName1", "group11").build(); 

     Trigger trigger = TriggerBuilder 
     .newTrigger() 
     .withIdentity("dummyTriggerName1", "group11") 
     .withSchedule(CronScheduleBuilder.cronSchedule("0/5 * * * * ?")) 
     .build(); 


     Scheduler scheduler = new StdSchedulerFactory().getScheduler(); 
     scheduler.start(); 
     scheduler.scheduleJob(job, trigger); 

     //while(true){}; 
    } 
} 

public class HelloJob implements Job { 
    public void execute(JobExecutionContext context) throws JobExecutionException { 
     System.out.println("Hello Quartz!");  
    } 
} 

希望對你有幫助。

+0

嗨opal非常感謝代碼..但是即使在上面的代碼中執行方法也沒有被調用我沒有看到任何獲得print..is這個註解需要@Grab(group ='org.quartz-scheduler',module ='quartz',version ='2.2.1')..我試着運行代碼和沒有這個..我不知道我在哪裏錯了.. – elyon 2015-01-10 21:02:16

+0

這是準備在常規控制檯中運行代碼。要查看輸出取消註釋行:'// while(true){};'。 – Opal 2015-01-10 21:05:27

+0

您也可以複製代碼,將其保存到* whatever.groovy *並使用'groovy whatever.groovy'運行。 – Opal 2015-01-10 21:21:31