基础父 Flow
为每个输入启动一个 SubFlow,并等待所有 SubFlow 完成。
SubFlowsStep.WaitFor 为每个请求创建一个 SubFlow 条件,并用 allOf 组合。只有所有子 Flow 都结束后,父 Flow 才会继续。当不需要部分完成或取消时,这是最简单的父子 fan-out。
核心实现
class SubFlowsStep(Step[list[str]]):
def __init__(self, example_subflow: ExampleSubFlow) -> None:
self.example_subflow = example_subflow
def wait_for(self, context: Context, requests: list[str]) -> Wait:
return Wait.all_of(
*(SubFlow.run(self.example_subflow, request) for request in requests)
)
def execute(self, context: Context, requests: list[str]) -> StepDecision:
return graceful_complete()
class BasicParentFlow(Flow[list[str]]):
def __init__(self, example_subflow: ExampleSubFlow) -> None:
self.subflows = SubFlowsStep(example_subflow)
def get_steps(self) -> StepList[list[str]]:
return StepList.start_step(self.subflows)
例子: examples/python/dex_examples/patterns/parallel-subflows/basic_parent_flow.py