在Spring Batch中,我们可以创建一个依赖于其他步骤的步骤:
<batch:job id="firstJob">
<batch:step id="firstStep" next="secondStep">
<batch:tasklet ref="firstTasklet"/>
</batch:step>
<batch:step id="secondStep">
<batch:tasklet ref="secondTasklet"/>
</batch:step>
</batch:job>
在我的情况下,我们有依赖关系,如下所示,任务C(子)只有在A(父)和B(父)都完成时才需要执行:
Spring Batch中有什么方法可以说:
<batch:job id="firstJob">
<batch:step id="A,B" next="C">
<batch:tasklet ref="firstTasklet"/>
</batch:step>
...
</batch:job>
我想到的是在A和B上使用监听器,并跟踪数据库中的两个监听器。当两个侦听器都被执行时,可以调用任务C.
请帮忙。
注意:我使用的是Spring Batch版本:2.1.9-RELEASE,如果更高版本上面有上述要求,我也可以更新版本。
答案 0 :(得分:0)
您可以根据需要多次使用"next"
标记来定义链:
<batch:step id="A" next="B">
<batch:tasklet ref="firstTasklet"/>
</batch:step>
<batch:step id="B" next="C">
<batch:tasklet ref="secondTasklet"/>
</batch:step>
<batch:step id="C">
<batch:tasklet ref="thirdTasklet"/>
</batch:step>
链是:A - &gt; B - &gt; ç
C步骤将在B
答案 1 :(得分:0)
可能不再有用了,但是:
<job id="job1">
<split id="split1" task-executor="taskExecutor" next="stepC">
<flow>
<step id="stepA" parent="stepA" />
</flow>
<flow>
<step id="stepB" parent="stepB"/>
</flow>
</split>
<step id="stepC" parent="stepC"/>
</job>
所以C将在A和B执行后执行。
http://docs.spring.io/spring-batch/trunk/reference/html/scalability.html#scalabilityParallelSteps