工作流引擎设计与实现·基础篇

文章介绍了工作流中的基本流程类型,包括顺序、条件、分支/合并和子流程,强调了各个流程元素的作用,如开始节点、结束节点、任务节点、决策节点、分支节点和合并节点。此外,文中还提及了LogicFlow作为流程编辑器框架在流程定义中的应用,以及如何通过扩展其数据格式来添加流程属性和业务属性,以支持更复杂的业务逻辑。
摘要由CSDN通过智能技术生成

常见的流程

简单顺序流程

每个节点按顺序执行

条件流程一

决策节点输出边中存在表达式,流程向边表达式值为true行进。

条件流程二

使用决策节点,该表达式返回下一个节点的名称

分支/合并流程

分支与合并要成对出现,由合并节点判断是否具备合并条件。

子流程

主流程中存在子流程,当所有子流程结束,主流程才结束。

流程元素

工作流中,会定义一些常用的流程元素。

开始节点

流程最开始节点,整个流程由此节点开始,没有输入边。

结束节点

流程经过该节点后,流程将结束,没有输出边。

任务节点

在该节点上,会产生一些任务,可以是人工任务或者自动化任务,如果为人工任务,一般会产生阻塞,只有任务完成,达到一定条件,才能驱动流程往下一个节点行进。

决策节点

该节点存在决策表达式,流程经过该节点时,会执行决策表达式,决定下一步往哪个节点行进。

分支节点

当存在多条支线时,需要分支节点。

合并节点

与分支节点配合,多条支线最终会合并到该节点,由该节点决定是否可以往下一步行进。

子流程节点

主流程中衍生出的流程,该流程有自己的生命周期,子流程也会产生阻塞,所以只有子流程执行结束,才能驱动流程往下一节点行进。

输入/输出边

连接流程节点元素的边。

流程元素分析

元素名称 元素属性 元素行为 备注
开始节点 编码、名称、前置拦截器、后置拦截器 执行节点 元素行为主要是调用输出边的执行方法
结束节点 编码、名称、前置拦截器、后置拦截器 执行节点 元素行为主要是修改流程实例状态及归档。
任务节点 编码、名称、前置拦截器、后置拦截器、表单、参与者、参与者处理类、任务类型、参与类型、提醒时间、重复提醒间隔、期待完成时间、是否自动完成 执行节点 元素属性主要是用于定义任务的,可自行扩展。元素行为主要是判断是否可以往下一节点行进,如果可以,则调用输出边执行方法。
决策节点 编码、名称、前置拦截器、后置拦截器、决策表达式 执行节点 元素行为主要是执行决策表达式,找到输出边并执行输出边方法
分支节点 编码、名称 执行节点 元素行为调用输出边的执行方法
合并节点 编码、名称 执行节点 元素行为主要是判断是否可以合并(往下一节点行进)如果可以,则调输出边执行方法。
子流程节点 编码、名称、前置拦截器、后置拦截器、流程名称、流程版本号 执行节点 元素行为调用输出边的执行方法
输入/输出边 编码、名称、表达式 执行输出边 如果下一节点为任务节点,则会执行创建任务处理器方法;如果下一节点为子流程,则会执行创建子流程处理器方法;否则,直接调用下一节点的执行方法。

流程定义

在工作流中,业内习惯使用bpmn规范来定义流程,但是因该规范过于庞大且复杂,所以本工作流的设计并不采用该定义规范。而是以LogicFlow流程编辑器框架为基础,进行自定义扩展。(省去前端再次技术选型的问题)这里做一下简单的介绍。

上文我们提到的流程元素就是构成流程的基础单元,其中各节点对应着LogicFlow的node,而输入/输出边则对应着LogicFlow的edge。

以下是LogicFlow的样例文件:

{
   
	"nodes": [{
   
			"id": "start",
			"type": "circle",
			"x": 340,
			"y": 160,
			"text": "开始"
		},
		{
   
			"id": "apply",
			"type": "rect",
			"x": 520,
			"y": 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值