1 回答

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超8個(gè)贊
不支持向狀態(tài)鏈添加拆分,這是執(zhí)行所需操作的正確方法(任務(wù) 1 同步后跟任務(wù) 2 和 3 并行):
public Job job() {
final Flow masterFlow = new FlowBuilder<Flow>("flow1").start(step("step1")).build();
final Flow slaveFlow = new FlowBuilder<Flow>("flow2").split(new SimpleAsyncTaskExecutor())
.add(
new FlowBuilder<Flow>("flow2.1").start(step("step2.1")).build(),
new FlowBuilder<Flow>("flow2.2").start(step("step2.2")).build())
.build();
return (jobBuilderFactory
.get("job")
.incrementer(new RunIdIncrementer())
.start(masterFlow)
.next(slaveFlow)
.build())
.build();
}
private TaskletStep step(final String name) {
return stepBuilderFactory.get(name)
.tasklet((StepContribution contribution, ChunkContext chunkContext) -> {
System.out.println(name + " start");
Thread.sleep(1000);
System.out.println(name + " end");
return RepeatStatus.FINISHED;
})
.build();
}
step1 開始
step1結(jié)束
step2.1開始
step2.2開始
step2.1結(jié)束
step2.2結(jié)束
希望這可以幫助。
更新
您的代碼試圖將拆分添加到狀態(tài)鏈中,并且根據(jù) FlowBuilder.SplitBuilder 的文檔,它根本不受支持。
* <em>Note:</em> Adding a split to a chain of states is not supported. For example, the following configuration
* is not supported. Instead, the configuration would need to create a flow3 that was the split flow and assemble
* them separately.
*
* <pre>
* // instead of this
* Flow complexFlow = new FlowBuilder<SimpleFlow>("ComplexParallelFlow")
* .start(flow1)
* .next(flow2)
* .split(new SimpleAsyncTaskExecutor())
* .add(flow3, flow4)
* .build();
*
* // do this
* Flow splitFlow = new FlowBuilder<SimpleFlow>("parallelFlow")
* .start(flow3)
* .split(new SimpleAsyncTaskExecutor())
* .add(flow4).build();
*
* Flow complexFlow = new FlowBuilder<SimpleFlow>("ComplexParallelFlow")
* .start(flow1)
* .next(flow2)
* .next(splitFlow)
* .build();
* </pre>
添加回答
舉報(bào)