Workflow Core + asp.net core 5.0 实现简单审批工作流
我們知道企業(yè)業(yè)務(wù)系統(tǒng)到處都可以審批工作流的,但也很少有像OA系統(tǒng)一樣復(fù)雜多級多條件的審批工作流需要設(shè)計,所以我們需要一個輕量級的容易上手的workflow框架,通過GitHub,我發(fā)現(xiàn)danielgerlag/workflow-core?就非常合適,我下面我通過自己的一個開源項目利用Workflow core開發(fā)了一個文檔審批工作流的原型,也算是我開源項目中的一個重要模塊
什么是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.
這里我簡單的說一下我對工作流的理解,一開始對工作流的映像就是審批工作流,一級批完二級,三級流轉(zhuǎn)的審批,中間還有一些判斷,比如金額>多少給什么批,而這些金額,判斷邏輯最好是可配置化的,配置最好是圖形化的,想怎么配都可以。但實際情況似乎并不能用簡單的方式實現(xiàn)上述的功能,當(dāng)然有類似的成熟的工作流引擎可以做到比如國內(nèi)的泛微OA,還有一個開源的Elsa,而我想要的還是最簡單的最快速,能滿足一些簡單的業(yè)務(wù)場景就可以了。讓我們開始吧。
新建一個審批工作流
業(yè)務(wù)場景:
A用戶(neozhu@126.com)上傳附件,發(fā)起一個新的workflow給B用戶(new163@163.com)審批,如果5分鐘內(nèi)沒有審批則系統(tǒng)自動取消該審批請求。
這里發(fā)起新的請求需要觸發(fā)發(fā)郵件通知B用戶有新的審批請求,B審批完成,需要發(fā)郵件通知A審批結(jié)果。
定義一個Workflow
參考上面的業(yè)務(wù)場景用代碼來定義一個workflow的框架
分5個步驟
InitialStep 初始化 發(fā)郵件通知審批人有新的請求
UserTask 等待接收審批結(jié)果
ApprovedStep 審批通過 發(fā)郵件通知申請人審批通過
RejectedStep 被拒絕 發(fā)郵件通知申請人已被拒絕
CancelStep 審批超時 發(fā)郵件通知申請超時被取消
InitialStep 定義
重點:initialStep 發(fā)郵件的內(nèi)容是從外部輸入的,因此這里的Input方法就是說明step是怎么接收輸入?yún)?shù)的,Output表示輸出把這個step執(zhí)行的結(jié)果輸出到外部
每一個Step就相當(dāng)于是一個獨立的執(zhí)行單元,參數(shù)和結(jié)果的輸入/輸出,全靠input/output兩個方法。
UserTask / WithOption 這是 HumanWorkflow 擴展的方法用戶接收外部事件,這里就是人工提交審批結(jié)果
ApprovedStep 發(fā)郵件通知申請人
RejectedStep / CancelStep 功能和ApprovedStep 一致
運行看一下效果
當(dāng)用戶上傳新的文件,就會開啟一個新workflow,審批人會收到郵件通知.
因為超時流程已經(jīng)結(jié)束
OK,一個簡單的workflow就完成。
最后
如果你有什么問題可以留言告訴我
源代碼庫和測試環(huán)境
關(guān)于這個項目詳細(xì)介紹一個遵循CleanArchitecture原則的Asp.net core輕量級開源項目)
RazorPageCleanArchitecture?:https://github.com/neozhu/RazorPageCleanArchitecture
Demo
喜歡這個開源項目請給的星星,謝謝
總結(jié)
以上是生活随笔為你收集整理的Workflow Core + asp.net core 5.0 实现简单审批工作流的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows 11 小技巧- 安装
- 下一篇: asp.net ajax控件工具集 Au