• 工作流定义
    工作流通过JSON格式的DSL定义,DSL内包含多个任务定义,任务从功能上可以分为控制任务(分支,条件,子工作流等)和应用任务(运行在远端机器上的微服务),从执行方式上又可以分为系统任务和worker任务
  • 任务定义
    1. 所有的任务在被工作流使用前都需要被注册在Conductor上
    2. 任务能够被重复使用在多个工作流中。
  • 系统任务
    1. 系统任务被运行在Conductor服务上,被Conductor服务管理
    2. 具体种类如下:

      Name
      Purpose
      DYNAMIC A worker task which is derived based on the input expression to the task, rather than being statically defined as part of the blueprint
      DECIDE Decision tasks - implements case...switch style fork
      FORK Forks a parallel set of tasks. Each set is scheduled to be executed in parallel
      FORK_JOIN_DYNAMIC Similar to FORK, but rather than the set of tasks defined in the blueprint for parallel execution, FORK_JOIN_DYNAMIC spawns the parallel tasks based on the input expression to this task
      JOIN Complements FORK and FORK_JOIN_DYNAMIC. Used to merge one of more parallel branches*
      SUB_WORKFLOW Nest another workflow as a sub workflow task. Upon execution it instantiates the sub workflow and awaits it completion
      EVENT Produces an event in a supported eventing system (e.g. Conductor, SQS)

      Conductor也提供接口让用户自定义系统任务执行在Conductor服务中

    3. 具体例子参看https://netflix.github.io/conductor/metadata/systask/
  • worker任务
    worker任务是可以通过任何语言实现,部署在其他的服务器上,任务通过Conductor提供的rest api在执行后更新状态。worker任务在DSL中被定义的type为SIMPLE