我想开发一套企业内部使用 OA 系统,使用 golang gin 开发,让 AI 推荐了几个流程管理的库,即工作流引擎。
发现大部分找到的都是 Java Sprint Boot 的实现,但是我还是希望用 golang gin 去实现。毕竟 golang gin 目前用的最顺手,也积累了大量的内部功能库,而且服务器资源占用低。加上是集团内几个公司一块使用,使用现成的开源实现,也达不到要求,估计也很难改。还不如自己基于工作流引擎模块去自己实现。
但是看了几个感觉比较复杂。理解成本有点高,例如:
- GoFlow:Workflow 引擎, https://github.com/s8sg/goflow/tree/master 1.2K star
- go-workflows:Workflow 引擎
- Hatchet:Workflow 引擎
- stateless:状态机库
- statemachine:状态机库
最后,我找了一个中文的库,同时包含后端和前端的实现。
后端库
https://github.com/go-workflow/go-workflow
虽然是 6 年前的项目,而且没有更新了。但是我感觉可以参考一下。使用 gin 重写一下。
我主要是看中其中的数据结构说明,及流程说明。而且是中文的比较好理解。
除了 README,还有一处接口说明:
https://github.com/go-workflow/go-workflow/blob/master/EXAMPLE.md
但是这个接口中每次需要传 userID 是不太合理,存在隐患。
前端库
- https://github.com/go-workflow/workflow-ui
- https://github.com/go-workflow/go-workflow-UI
看起来是基于 vue2 的前端组件。
为何选择这个库
- 使用 json 数组替代 BPMN 来生成流程定义,简化流程定义的生成。但是,BPMN 还是得了解一下。
- 将所有的无关流程的数据,包括用户、用户组等信息从服务中解耦出去,go-workflow 只纪录流程的流转
缺点
目前唯一的担心是,如果没有采用 BPMN,以后会不会遇到发现没有兼容的场景。
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式