特性

  • 节点的执行可以同步也可以异步
  • 异步的情况可能分布式路由到别的实例
  • 同步的情况如何让引擎而不是节点做路由
  • 执行分支可能分裂并行计算,可能存在多次分裂
  • 合并可能进行层合并,而且每一次调起未必满足合并条件
  • [x] 如何表示循环

    解决方案

  • [x] 同步和异步都按照异步来开发flow,同步服务要有上层队列/map,按照Reactor模式实现接入层

  • Redis分布式状态,完成一次操作进行一次状态更新
  • 节点完成分裂工作,写入Task,把下一步列表返回,然后由引擎来做并行或者串行的调度
  • 不能用死的字段表示层级,而要用函数做映射
  • 分裂一层一层地分,合并也一层一层地合
  • 循环要有循环计数器,防止死循环
  • 如何划分职责?
  • [ ] Step 设置【下一步】的输入,指定或者发出【下一步】

    实现细节

  • [x] flow + map[string]steps

  • flow上存放全局信息以及进度,对flow仅支持串行读写
  • steps构执行进度成图,并且这个图是可前向回溯的,回溯到任意位置,完成数据读取,历史节点仅分裂节点可写
  • steps格式a-b-c,表示分裂了两次的flow