Spring Batch:子步骤取决于多个父步骤

时间:2014-06-03 09:25:18

标签: spring-batch

在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(父)都完成时才需要执行:

enter image description here

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,如果更高版本上面有上述要求,我也可以更新版本。

2 个答案:

答案 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