golang 开发 OA 系统,工作流引擎选型

更新日期: 2025-04-09 阅读次数: 189 字数: 671 分类: golang

我想开发一套企业内部使用 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:状态机库

最后,我找了一个中文的库,同时包含后端和前端的实现。

golang 工作流引擎选型

后端库

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 聊聊, 查看更多联系方式