商详的流程编排的实现方案

上一篇文章自己按照印象实现了一个编排结构,但是还是再读了一遍线上的代码,发现实现的逻辑还是有不同的,具体的是这边没有用到countdownlatch,而是维护了一个上下级关系,然后进行实现的。

例如上图,我们有A-I几个几点,A和B是流程的入口,我们首先记录出来,A、B均没有上游依赖,所以上游的列表为空,依赖数量为0,A的下游有C、D、E也记录下;
再举例G节点,他的上游只有C,所以上游list为C,数量为1,下游为空;
I节点上游为D、F,数量为2,下游为空。
开始进行流程编排,就是遍历没有上游的节点A、B。
先看A,A执行完操作之后会进行遍历子,C D E ,先看C只依赖于A,那么A执行完之后,就可以执行C,C执行完会递归读取C的子G,因为G只依赖C,所以G也执行。G没有下一级,所以再执行H,因为H只有一个上级C,所以H也执行,H没有下级,并且C的下级都完成了,所以就是返回上一级执行D,D只依赖于A,所以D执行,D执行下级I,但是I有两个上级只完成了一个,那么这个方法先不执行,但是记录他的依赖的数减一,记录已经完成了一个上游。然后返回上级执行E。E执行完,也没有下级,那么A节点下的遍历就完成。
然后执行B,B执行完成之后,读到他有下级F,且F只有一个上级,那么F执行,F执行完成后,判断有下级I,执行I,因为I一共有两个上级,D已经执行完了,且F也刚刚执行完,那么执行I。
这个图就解释完了,这里涉及同一级方法里执行父并且执行子,执行子的过程可以是和父节点在一个线程,也可以是重开线程,但是一点是明确的,就是开启线程的时间是上级执行完成。流程的入口A、B用单独的线程跑

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值