Workflow Core + asp.net core 5.0 實現簡單審批工作流

我們知道企業業務系統到處都可以審批工作流的,但也很少有像OA系統一樣複雜多級多條件的審批工作流需要設計,所以我們需要一個輕量級的容易上手的workflow框架,通過GitHub,我發現danielgerlag/workflow-core 就非常合適,我下面我通過自己的一個開源項目利用Workflow core開發了一個文檔審批工作流的原型,也算是我開源項目中的一個重要模塊

什麼是Workflow Core

Workflow Core is a light weight embeddable workflow engine targeting .NET Standard. Think: long running processes with multiple tasks that need to track state. It supports pluggable persistence and concurrency providers to allow for multi-node clusters.
這裏我簡單的說一下我對工作流的理解,一開始對工作流的映像就是審批工作流,一級批完二級,三級流轉的審批,中間還有一些判斷,比如金額>多少給什麼批,而這些金額,判斷邏輯最好是可配置化的,配置最好是圖形化的,想怎麼配都可以。但實際情況似乎並不能用簡單的方式實現上述的功能,當然有類似的成熟的工作流引擎可以做到比如國內的泛微OA,還有一個開源的Elsa,而我想要的還是最簡單的最快速,能滿足一些簡單的業務場景就可以了。 讓我們開始吧。

新建一個審批工作流

業務場景:

A用戶([email protected])上傳附件,發起一個新的workflow給B用戶([email protected])審批,如果5分鐘內沒有審批則系統自動取消該審批請求。
這裏發起新的請求需要觸發發郵件通知B用戶有新的審批請求,B審批完成,需要發郵件通知A審批結果。

定義一個Workflow

參考上面的業務場景用代碼來定義一個workflow的框架

分5個步驟

  1. InitialStep 初始化 發郵件通知審批人有新的請求
  2. UserTask 等待接收審批結果
  3. ApprovedStep 審批通過 發郵件通知申請人審批通過
  4. RejectedStep 被拒絕 發郵件通知申請人已被拒絕
  5. CancelStep 審批超時 發郵件通知申請超時被取消

InitialStep 定義

重點:initialStep 發郵件的內容是從外部輸入的,因此這裏的Input方法就是說明step是怎麼接收輸入參數的,Output表示輸出把這個step執行的結果輸出到外部
每一個Step就相當於是一個獨立的執行單元,參數和結果的輸入/輸出,全靠input/output兩個方法。

UserTask / WithOption 這是 HumanWorkflow 擴展的方法用戶接收外部事件,這裏就是人工提交審批結果

ApprovedStep 發郵件通知申請人

RejectedStep / CancelStep 功能和ApprovedStep 一致

運行看一下效果

當用戶上傳新的文件,就會開啓一個新workflow,審批人會收到郵件通知.

因爲超時流程已經結束

OK,一個簡單的workflow就完成。

最後

如果你有什麼問題可以留言告訴我
源代碼庫和測試環境
Github
關於這個項目詳細介紹一個遵循CleanArchitecture原則的Asp.net core輕量級開源項目)
RazorPageCleanArchitecture
Demo
喜歡這個開源項目請給的星星,謝謝

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章