在本快速入門中,我們將瞭解一個執行工作流的最小 ASP.NET Core 應用程式。工作流將偵聽傳入的 HTTP 請求並寫回一個簡單的響應。

我們將:

  • 建立 ASP.NET Core 應用程式。
  • 使用 Elsa 的 Workflow Builder API 以程式設計方式定義工作流定義,當 HTTP 請求從指定的 URL 傳入時,該 API 會執行。

專案

建立一個名為 ElsaQuickstarts.WebApp.HelloWorld 的新的空 ASP.NET Core 專案:

dotnet new web -n "ElsaQuickstarts.WebApp.HelloWorld"

CD 到建立的專案資料夾中:

cd ElsaQuickstarts.WebApp.HelloWorld

新增以下包:

dotnet add package Elsa
dotnet add package Elsa.Activities.Http

工作流程

建立一個名為 HelloWorld.cs 的新檔案並新增以下程式碼:

using System.Net;
using Elsa.Activities.Http;
using Elsa.Builders; namespace ElsaQuickstarts.WebApp.HelloWorld
{
/// <summary>
/// A workflow that is triggered when HTTP requests are made to /hello-world and writes a response.
/// </summary>
public class HelloWorld : IWorkflow
{
public void Build(IWorkflowBuilder builder)
{
builder
.HttpEndpoint("/hello-world")
.WriteHttpResponse(HttpStatusCode.OK, "<h1>Hello World!</h1>", "text/html");
}
}
}

上述工作流有兩個活動。第一個活動 HttpEndpoint 表示一個 HTTP 端點,可以使用 HTTP 客戶端(包括 Web 瀏覽器)呼叫該端點。第一個活動連線到第二個活動 WriteHttpResponse,後者將響應寫入 HTTP 客戶端。

當活動如本例所示連結時,第二個活動連線到第一個活動的“完成”結果。您還可以明確連線到“完成”結果,如下所示:

builder
.HttpEndpoint("/hello-world")
.When(OutcomeNames.Done)
.WriteHttpResponse(HttpStatusCode.OK, "<h1>Hello World!</h1>", "text/html");

任何時候您想連線到“Done”以外的結果時,都需要明確連線到活動的結果


Startup

接下來,開啟 Startup.cs 並將其內容替換為以下內容:

using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection; namespace ElsaQuickstarts.WebApp.HelloWorld
{
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services
.AddElsa(options => options
.AddHttpActivities()
.AddWorkflow<HelloWorld>());
} public void Configure(IApplicationBuilder app)
{
app.UseHttpActivities();
}
}
}

執行

執行程式並等待,直到看到以下輸出:

Now listening on: http://localhost:5000

Now listening on: https://localhost:5001

Application started. Press Ctrl+C to shut down.

開啟 Web 瀏覽器並導航到 https://localhost:5001/hello-world。

結果應如下所示: