Skip to content

Commit

Permalink
新增Elsa相关文档
Browse files Browse the repository at this point in the history
  • Loading branch information
goodsxx committed Apr 8, 2024
1 parent ef9ed1f commit c539ce1
Show file tree
Hide file tree
Showing 6 changed files with 206 additions and 5 deletions.
11 changes: 6 additions & 5 deletions src/.vuepress/navbar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ export const Navbar = navbar([
prefix: "/articles/",
children: [
{ text: "分布式中间件系列", icon: "blog", link: "distributed-middleware/" },
{ text: "Elsa Workflow", icon: "blog", link: "elsa-workflow/" },
{ text: "MAUI系列", icon: "blog", link: "maui/" },
{ text: "Linux系列", icon: "blog", link: "linux/" },
{ text: "微服务系列", icon: "blog", link: "micro-service/" },
Expand All @@ -40,9 +41,9 @@ export const Navbar = navbar([
icon: "edit",
link: "/liuyanban",
},
{
text: "ChatGPT",
icon: "wechat",
link: "/chatgpt",
},
// {
// text: "ChatGPT",
// icon: "wechat",
// link: "/chatgpt",
// },
]);
1 change: 1 addition & 0 deletions src/.vuepress/sidebar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ export const Sidebar = sidebar({
"/about-this-website/": "structure",
//"/articles/": "structure",
"/articles/distributed-middleware/": "structure",
"/articles/elsa-workflow/": "structure",
"/articles/linux/": "structure",
"/articles/micro-service/": "structure",
"/articles/maui/": "structure",
Expand Down
2 changes: 2 additions & 0 deletions src/articles/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ icon: align

- [分布式中间件系列](/articles/distributed-middleware/)

- [Elsa Workflow](/articles/elsa-workflow/)

- [MAUI系列](/articles/maui/)

- [Linux系列](/articles/linux/)
Expand Down
125 changes: 125 additions & 0 deletions src/articles/elsa-workflow/Introduction.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
---
title: 安装部署
date: 2024-04-06
category:
- Elsa
tag:
- Elsa
- Workflow
- 工作流
timeline: true
order: 1
---
::: tip ✨✨✨✨✨
在本章中,我们将学习如何安装部署 Elsa Server(Elsa 服务器) 及 Elsa Studio(Elsa 流程设计器)。
:::

<!-- more -->

## Elsa Server

Elsa Server 是一个 ASP.NET Core Web Api 应用程序,可让您使用 REST API 和执行工作流程来管理工作流程。 您可以将工作流存储在数据库、文件系统甚至云存储等不同位置。

本章我们将学习如何部署一个 Elsa 服务,并以 SqlServer 进行数据持久化。

### 1. 创建 Elsa 服务器项目

首先,我们需要创建一个新的 ASP.NET Core Web Api 项目并安装以下 Nuget 包:

- `Elsa`
- `Elsa.EntityFrameworkCore`
- `Elsa.EntityFrameworkCore.SqlServer`
- `Elsa.Identity` 添加认证授权模块
- `Elsa.Scheduling` 支持自动调度
- `Elsa.Workflows.Api` Elsa Api 端点
- `Elsa.CSharp` 提供 C# 脚本支持

### 2. 更新 Program.cs

现在,我们需要添加一些代码来使我们的服务器正常工作。 在项目中打开 Program.cs 文件,并将其内容替换为下面提供的代码。 此代码执行许多操作,例如设置数据库连接、启用用户身份验证以及准备服务器以处理工作流。

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

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddElsa(elsa =>
{
// 公开Elsa API终结点。
elsa.UseWorkflowsApi(x =>
{
var module = x.Module;
module.AddFastEndpointsAssembly<Program>();
});
elsa.AddSwagger();

// 将管理层配置为使用EF Core。
elsa.UseWorkflowManagement(management => management.UseEntityFrameworkCore());

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

// 用于身份验证/授权的默认标识功能。
elsa.UseIdentity(identity =>
{
identity.TokenOptions = options => options.SigningKey = "sufficiently-large-secret-signing-key"; // This key needs to be at least 256 bits long.
identity.UseAdminUserProvider();
});

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

// 启用C#工作流表达式
elsa.UseCSharp();
// 启用JavaScript工作流表达式
elsa.UseJavaScript();
// 启用HTTP活动。
elsa.UseHttp();
// 使用计时器活动。
elsa.UseScheduling();


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

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

// 配置CORS以允许托管在不同来源上的设计器应用程序调用API。
builder.Services.AddCors(cors => cors
.AddDefaultPolicy(policy => policy
.AllowAnyOrigin() // For demo purposes only. Use a specific origin instead.
.AllowAnyHeader()
.AllowAnyMethod()
.WithExposedHeaders("x-elsa-workflow-instance-id"))); // 需要Elsa Studio,以便支持从设计器运行工作流。或者,您可以使用“*”通配符来公开所有标头。
// 添加心跳检测
builder.Services.AddHealthChecks();

// Build the web application.
var app = builder.Build();

// Configure web application's middleware pipeline.
app.UseCors();
app.UseRouting(); // Required for SignalR.
app.UseAuthentication();
app.UseAuthorization();
app.UseWorkflowsApi(); // Use Elsa API endpoints.
app.UseWorkflows(); // Use Elsa middleware to handle HTTP requests mapped to HTTP Endpoint activities.
app.UseSwaggerUI();// 注册Elsa Swagger中间件
app.Run();
```

### 3. 启动服务

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

```c#
dotnet run --urls "https://localhost:5001"
```

访问 https://localhost:5001/swagger/index.html 查看 Swagger 文档

![Swagger 文档](image/Introduction/1712568868597.png)
72 changes: 72 additions & 0 deletions src/articles/elsa-workflow/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
---
title: Elsa Workflow
date: 2024-04-06
category:
- Elsa
tag:
- Elsa
- Workflow
- 工作流
---

::: tip ✨✨✨✨✨
Elsa Workflows 是一个强大而灵活的执行引擎,封装为一组开源 .NET 库,旨在为 .NET 应用程序注入工作流功能。

最新的 [Elsa 3](https://v3.elsaworkflows.io/) 代表了其前身 [Elsa 2](https://v2.elsaworkflows.io/) 的巨大飞跃。这个版本不仅仅是升级,这是一次彻底的重写,带来了大量的改进、新功能和架构变化。

借助 Elsa,开发人员可以将逻辑直接编织到他们的系统中,增强功能和自动化,并与应用程序的核心功能无缝对齐。

Elsa 中的工作流可以通过两种方式定义:

- **以编程方式**:通过编写 .NET 代码,开发人员可以定义针对特定业务需求量身定制的复杂工作流。
- **可视化**:使用内置设计器,非开发人员或喜欢可视化方法的人可以轻松创建和修改工作流。

Elsa 的多功能性使其适用于广泛的应用,从简单的任务自动化到复杂的业务流程管理。 其模块化架构允许与现有系统轻松集成,使其成为希望为其项目添加工作流功能的开发人员的首选。
:::

<!-- more -->

## Elsa Workflow 概述

Elsa Workflows 不仅仅是另一个工作流引擎;它是一种强大而灵活的解决方案,旨在为您的 .NET 应用程序注入活力。借助 Elsa,您可以对简单和复杂的业务流程进行建模,确保您的应用程序不仅功能强大,而且高效且用户友好。

**为什么选择艾尔莎?**

- **灵活性**:无论您是想自动执行简单的任务,还是设计复杂的多步骤业务流程,Elsa都能满足您的需求。其模块化设计确保您可以根据自己的确切需求进行定制。
- **视觉和程序化设计**:使用Elsa,您不必在编码和设计之间做出选择。您可以以编程方式定义工作流以提高精度,也可以使用直观的可视化设计器进行快速开发和协作。
- **集成就绪**:Elsa 旨在与他人一起玩。无论您是与第三方服务集成还是与现有系统集成,Elsa 都能轻松完成。
- **开源**:作为开源,Elsa 受益于不断增强其能力的贡献者社区。您将获得一个不仅功能强大而且符合最新行业标准的工具。

**主要特点**

- **活动库**:一组丰富的现成活动,可作为工作流的构建基块。
- **触发器**:根据特定事件或条件自动启动工作流。
- **长期和短期运行工作流**:无论您是需要运行数天、等待用户输入的工作流,还是需要在几毫秒内完成的工作流,Elsa 都可以处理。
- **可扩展性**:需要一些独特的东西?Elsa 被设计为可扩展的,允许您添加自定义活动或与其他系统无缝集成。
- **动态表达式**:在运行时使用 C#、JavaScript 或 Liquid 表达式动态计算值。

**可能的用例**

- **业务流程自动化**:简化订单处理、HR 入职或内容审批等业务流程。
- **任务自动化**:自动执行从数据输入到报告生成的重复性任务。
- **集成工作流**:连接不同的系统,确保它们之间的数据流顺畅。
- **警报和监控**:设置工作流以监控系统并发送警报或自动采取纠正措施。

深入了解文档,了解 Elsa Workflows 提供的所有功能,并开始创建动态、工作流驱动的应用程序之旅!

## Elsa Workflow 优点

Elsa Workflows 带来了众多优势,使其成为开发人员和企业的首选。这就是为什么您应该考虑 Elsa 满足您的工作流程需求的原因:

- **快速开发**:借助 Elsa 的可视化设计器和广泛的活动库,您可以在创纪录的时间内设计和部署工作流程,从而加快开发周期。
- **可伸缩性**:Elsa 基于 .NET 构建,具有固有的可扩展性,确保随着业务的增长,您的工作流可以轻松处理增加的负载。
- **经济高效**:使用 Elsa 实现流程自动化可以通过减少手动工作、最大限度地减少错误和优化资源使用来显着节省成本。
- **灵活性**:Elsa的程序化和视觉设计的双重方法意味着您可以制作符合您确切要求的工作流程,无论多么复杂。
- **开源优势**: 作为开源,Elsa 由开发人员社区不断改进。这可确保您始终能够访问最新功能和最佳实践。
- **无缝集成**:Elsa 旨在与其他系统顺利集成,无论是数据库、第三方服务还是自定义应用程序,确保生态系统的凝聚力。
- **增强用户体验**:自动化和优化的流程可带来更快的响应时间、一致的结果和更好的整体用户体验。
- **强大的安全性**:凭借内置的身份验证和授权功能,Elsa 可确保您的工作流程和数据保持安全。
- **透明的监控和记录**:使用Elsa的监控功能密切关注您的工作流程。跟踪进度,诊断问题,并确保一切顺利进行。
- **社区与支持**:加入一个蓬勃发展的艾尔莎爱好者社区。无论您是有问题、需要指导还是想分享您的专业知识,Elsa 社区都随时为您服务。

利用 Elsa Workflows 的强大功能,将您的应用程序提升到效率和用户满意度的新高度!
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit c539ce1

Please sign in to comment.