網頁:https://elsa-workflows.github.io/elsa-core/docs/guides-dashboard
本節包括以下內容:
- 創建一個新的ASP.NET Core Web應用程序,該應用程序承載Elsa儀表盤和各種Elsa服務。
- 配置實體框架提供程序。
- 創建一些工作流。
創建ASP.NET Core項目
創建一個名為Elsa.Guides.Dashboard.WebApp的新的空ASP.NET Core 3.0項目,並添加以下程序包:
- Elsa
- Elsa.Dashboard
- Elsa.Persistence.EntityFrameworkCore
更新Startup文件
用一下代碼來替換Startup.cs文件:

using Elsa.Activities.Email.Extensions; using Elsa.Activities.Http.Extensions; using Elsa.Activities.Timers.Extensions; using Elsa.Dashboard.Extensions; using Elsa.Persistence.EntityFrameworkCore.DbContexts; using Elsa.Persistence.EntityFrameworkCore.Extensions; using Microsoft.AspNetCore.Builder; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; namespace Elsa.Guides.Dashboard.WebApp { public class Startup { public Startup(IConfiguration configuration) { Configuration = configuration; } private IConfiguration Configuration { get; } public void ConfigureServices(IServiceCollection services) { services // Add services used for the workflows runtime. .AddElsa(elsa => elsa.AddEntityFrameworkStores<SqliteContext>(options => options.UseSqlite(Configuration.GetConnectionString("Sqlite")))) .AddHttpActivities(options => options.Bind(Configuration.GetSection("Elsa:Http"))) .AddEmailActivities(options => options.Bind(Configuration.GetSection("Elsa:Smtp"))) .AddTimerActivities(options => options.Bind(Configuration.GetSection("Elsa:Timers"))) // Add services used for the workflows dashboard. .AddElsaDashboard(); } public void Configure(IApplicationBuilder app) { app .UseStaticFiles() .UseHttpActivities() .UseRouting() .UseEndpoints(endpoints => endpoints.MapControllers()) .UseWelcomePage(); } } }
更新appsettings.json文件
配置HTTP,Email和Timer活動,您也可以手動配置:

{ "ConnectionStrings": { "Sqlite": "Data Source=c:\\data\\elsa-dashboard.db;Cache=Shared" }, "Elsa": { "Http": { "BaseUrl": "http://localhost:59862" }, "Smtp": { "Host": "localhost", "Port": "2525" }, "Timers": { "SweepInterval": "0:00:00:10" } } }
運行EF遷移
在應用程序開始運行之前,我們需要創建Sqlite數據庫。 Elsa.Persistence.EntityFrameworkCore軟件包附帶了我們可以運行的必要遷移,實現了IDesignTimeDbContextFactory接口。
需要先安裝EF工具,dotnet tool install --global dotnet-ef --version 3.1.0(注:當前最新版本號已經更新到5.0.3)
打開一個終端窗口,然后導航到Elsa.Guides.Dashboard.WebApp項目文件夾。IDesignTimeDbContextFactory實現期望存在環境變量:EF_CONNECTIONSTRING。
我們將從終端窗口設置此變量,然后執行EF Core命令。 輸入以下命令:
SET EF_CONNECTIONSTRING=Data Source=c:\data\elsa-dashboard.db;Cache=Shared
dotnet ef database update --context SqliteContext
如果一切順利,現在應該在c:\ data中存在一個elsa-dashboard.db文件。
(注:我踩了一個坑,提示SQLite Error 14: 'unable to open database file'。折騰了許久,最后手工創建了c:\data目錄,才OK)
運行儀表盤
運行應用程序,您將看到ASP.NET Core歡迎頁面。導航到/ elsa/home可以顯示儀表板:
創建工作流
從左側菜單中,選擇“Workflows”菜單項,此時workflow definitions列表是空的,點擊Create Workflow按鈕。
右鍵單擊畫布上的任意位置,然后單擊Add Activity以添加第一個活動。 選擇Receive HTTP Request活動,添加后,雙擊該活動以配置其屬性,如下所示:
- Path:
/hello-world
- Method:
GET
- Read Content:
unchecked
然后增加另外一個工作流Send HTTP Response(注:最新版本是Send HTTP Response),配置如下:
- Status Code:
200
- Content:
Hello World!
- Content Type;
text/plain
- Response Headers:
x-powered-by:Elsa Workflows
然后連接這兩個工作流。
在單擊“Publish”之前,單擊設計器右上方的齒輪,補充工作流的名稱和說明。 例如:
- Name:
Hello World
- Description:
A simple Hello World workflow
如下圖所示:
執行工作流
要使用剛才建立的工作流(注:剛才的工作流需要先Publish),請打開瀏覽器並導航到http://localhost:59862/hello-world(注:依賴於你自己的應用程序地址,我的是http://localhost:5001/hello-world)。
如下所示:
查看工作流的執行情況
返回儀表盤,然后從左側菜單中選擇“工作流”。 您應該看到一個工作流列表,其中只有一個工作流名為Hello World和一個完成的實例。
單擊“已完成”以查看已完成的工作流實例的列表:
單擊超鏈接的工作流實例ID,以獲取其詳細信息:
請注意,當您將鼠標懸停在每個活動上時,相應的活動執行日志條目也會突出顯示,從而可以輕松檢查哪些活動以什么順序運行。
總結
你也可以導入工作流,比如你可以導入this workflow definition workflow ,它描述的是A Simple Document Approval Workflow。
盡管我們在同一ASP.NET Core應用程序中托管了Dashboard和Workflow Host,但這不是強制性的。 將儀表板與工作流運行時分開是很常見的。 只需確保兩個應用程序連接到相同的數據庫,除非您采用不同的策略將工作流定義發布到運行時。
源碼
https://github.com/elsa-workflows/elsa-guides/tree/master/src/Elsa.Guides.Dashboard.WebApp