golang 開發 OA 系統,工作流引擎選型
我想開發一套企業內部使用 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,以後會不會遇到發現沒有兼容的場景。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/YjJN9CY6Qw30XUNBegprtQ