Skip to content

GO语言开发的简单易用工作流

License

Notifications You must be signed in to change notification settings

kcxg/easy-workflow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

easy-workflow

目前处于内测阶段,预计2023年12月前发布正式版本

easy-workflow是什么

这是一个用纯GO语言开发的简单易用工作流引擎,可以集成到GO项目中,也可以单独作为Web Api Server运行

它有什么功能

除了基本的流程处理,它包含以下增强功能:
1、自定义事件。目前支持3种事件,分别是:a、节点开始 b、节点结束 c、任务结束;
2、支持会签。所谓会签,即节点由多人审核,全部通过才算通过,任意一人驳回即算驳回;
3、混合网关,约等于activiti中排他、并行网关、包含网关的混合体,更好支持复杂流程;
4、自由驳回功能:可以任意驳回到上游任何节点;
5、支持直接提交到上一个驳回我的节点。

用一个故事讲述功能点

故事背景:假设某流程包含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中排他、并行网关、包含网关的混合体。
简言之,这个流程引擎考虑国情,力求更好的满足多样化需求

4、事件

事件可以用作通知、改变流程行为。举几个例子:
a、节点开始事件可以用于解析节点中角色。流程引擎并不知道节点中“主管”角色到底是谁,此时必须使用开始事件从业务库中解析“主管”角色的用户ID;
b、节点事件可用于通知,提醒各任务处理人;
c、任务完成事件与节点事件的区别在于:一个节点可能有多个任务,节点开始与结束事件在节点生命周期中只会各运行一次。而任务事件在每个任务提交后都会触发。
在示例代码中,使用任务完成事件改变了会签节点的行为,使原本需要3人全部通过的节点变成只要2人通过。

开始使用

Tips:作者强烈建议阅读example中代码示例。注释比代码多一向是作者的风格,基本看完example,即可知引擎使用方法。

About

GO语言开发的简单易用工作流

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 100.0%