Spring batch spring批处理:如何在并行线程中运行的步骤之间添加依赖关系

Spring batch spring批处理:如何在并行线程中运行的步骤之间添加依赖关系,spring-batch,Spring Batch,我有一个Spring批处理作业,它在内部使用“拆分”并行运行一系列步骤 例如: 作业的第一步=“A” “A”分成两个平行流: 1) B1 -> B2 -> B3 -> B4 2) C1 -> C2 -> C3 -> C4 B1、B2、B3和B4是在一个弹簧批次“流程”中运行的顺序步骤,C1、C2、C3和C4是在另一个弹簧批次“流程”中运行的另一组顺序步骤 我只想在B3完成时运行C3。有什么方法可以实现这一点吗?这更像是一个流设计问题,而不是Spring

我有一个Spring批处理作业,它在内部使用“拆分”并行运行一系列步骤

例如:

作业的第一步=“A”

“A”分成两个平行流:

 1) B1 -> B2 -> B3 -> B4
 2) C1 -> C2 -> C3 -> C4
B1、B2、B3和B4是在一个弹簧批次“流程”中运行的顺序步骤,C1、C2、C3和C4是在另一个弹簧批次“流程”中运行的另一组顺序步骤


我只想在B3完成时运行C3。有什么方法可以实现这一点吗?

这更像是一个流设计问题,而不是Spring Batch的可行性问题。你不能希望在一个任务依赖于另一个任务的情况下并行运行两个任务。并行意味着每个流可以独立于其他并行运行的流运行

您需要使用子流重新设计您的流。因为C3依赖于B3,所以您可能可以将流拆分为如下内容:

B1 -> B2
         \
          B3 -> B4
         /  \
C1 -> C2     C3 -> C4

从技术上讲,在不更改流定义的情况下(例如在B3和C3之间使用共享布尔值并让C3等待)可以做您想做的事情,但这是一项解决流设计问题的难堪的工作。

谢谢。我已经尝试过这种方法(更改流定义)它根据我的要求工作。我在想,在不改变流定义的情况下,是否还有其他方法(因为所有的B都是一种类型,所有的C都是一种类型),将旧的流保持原样,将保持流定义干净、简单和易懂。我将按照您的建议继续使用新的流定义解决方案。