複数のジョブを作成し、複数のジョブをループで実行しています。これらのジョブを順番に実行する必要がありますが、すべてのステップのアイテム リーダーが実行され、すべてのジョブのアイテム ライターが順番に実行されています。ジョブのアイテム リーダーとアイテム ライターが完了し、制御が別のジョブに移ります。
サンプルコードは次のとおりです。
public void jobprocess() throws Exception {
List<Job> jobList = BatchJob.fetchAllJobs();
for(Job job:jobList){
jobLauncher.run(job, params);
}
}
public List<Job> fetchAllJobs() throws Exception {
List<Object> list = service.findAll();
List<Job> jobBuilderList = new ArrayList<>();
int i = 0;
for(Object obj:list){
Step step = stepBuilderFactory.get("step"+i)
.<Student, Student>chunk(500)
.reader(ListItemReaderV2(obj))
.processor(Processor)
.writer(Writer)
.build();
jobBuilderList.add(jobBuilderFactory.get("job"+i)
.incrementer(new RunIdIncrementer())
.listener(this)
.start(step)
.build());
i++;
}
return jobBuilderList;
}