在Spring Batch的另一个步骤中有条件地调用一个步骤

时间:2019-07-04 14:00:27

标签: spring-batch

我的工作分为以下三个步骤:

<job id="SomeJob" xmlns="http://www.springframework.org/schema/batch">

      <step id="deciderTaskLet" xmlns="http://www.springframework.org/schema/batch">
        <tasklet ref="deciderTaskLetRef"/>
        <next on="step1" to="step1"/>
        <next on="step2" to="step2"/> 
        <end on="FAILED"/> 
      </step>


      <step id="step1" xmlns="http://www.springframework.org/schema/batch">
        <tasklet>
            <chunk reader="step1Reader" processor="step1Processor" 
            writer="dummyWriter" commit-interval="1">
            </chunk>
            <listeners>
             <listener ref="step1Reader"/>
             <listener ref="step1Processor"/> 
            </listeners>
        </tasklet>
      </step>

      <step id="step2" xmlns="http://www.springframework.org/schema/batch">
        <tasklet>
            <chunk reader="step2Reader" processor="step2Processor" 
            writer="dummyWriter" commit-interval="1">
            </chunk>
            <listeners>
             <listener ref="step2Reader"/>
             <listener ref="step2Processor"/> 
            </listeners>
        </tasklet>
      </step>         
</job>

第一步:

Tasklet,它决定流程应该走哪一步。

第2步或第3步

这很好。没问题

第二步:

这是一个读取记录并进行处理的步骤。

这很好。没问题

第三步:

有一个地方:

Reader将读取记录并将其一一传递给processor

但是如果记录满足某些条件(某些业务逻辑):

此记录应该在步骤2中进行处理。 意味着此步骤的阅读器和处理器应从步骤3

中调用。

这将是 PER RECORD基础

我们可以实现吗?

我在论坛上进行了搜索,但似乎所有解决方案都基于afterStep

也就是说,决定逻辑将被触发完成步骤完成 但是我们想要的是决策逻辑应该在在步骤中

内触发

有人可以帮忙吗?

0 个答案:

没有答案