日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.NET 5 开源工作流框架elsa技术研究

發布時間:2023/12/4 asp.net 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NET 5 开源工作流框架elsa技术研究 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

編者注:?工作流框架 elsa 是.NET基金會下面的開源項目,2.0版本即將在3月份發布,目前正在緊鑼密鼓的開發之中,2020年2月份我也介紹過推薦一個很棒的開源工作流elsa-core?,今天給大家推薦MVP 周國慶寫的這篇詳細文章。

今天假期第一天,研究了.NET 5開源工作流框架elsa,現在分享給大家。

一、框架簡介

elsa是一個開源的.NET Standard 工作流框架,官方網站:https://elsa-workflows.github.io/elsa-core/

以下列出了Elsa的一些關鍵功能:

  • 小巧,簡單,快速。該庫非常精簡易用,同時快速執行并且易于通過自定義活動進行擴展。

  • 調用任意工作流程,就好像它們是我應用程序的功能一樣。

  • 觸發事件,使相應的工作流程基于該事件自動啟動/恢復。

  • 支持長期運行的工作流程。當工作流程執行并遇到需要進行例如用戶輸入后,工作流將停止,保留并耗盡內存,直到可以恢復為止。這可能是幾秒鐘后,幾分鐘,幾小時,幾天甚至幾年的時間。

  • 將工作流與特定于應用程序的數據相關聯。這是長時間運行的工作流程的關鍵要求。

  • 以基于文件的格式存儲工作流,因此我可以使其成為源代碼管理的一部分。

  • 當我不想讓工作流成為源代碼管理的一部分時,可以將其存儲在數據庫中。

  • 基于Web版本的流程設計器。無論是將工作流存儲在文件系統還是數據庫中,還是將設計器在線托管還是僅在本地計算機上托管,都需要能夠在線編輯工作流。

  • 使用表達式配置工作流程活動。通常,工作流處理的信息本質上是動態的,活動需要一種與該信息進行交互的方式。工作流表達式支持這類場景。

  • 可通過特定于應用程序的活動,支持自定義存儲和腳本引擎進行擴展。

  • 調用其他工作流程。這允許從各種工作流程中調用可重用的應用程序邏輯。就像從C#調用通用功能一樣。

  • 查看和分析執行的工作流程實例。查看工作流采用的路徑,運行時狀態,發生故障的位置并補償發生故障的工作流。

  • 支持Web的工作流設計器嵌入我自己的儀表板應用程序中。可以選擇創建一個運行所有應用程序邏輯的工作流主機,還可以選擇在單個微服務中托管工作流運行時(允許進行編排和編排)。

  • 關注點分離:工作流核心庫,運行時和設計器設計上完全分離。即當工作流宿主不應該依賴于基于Web的設計器時。例如,這允許您實施基于桌面的設計器,或者根本不使用設計器,而僅使用YAML文件。最后,主機只需要工作流程定義和對持久性存儲的訪問。

  • 支持本地或云端管理,因為Elsa只是您從應用程序引用的一組NuGet軟件包。

二、產品主要功能

? ?1. 可視化的工作流編輯器

? ? Elsa帶有一個獨立的,可重復使用的HTML5工作流設計器Web組件,您可以將其嵌入自己的HTML網頁中。設計器完全在客戶端運行,并具有豐富的JavaScript API,該API可讓您定義自定義插件以擴展其功能。

? ??

? ?2. Dashboard 看板

? ?Elsa看板使您能夠定義工作流程定義并檢查執行的工作流程。要設計工作流程,只需右鍵單擊畫布,從活動選擇器中選擇一個活動,對其進行配置,然后拖動多個活動之間的連接以創建從簡單的短期運行的工作流程到高級的長期運行的工作流程的流程。

? 3. 支持長期和短期的工作流模式

? ?Elsa提供了短期和長期工作流程。可以理解為簡單的和復雜的流程設計

? ?例如,當您需要實現業務規則引擎時,短時運行的工作流程非常有用,在該流程中,如果工作流程是一個接收輸入并返回結果的函數,則可以從應用程序中調用它。

