From c539ce19736e0db38e3539b43dc9221193be76a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=8B=E9=91=AB=E9=91=AB?= <1368084801@qq.com> Date: Mon, 8 Apr 2024 17:37:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9EElsa=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/.vuepress/navbar.ts | 11 +- src/.vuepress/sidebar.ts | 1 + src/articles/README.md | 2 + src/articles/elsa-workflow/Introduction.md | 125 ++++++++++++++++++ src/articles/elsa-workflow/README.md | 72 ++++++++++ .../image/Introduction/1712568868597.png | Bin 0 -> 52052 bytes 6 files changed, 206 insertions(+), 5 deletions(-) create mode 100644 src/articles/elsa-workflow/Introduction.md create mode 100644 src/articles/elsa-workflow/README.md create mode 100644 src/articles/elsa-workflow/image/Introduction/1712568868597.png diff --git a/src/.vuepress/navbar.ts b/src/.vuepress/navbar.ts index b0d8f60d..95e8b4bb 100644 --- a/src/.vuepress/navbar.ts +++ b/src/.vuepress/navbar.ts @@ -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/" }, @@ -40,9 +41,9 @@ export const Navbar = navbar([ icon: "edit", link: "/liuyanban", }, - { - text: "ChatGPT", - icon: "wechat", - link: "/chatgpt", - }, + // { + // text: "ChatGPT", + // icon: "wechat", + // link: "/chatgpt", + // }, ]); diff --git a/src/.vuepress/sidebar.ts b/src/.vuepress/sidebar.ts index 7843ae0a..95c9d439 100644 --- a/src/.vuepress/sidebar.ts +++ b/src/.vuepress/sidebar.ts @@ -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", diff --git a/src/articles/README.md b/src/articles/README.md index 004c6995..95d922c8 100644 --- a/src/articles/README.md +++ b/src/articles/README.md @@ -9,6 +9,8 @@ icon: align - [分布式中间件系列](/articles/distributed-middleware/) +- [Elsa Workflow](/articles/elsa-workflow/) + - [MAUI系列](/articles/maui/) - [Linux系列](/articles/linux/) diff --git a/src/articles/elsa-workflow/Introduction.md b/src/articles/elsa-workflow/Introduction.md new file mode 100644 index 00000000..44fd9b75 --- /dev/null +++ b/src/articles/elsa-workflow/Introduction.md @@ -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 流程设计器)。 +::: + + + +## 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(); + }); + 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(); + + // 从应用程序注册自定义工作流(如果有)。 + elsa.AddWorkflowsFrom(); +}); + +// 配置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) diff --git a/src/articles/elsa-workflow/README.md b/src/articles/elsa-workflow/README.md new file mode 100644 index 00000000..b919ce32 --- /dev/null +++ b/src/articles/elsa-workflow/README.md @@ -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 的多功能性使其适用于广泛的应用,从简单的任务自动化到复杂的业务流程管理。 其模块化架构允许与现有系统轻松集成,使其成为希望为其项目添加工作流功能的开发人员的首选。 +::: + + + +## 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 的强大功能,将您的应用程序提升到效率和用户满意度的新高度! \ No newline at end of file diff --git a/src/articles/elsa-workflow/image/Introduction/1712568868597.png b/src/articles/elsa-workflow/image/Introduction/1712568868597.png new file mode 100644 index 0000000000000000000000000000000000000000..e679cc3da00ac343df6582f552ca73d6d34e2ea3 GIT binary patch literal 52052 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 B-@5<+ literal 0 HcmV?d00001