如何在子作业失败时结束父作业

时间:2015-07-08 18:22:01

标签: spring-batch

我有一个Job,它有一个引用另一个Job

的步骤
<job id="childJob1" .....
  <step id="step1.1" ... />
  <step id="step1.2" ... />
</job>

<job id="parentJob" ...>
  <step id="step1" ..>
   <job ref="childJob1" />
  </step>
  <step id="step2" ..>
   <job ref="childJob2" />
  </step>
</job>

我实现了逻辑,因此当 step1.1 失败时, step1.2 不会执行, child1 作业会相应地中断。但是,当 step1.1 失败时,我还需要让整个 parentJob 中断。

如何将 child1 作业中的失败状态提升为 step1 parentJob ,或者完成整个父作业的中断?

提前致谢。

1 个答案:

答案 0 :(得分:0)

我一直在做一些研究,并找到了实现这个目标的方法:

使用JobOperator接口,我可以访问存储库中的任何作业,因此我在为嵌套作业配置的JobListener中注入了对它的引用。

当嵌套作业失败时,它会使用 getRunningExecutions(parentJobName)方法查找父作业ID。之后,我可以调用 stop(parentJobId)方法并使整个Job失败。

我想可能有一个更好的方法,但与此同时,这是正常的。