2015-01-09 93 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