easy-workflow
目前处于内测阶段,预计2023年12月前发布正式版本
easy-workflow是什么
这是一个用纯GO语言开发的简单易用工作流引擎,可以集成到GO项目中,也可以作为Web Api Server单独运行
它有什么功能
除了基本的流程处理,它包含以下增强功能:
1、自定义节点事件。目前支持开始与结束事件;
2、支持会签。所谓会签,即节点由多人审核,全部通过才算通过,任意一人驳回即算驳回;
3、混合网关,约等于activiti中排他、并行网关、包含网关的混合体,更好支持复杂流程;
3、自由驳回功能:可以任意驳回到上游任何节点;
4、支持直接提交到上一个驳回我的节点。
部分功能基于国内特色设计
故事背景:假设某流程包含A、B、C、D、E 共5个任务节点,E节点由老板审核。而老板比较任性(向来如此)。
1、自由驳回
正常情况下,老板要把流程打回到创建人A的方式应该是:驳回到D,D再驳回到C...最终打回到流程提交人A。
但是老板有钱任性,想要直接打回到A。此时,可以使用“自由驳回”功能,满足老板直接驳回,不留情面的需求。
2、直接提交到上一个驳回我的节点
A被领导E直接驳回,于是按照领导指示做修改后重新提交,传统情况下。流程需要重新流过B、C、D几个主管。
一次两次还好,奈何老板各种不满意各种驳回,每次都要主管们再审核一遍。这样不仅效率低,还影响主管领导对员工的情绪。
老板发话:芝麻绿豆大的事,B、C、D不用再参合了,小A你改完直接提我这边吧!
此时使用"直接提交到上一个驳回我的节点",A直接提交到上次驳回他的E,皆大欢喜。
3、混合网关
国内java开发者常用的activiti引擎中包含以下几种网关:
1、ParallelGeteway:并行网关,网关中所有节点完成才可流向网关下一个节点;
2、ExclusiveGateway:排他网关,多用作条件判断,比如满足条件A,则流向节点1;满足条件B,则流向节点2,只能两者选一;
3、InclusiveGateway:包含网关,并行与排他的混合。
网关的本质是控制节点的走向、流转逻辑,从而实现更复杂的流程定义。
作者不喜欢把事情搞复杂,所以本项目中只有一种网关:混合网关,可视为activiti中排他、并行网关、包含网关的混合体。
简言之,这个流程引擎考虑国情,力求更好的满足多样化需求
开始使用
Tips:作者强烈建议阅读example中代码示例。注释比代码多一向是作者的风格,基本看完example,即可知引擎使用方法。