Elsa 工作流服务器设置

在本章中,我们将学习如何设置 Elsa 服务器。

Elsa 服务器是什么?

Elsa 服务器是一个基于 ASP.NET Core 的网络应用程序,它允许你使用 REST API 管理和执行工作流。你可以将工作流存储在各种位置,如数据库、文件系统,甚至是云存储中。在本指南中,我们将学习如何设置一个!

设置

1. 创建 Elsa 服务器项目

首先,我们需要创建一个新的 ASP.NET 项目。打开命令行工具并运行以下命令:

dotnet new web -n "ElsaServer" -f net8.0
cd ElsaServer
dotnet add package Elsa
dotnet add package Elsa.EntityFrameworkCore
dotnet add package Elsa.EntityFrameworkCore.Sqlite
dotnet add package Elsa.Identity
dotnet add package Elsa.Scheduling
dotnet add package Elsa.Workflows.Api
dotnet add package Elsa.CSharp

这些命令将设置一个新的 Web 项目并添加必要的 Elsa 包。

2. 更新 Program.cs

现在,我们需要添加一些代码使我们的服务器工作起来。 打开项目中的 Program.cs 文件,并将其内容替换为下面提供的代码。 这段代码做了很多事情,比如设置数据库连接、启用用户认证以及准备服务器处理工作流。

Program.cs:

using Elsa.EntityFrameworkCore.Modules.Management;
using Elsa.EntityFrameworkCore.Modules.Runtime;
using Elsa.Extensions;

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddElsa(elsa =>
{
    // 配置管理层以使用 EF Core。
    elsa.UseWorkflowManagement(management => management.UseEntityFrameworkCore());

    // 配置运行时层以使用 EF Core。
    elsa.UseWorkflowRuntime(runtime => runtime.UseEntityFrameworkCore());

    // 默认身份验证特性用于认证/授权。
    elsa.UseIdentity(identity =>
    {
        identity.TokenOptions = options => options.SigningKey = "足够长的秘密签名密钥"; // 此密钥需要至少256位长度。
        identity.UseAdminUserProvider();
    });

    // 配置 ASP.NET 认证/授权。
    elsa.UseDefaultAuthentication(auth => auth.UseAdminApiKey());

    // 暴露 Elsa API 端点。
    elsa.UseWorkflowsApi();

    // 设置一个 SignalR 中心以接收服务器的实时更新。
    elsa.UseRealTimeWorkflows();

    // 启用 C# 工作流表达式
    elsa.UseCSharp();

    // 启用 HTTP 活动。
    elsa.UseHttp();

    // 使用计时器活动。
    elsa.UseScheduling();

    // 从应用注册自定义活动(如果有)。
    elsa.AddActivitiesFrom<Program>();

    // 从应用注册自定义工作流(如果有)。
    elsa.AddWorkflowsFrom<Program>();
});

// 配置 CORS 允许不同源的设计器应用调用 API。
builder.Services.AddCors(cors => cors
    .AddDefaultPolicy(policy => policy
        .AllowAnyOrigin() // 仅演示用途。应使用特定的源。
        .AllowAnyHeader()
        .AllowAnyMethod()
        .WithExposedHeaders("x-elsa-workflow-instance-id"))); // Elsa Studio 需要此头以支持从设计器运行工作流。或者,您可以使用 `*` 通配符暴露所有头。

// 添加健康检查。
builder.Services.AddHealthChecks();

// 构建 Web 应用程序。
var app = builder.Build();

// 配置 Web 应用程序的中间件管道。
app.UseCors();
app.UseRouting(); // SignalR 所需。
app.UseAuthentication();
app.UseAuthorization();
app.UseWorkflowsApi(); // 使用 Elsa API 端点。
app.UseWorkflows(); // 使用 Elsa 中间件处理映射到 HTTP 端点活动的 HTTP 请求。
app.UseWorkflowsSignalRHubs(); // 可选的 SignalR 集成。Elsa Studio 使用 SignalR 接收来自服务器的实时更新。

app.Run();

3. 启动服务器

为了在端口 5001 上运行应用程序,请执行以下命令:

dotnet run --urls "https://localhost:5001"

我们刚刚做了什么?

快速回顾一下我们已经设置的内容:

  • 我们让 Elsa 使用 Entity Framework Core 存储数据。
  • 我们配置了用户认证和授权。
  • 确保我们的服务器能与 Elsa Studio 应用通信。
  • 我们添加了实时更新和处理 HTTP 请求的能力。
  • 我们添加了健康检查来监控服务器状态。
  • 最后,我们使服务器准备好运行。

下一步

随着你的 Elsa 服务器运行起来,你现在可以继续 创建一个 Elsa Studio 应用

总结

在本指南中,我们逐步介绍了设置 Elsa 服务器的步骤。你可以在这里查看最终结果和更多细节:Elsa GitHub 指南页面

在本文档中