taskflow是一款轻量、简单易用、可灵活扩展的通用任务编排框架,基于有向无环图(DAG)的方式实现,框架提供了组件复用、同步/异步编排、条件判断、分支选择等能力,可以根据不同的业务场景对任意的业务流程进行编排
有向无环图(DAG):
1)定义:在图论中,如果一个有向图无法从某个顶点出发经过若干条边回到该点,则这个图是一个有向无环图(DAG图)
2)有向无环图具有完整严密的拓扑性质,使其具有很强的流程表达能力;通过有向无环图,可以解决两个问题:从逻辑上,对各个节点的依赖关系进行了组织;从技术上,有依赖关系的节点需要等待执行,无依赖关系的可以并发执行
有问题需要沟通、或者有特定的场景需求可以给作者发邮件说明,感谢您的意见。
框架简介
taskflow是一款轻量、简单易用、可灵活扩展的通用任务编排框架,基于有向无环图(DAG)的方式实现,框架提供了组件复用、同步/异步编排、条件判断、分支选择等能力,可以根据不同的业务场景对任意的业务流程进行编排
使用DAG模型的优势
任务模块化
对于DAG任务模型,任务之间没有很强的相关性,每个任务模块职责单一,根据输入进行相应的处理,然后输出相应的结果,可复用性极强
易于调整
基于已有的DAG模型,如果想要调整编排流程,往往只需要修改个别任务即可,可以通过修改图结构或者个别任务的具体实现,即可完成调整
结构清晰
将业务的处理流程与具体实现进行解耦,根据流程的定义就可以快速的了解整个系统的概况以及包含哪些模块
开发语言
JDK8+
核心能力
项目目录
名词解释
通用能力封装
降低开发维护难度
平台化能力建设
1、2、3依次串行执行
1、2、3并行执行
1执行完后,2、3再并行执行
1、2、3中任意一个执行完后,就可以执行4
4弱依赖1、2、3节点,每个节点在执行完后都可以执行4的准入条件,判断当前是否已经满足执行节点4的条件,若满足则直接执行
根据节点的执行结果选择要执行的子节点,如上图所示,最终的执行路径可能是:1->3->6->9
流程复杂,没有严格的串行、并行过程
DAG图中的节点通过入度(indegree)来表示依赖的节点个数,只有当节点的入度为0时,当前节点才可以执行
DAG图中的弱依赖不计入节点的入度,如下图中的节点4初始入度等于0
实际的执行流程可能存在三种情况