開源工作流elsa-core
開源項目orchard主要開發人員Sipke Schoorstra 開源了一個netcore 工作流項目,地址:https://github.com/elsa-workflows/elsa-core,最新版本1.2,正在開發2.0版本 。Spike 是參照Orchard Core的工作流引擎的原理,將其轉化為一個可重用的.NET標准庫,從而使*任何* .NET應用程序都能享受工作流的強大功能,使開發人員能夠實現長期運行的工作流。 ELSA的核心理念是能夠相互連接小的可執行單元,允許您編排實際的業務流程,如文檔審批、客戶入職和訂單流程。
項目主頁上有介紹Elsa是以OrchardCore 工作流為靈感的,同時也從許多其他現有的工作流解決方案中獲得了靈感,例如Windows Workflow Foundation和Azure Logic Apps,我繼續受到圖書館的啟發,例如Workflow Core和Workflow Engine。
ELSA 與其它工作流引擎不一樣的地方,它有一個漂亮的流程設計器:https://elsa-workflows.github.io/elsa-core/docs/guides-dashboard#create-a-workflow
ELSA可用於在您自己的應用程序流程中實現工作流引擎,也可用作與您的應用程序交互的外部工作流服務。
Spike 寫了一個比較完整場景示例--用戶注冊:https://github.com/elsa-workflows/elsa-samples:
在這個場景中,我們有一個web應用程序,用戶可以在這個應用程序中注冊賬號。注冊后,我們希望該系統分配用戶角色並給用戶發送激活賬號的電子郵件 。
如果用戶沒有在規定的時間內激活其帳戶,則繼續向用戶發送提醒電子郵件。
如果用戶單擊激活郵件里的鏈接,他們的帳戶就會被激活。但是,如果用戶沒有及時激活他們的帳戶,他們的帳戶就會被清理和移除。
我們fork 這個程序代碼並下載到本地,這里我把它升級到了最新版本和.NET Core 3.1,示例使用Mongodb作為持久化,如果沒有安裝MongoDB,則可以使用docker 運行項目里的docker-compose.yaml 。
運行VS 運行不調試應用程序,使用瀏覽器訪問到/esla/home ,成功運行的話我們可以elsa的控制面板:
單擊左側的工作流菜單項,可以看到右邊的創建工作流按鈕,我們選擇導入
user-registration-workflow.json:
點擊Publish 正式發布流程。
應用正常運行還需要運行一個SMTPDev來模擬測試SMTP服務:Smtp4dev(https://github.com/rnwood/smtp4dev)是通過SMTP服務器捕獲所有發出的電子郵件,並允許你直接在該工具的用戶界面中進行查看。Smtp4dev適合處理電子郵件相關問題,尤其是在電子郵件需按時間點發送這樣的自動化過程中而你仍需要驗證其邏輯性和正確性時。
通過命令運行安裝:
dotnet tool install -g Rnwood.Smtp4dev --version "3.1.0-*"
運行smtpdev,它也是一個asp.net core 應用程序,同時開啟smtp端口,把我們的應用的smtp 配置修改成25。 瀏覽器訪問注冊頁面:
提交后,我們去看elsa的控制台,流程實例已經流轉到郵件激活:
我們打開smtpdev的頁面:
點擊激活鏈接激活賬號,進入到elsa 的面板看看我們的流程已經完成了:
查看我們的smtpdev頁面看到我們收到了激活成功的郵件