? ?長時間運行的工作流能夠輕松地實現涉及人和機器的復雜過程。長期運行過程的典型示例是文檔批準工作流,其中某些文檔的審閱過程涉及多方。這樣的工作流程可能涉及計時器,電子郵件,提醒,HTTP請求,用戶操作等。

?4. 豐富的工作流活動

? ? ?基本元語:是低級的技術活動。

  • SetVariable

? ? ? 控制流:控制流活動提供對過程的控制。例如,Fork活動會將工作流程分為兩個或多個執行分支。

  • ForEach

  • Fork

  • IfElse

  • Join

  • Switch

  • While

? ? ?工作流活動:活動代表工作流程中的單個步驟。開箱即用的Elsa NuGet套件套件為您提供了一系列不錯的活動,主要包含以下工作流活動

? ? ?工作流程:工作流類別中的活動與工作流級別的功能相關,例如相關性和信令。

  • Correlate

  • Finish

  • Signaled

  • Start

  • TriggerSignal

  • TriggerWorkflow

? ? ??控制臺活動:在實施帶有工作流的基于控制臺的應用程序時,控制臺活動非常有用。

  • ReadLine

  • WriteLine

? ? ??DropBox活動:Dropbox活動可幫助實現與Dropbox API集成。

  • SaveToDropbox

? ? ? 電子郵件活動:電子郵件活動允許您使用SMTP發送電子郵件。

  • SendEmail

? ? ? ?HTTP活動:能夠實現發送傳出HTTP請求并響應傳入HTTP請求的工作流,非常適合與基于外部Web的API集成。

  • ReceiveHttpRequest

  • SendHttpRequest

  • WriteHttpResponse

? ? ? 定時器活動:定時器活動可以基于某些基于時間的事件(例如CRON表達式,常規計時器)或在將來的特定時間觸發工作流。

  • CronEvent

  • InstantEvent

  • TimerEvent

? ? ? ?User Task:用戶任務事件是用戶自定義配置的活動,用戶可以執行一系列可能的操作。每個動作對應于活動的結果。用戶執行任何這些操作后,工作流將沿適當的路徑恢復。這里的想法是您的應用程序將使用選定的操作觸發工作流。

? ? ? ? ? 例如,這可以表示為一組簡單的按鈕。由您的應用程序決定如何呈現這些操作。

? ??5. 版本控制

? ? ? 每個工作流程定義都是版本化的。發布工作流程的新版本時,其版本號會增加。現有工作流程實例仍將使用工作流程定義的先前版本,但新工作流程將使用最新版本。? ?

? ? 6. 持久化支持

  • CosmosDB (DocumentDB)

  • Entity Framework Core:各類關系型數據庫,支持SQLServer

  • Memory:Non-persistent, use only for tests and/or short-lived workflows.

  • MongoDB

  • YesSQL

? ? 7. 表達式

? ? ? ? ? ? ?工作流活動可以使用表達式,這些表達式可以炸運行時執行,使用表達式可以引用其他活動產生的值。Elsa支持以下三種類似的表達式:

? ? ? ? ? ???文字表達式:

? ? ? ? ? ? ?文字表達式不是一個真正的解釋,當你需要設置,無需運行時計算活動屬性的值才會被使用。

? ? ? ? ? ?? JavaScript表達式:

? ? ? ? ? ? ?當你需要計算一些數值或讀取工作流程中的過程值時通常使用JavaScript表達式。

? ? ? ? ? ? ?液體表達式(這個名字很奇怪,目前還在研究中)

? ? ? ? ? ? ?當你需要創建一個HTTP請求,HTTP響應的計算通常使用流式表達式,或例如其中主體被標記使用液體發送電子郵件時。

??? 三、產品擴展能力

Elsa的最重要和最強大的功能之一就是其可擴展性。

1. 工作流活動
許多過程是特定業務領域的,并且能夠使用代表業務領域的特定語言的一組活動來創建工作流是一項強大的功能。

