Netflix Conductor fork 扩展

定义:调度并行任务集

参数:

名称
描述
forkTasks 任务列表。每一个子列表并行执行,子列表中的任务是以串行方式进行执行的

例子:

{
  "name": "fork_join",
  "taskReferenceName": "forkx",
  "type": "FORK_JOIN",
  "forkTasks": [
    [
      {
        "name": "task_10",
        "taskReferenceName": "task_10",
        "type": "SIMPLE"
      },
      {
        "name": "sub_workflow_x",
        "taskReferenceName": "wf3",
        "inputParameters": {
          "mod": "${task_1.output.mod}",
          "oddEven": "${task_1.output.oddEven}"
        },
        "type": "SUB_WORKFLOW",
        "subWorkflowParam": {
          "name": "sub_flow_1",
          "version": 1
        }
      }
    ],
    [
      {
        "name": "task_11",
        "taskReferenceName": "task_11",
        "type": "SIMPLE"
      },
      {
        "name": "sub_workflow_x",
        "taskReferenceName": "wf4",
        "inputParameters": {
          "mod": "${task_1.output.mod}",
          "oddEven": "${task_1.output.oddEven}"
        },
        "type": "SUB_WORKFLOW",
        "subWorkflowParam": {
          "name": "sub_flow_1",
          "version": 1
        }
      }
    ]
  ]
}

当执行时;task10和task11同时执行


如果并行的数量不明确,则需要使用动态fork


动态fork

定义:和FORK_JOIN 任务功能类似,需要并行的数量不确定时使用

参数

名称
描述
dynamicForkTasksParam 并行执行工作流任务配置列表参数的名称
dynamicForkTasksInputParamName
参数的名称该参数的值映射入如参数的名称,作为fork任务的引用名称和值

例子:

{
  "inputParameters": {
     "dynamicTasks": "${taskA.output.dynamicTasksJSON}",
     "dynamicTasksInput": "${taskA.output.dynamicTasksInputJSON}"
  }
  "type": "FORK_JOIN_DYNAMIC",
  "dynamicForkTasksParam": "dynamicTasks",
  "dynamicForkTasksInputParamName": "dynamicTasksInput"
}
dynamicForkTasksInputParamName 引用inputParameters的值

包含的taskA如下

{
  "dynamicTasksInputJSON": {
    "forkedTask1": {
      "width": 100,
      "height": 100,
      "params": {
        "recipe": "jpg"
      }
    },
    "forkedTask2": {
      "width": 200,
      "height": 200,
      "params": {
        "recipe": "jpg"
      }
    }
  },
  "dynamicTasksJSON": [
    {
      "name": "encode_task",
      "taskReferenceName": "forkedTask1",
      "type": "SIMPLE"
    },
    {
      "name": "encode_task",
      "taskReferenceName": "forkedTask2",
      "type": "SIMPLE"
    }
  ]
}





猜你喜欢

转载自blog.csdn.net/zhangchangbin123/article/details/79848099