0

複数のジョブを作成し、複数のジョブをループで実行しています。これらのジョブを順番に実行する必要がありますが、すべてのステップのアイテム リーダーが実行され、すべてのジョブのアイテム ライターが順番に実行されています。ジョブのアイテム リーダーとアイテム ライターが完了し、制御が別のジョブに移ります。

サンプルコードは次のとおりです。

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;
        }
4

2 に答える 2