Spring batch 子作业失败时如何结束父作业

Spring batch 子作业失败时如何结束父作业,spring-batch,Spring Batch,我有一份工作,它有一个参考另一份工作的步骤 <job id="childJob1" ..... <step id="step1.1" ... /> <step id="step1.2" ... /> </job> <job id="parentJob" ...> <step id="step1" ..> <job ref="childJob1" /> </step> <st

我有一份工作,它有一个参考另一份工作的步骤

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

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

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

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


我想可能会有更好的方法,但与此同时,这很好。

你说的“中断”到底是什么意思?结束了吗?失败?拔掉插头?我所说的“中断”是指它可能会失败,因此我可以检查外部依赖项(文件、表中的信息等,通常由第三方提供,以防它们丢失-这是我工作的既定流程的一部分)并尝试再次运行它,以便它可以在失败的地方恢复。我有点困惑。如果从Spring批处理运行子作业,并且子作业失败(BatchStatus=FAILED),则父步骤也将标记为失败。这对你不管用吗?我也是。“我只是想它会像你说的那样工作,”迈克尔·米内拉,但事实并非如此。正如我在日志中所看到的,即使子作业失败(通过在侦听器中设置ExitStatus或抛出RuntimeException),父作业中的步骤也会以完成状态结束,并且调用父作业中的下一步,就好像没有发生任何错误一样。子作业的批处理状态是什么?