用特定領域的活動擴展Elsa非常簡單。只需實現一個繼承自C#的C#類,Activity并在服務容器中注冊它,就可以使用了。活動將在工作流設計器中自動變為可用,并且默認情況下其所有公共屬性都是可編輯的。

2. 持久化擴展
Elsa附帶了許多持久性提供程序,例如內存,EF Core,MongoDB,YesSQL和CosmosDB。盡管這些提供程序應滿足最常見的需求,但當然不限于這些。實現IWorkflowDefinitionStore為工作流定義提供定制存儲,并實現IWorkflowInstanceStore為工作流實例提供定制存儲。請注意,用戶可以混合和匹配,這意味著您可以例如將EntityFrameworkCoreWorkflowDefinitionStorefor用于工作流定義``。

3. JavaScript函數
JavaScript表達式附帶了一些您可能經常使用的有用的JavaScript函數。例如,它允許您從工作流程中讀取變量并引用活動輸出值。但是,如果您發現自己需要其他功能,則可以很容易地從您自己的應用程序中擴展功能集。

4. 液體表達式
Liquid表達式還附帶了一些可能經常使用的有用過濾器。例如,它允許您從工作流程中讀取變量并引用活動輸出值。但是,如果您發現自己需要其他功能,可以很容易地從您自己的應用程序中擴展過濾器集。

5. 表達式解析執行
也許JavaScript和Liquid還不夠好,可以使用用C#,VBScript或Python編寫表達式。只需實現您自己的版本IExpressionEvaluator,即可在服務容器中注冊它,即可在任何活動中使用自定義評估程序語法。

? 四、與Windows Workflow Foundation對比
? ? 目前,微軟已經停止更新發展 Windows Workflow Foundation,同時技術社區也在努力做WF to .NET Standard, 但是elsa有以下2點優勢:

  • Elsa intrinsically supports triggering events that starts new workflows and resumes halted workflow instances in an easy to use manner. E.g. workflowHost.TriggerWorkflowAsync("HttpRequestTrigger");"will start and resume all workflows that either start with or are halted on the HttpRequestTrigger.Elsa has a web-based workflow designer. I once worked on a project for a customer that was building a huge SaaS platform.

  • One of the requirements was to provide a workflow engine and a web-based editor.Although there are commercial workflow libraries and editors out there, the business model required open-source software. We used WF and the re-hosted Workflow Designer. It worked, but it wasn't great.

? 五、源代碼編譯構建

? ? ? ? 項目源代碼地址:https://github.com/elsa-workflows/elsa-core

? ? ? ? 通過VS2019,使用克隆的方式,將代碼克隆到本地編譯構建。

? ? ? ??

? ? ? ?

? ?項目使用了Angular,在調試運行前,本地需要完成NPM包安裝和JS 編譯,所以本地需要先安裝NodeJS

? ?切換到XX\src\dashboard\Elsa.Dashboard\Theme\argon-dashboard, 執行NPM Install? ? ? ?

? ?安裝過程中,涉及到Python相關的組件和環境變量配置,所以可能會安裝失敗,出現異常:

? ? ? ? ?checking for Python executable "python2" in the PATH Can't find Python executable "python2.7", you can set the PYTHON env variable.

? ? ? ? ?此時,先刪除delete?node_modules文件夾, 然后執行:?npm install --global windows-build-tools

? ? ? ? ?python組件安裝完成后,執行以下命令:


npm config set python C:\Users\zhougq\.windows-build-tools\python27\python.exe??npm install

  

? ? ?NPM Install成功后,在目錄src\dashboard\Elsa.Dashboard\Theme\argon-dashboard下執行以下指令:gulp build

? ? ?

? ? ? ?此時elsa Dashboard前端項目全部編譯通過。

接下來可以通過:

VS:Elsa.Dashboard.Web 項目工程調式

也可以在Elsa.Dashboard.Web文件件下運行dotnet run.?

瀏覽器中直接訪問:http://localhost:port/elsa/home,就可以使用了elsa了。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的.NET 5 开源工作流框架elsa技术研究的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。