2017-08-03 32 views
1

我想按順序執行多個作業。我正在嘗試它,但不知何故它不會被使用cron作業觸發。在Java中使用石英的作業鏈接

我不確定它的正確實施方法。 有人能指導我嗎?

謝謝..

 Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); 
     JobChainingJobListener jobListener =new JobChainingJobListener("ChainListener"); 

     JobDetail job1 = JobBuilder.newJob(MyJob1.class) 
       .withIdentity(MyJob1.class.getName()). 
       withDescription(MyJob1.class.getName()) 
       .build(); 

     JobDetail job2 = JobBuilder.newJob(MyJob2.class) 
       .withIdentity(MyJob2.class.getName()). 
       withDescription(MyJob2.class.getName()) 
       .build(); 

     JobDetail job3 = JobBuilder.newJob(MyJob3.class) 
       .withIdentity(MyJob3.class.getName()). 
       withDescription(MyJob3.class.getName()) 
       .build();   

     Trigger jobTrigger = TriggerBuilder.newTrigger() 
       .withIdentity("MyTrigger") 
       .withSchedule(CronScheduleBuilder.cronSchedule(cronTrigger)).build(); 
     scheduler.scheduleJob(job1, jobTrigger);  
     scheduler.addJob(job2, true); 
     scheduler.addJob(job3, true);    

     jobListener.addJobChainLink(job1.getKey(), job2.getKey()); 
     jobListener.addJobChainLink(job2.getKey(), job3.getKey()); 
     scheduler.getListenerManager().addJobListener(jobListener); 
     scheduler.start(); 

回答

0

添加組名工作以及觸發標識能夠執行它之後。 這裏是正確的代碼:

Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); 
    JobChainingJobListener jobListener =new JobChainingJobListener("ChainListener"); 

    JobDetail job1 = JobBuilder.newJob(MyJob1.class) 
      .withIdentity(MyJob1.class.getName(),"BatchJobGroup"). 
      withDescription(MyJob1.class.getName()) 
      .build(); 

    JobDetail job2 = JobBuilder.newJob(MyJob2.class) 
      .withIdentity(MyJob2.class.getName(),"BatchJobGroup"). 
      withDescription(MyJob2.class.getName()) 
      .build(); 

    JobDetail job3 = JobBuilder.newJob(MyJob3.class) 
      .withIdentity(MyJob3.class.getName(),"BatchJobGroup"). 
      withDescription(MyJob3.class.getName()) 
      .build();   

    Trigger jobTrigger = TriggerBuilder.newTrigger() 
      .withIdentity("MyTrigger","BatchJobGroup"). 
      .withSchedule(CronScheduleBuilder.cronSchedule("* * * * *")).build(); 

    scheduler.scheduleJob(job1, jobTrigger);  
    scheduler.addJob(job2, true); 
    scheduler.addJob(job3, true);    

    jobListener.addJobChainLink(job1.getKey(), job2.getKey()); 
    jobListener.addJobChainLink(job2.getKey(), job3.getKey()); 
    scheduler.getListenerManager().addJobListener(jobListener); 
    scheduler.start();