2015-06-05 6 views
1

Я новичок в Spring Batch. У меня есть требование запланировать несколько заданий, где одно задание зависит от завершения другого задания. В Spring Batch я обнаружил, что очень легко установить зависимость от шага. Есть ли способ сделать одну работу зависимой от другой работы?Spring Batch Зависимость от работы

+0

Почему вы не можете сделать это шаг? –

+0

Брайан, у меня есть несколько шагов, которые нужно запускать один за другим в обеих заданиях. И тогда задания также должны запускаться один за другим. – Partha

+1

Я не думаю, что можно связать работу. По крайней мере, не из того, что я могу найти в документации. Я бы предложил цепочки шагов. При необходимости вы можете повторно использовать шаги в разных заданиях. –

ответ

0

Вы можете использовать JobExecutionListener.afterJob и запустить другое задание, основанное на результатах первого. См. docs для более подробной информации.

Но может возникнуть больше смысла настраивать новое задание, охватывающее все эти шаги, и повторное использование существующих шагов в этом задании.

0

Spring Batch не обеспечивает способ зависимости между заданиями. Однако идеальным способом добиться этого является то, как вы вызываете задания. Это можно легко достичь с помощью планировщика Quartz.

Или можно сделать следующим образом.

ApplicationContext context = new ClassPathXmlApplicationContext(config); 
JobLauncher jobLauncher = (JobLauncher) context.getBean("jobLauncher"); 
Job job1 = (Job) context.getBean("testJob"); 
Job job2 = (Job) context.getBean("testJob2"); 


JobExecution execution1 = jobLauncher.run(job1, new JobParameters()); 
System.out.println("Exit Status : " + execution1.getStatus()); 
if(execution1.getStatus()==0){ 
    JobExecution execution2 = jobLauncher.run(job2, new JobParameters()); 
    System.out.println("Exit Status : " + execution2.getStatus()); 
}