You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现Netflix Conductor并行子工作流执行完毕且父流在子流失败时失败?

解决方案:让并行子工作流全部执行完毕并按需让父工作流失败

要实现「两个子工作流全部执行完毕,且任一子流失败时父工作流失败」的需求,你可以通过以下两步配置实现,无需依赖optional标记:

1. 配置FORK分支任务,确保子流失败不终止其他分支

在每个SUB_WORKFLOW任务中添加continueOnFailure: true属性,这样即使某一个子工作流失败,另一个分支仍会继续执行,不会被中途取消。

示例FORK任务配置:

{
  "name": "parallel_subflows_fork",
  "taskReferenceName": "parallel_subflows_fork",
  "type": "FORK_JOIN",
  "forkTasks": [
    [
      {
        "name": "child_workflow_1",
        "taskReferenceName": "child_workflow_1_ref",
        "type": "SUB_WORKFLOW",
        "subWorkflowParam": {
          "name": "child_workflow_1",
          "version": 1
        },
        "continueOnFailure": true
      }
    ],
    [
      {
        "name": "child_workflow_2",
        "taskReferenceName": "child_workflow_2_ref",
        "type": "SUB_WORKFLOW",
        "subWorkflowParam": {
          "name": "child_workflow_2",
          "version": 1
        },
        "continueOnFailure": true
      }
    ]
  ],
  "joinOn": ["child_workflow_1_ref", "child_workflow_2_ref"]
}

2. JOIN后添加状态判断任务,控制父工作流最终状态

默认JOIN任务确实不支持直接配置失败规则,但可以在JOIN之后添加一个SWITCH任务,结合FAIL任务实现父工作流的失败逻辑:

  • 利用表达式判断两个子工作流的执行状态(检查是否存在FAILED或COMPLETED_WITH_ERRORS状态)
  • 若存在失败子流,执行FAIL任务将父工作流标记为FAILED;若全部成功,则直接结束父工作流

示例判断任务配置:

{
  "name": "check_subflow_status",
  "taskReferenceName": "check_subflow_status",
  "type": "SWITCH",
  "expression": "${(child_workflow_1_ref.status == 'FAILED' || child_workflow_1_ref.status == 'COMPLETED_WITH_ERRORS') || (child_workflow_2_ref.status == 'FAILED' || child_workflow_2_ref.status == 'COMPLETED_WITH_ERRORS')}",
  "defaultCase": [
    {
      "name": "mark_parent_failed",
      "taskReferenceName": "mark_parent_failed",
      "type": "FAIL",
      "inputParameters": {
        "message": "At least one sub-workflow failed execution"
      }
    }
  ],
  "cases": {
    "false": []
  }
}

逻辑说明

  • continueOnFailure: true:确保单个子流失败不会中断其他并行分支的执行,所有子工作流都会运行完毕
  • JOIN任务:等待所有分支的子工作流执行完成后,再进入后续的状态判断
  • SWITCH+FAIL组合:根据子流的最终状态,决定父工作流是正常完成还是标记为失败,替代了optional标记导致父流始终成功的问题

内容的提问来源于stack exchange,提问作者mkleint

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 18:05:25