[.NET项目实战] Elsa开源工作流组件应用(一): Elsa工作流简介

Elsa工作流简介

工作流是什么?

引用维基百科中对工作流的解释:

是对工作流程及其各操作步骤之间业务规则的抽象、概括、描述。工作流建模,即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算

Elsa 是一个功能强大的工作流库,支持在任何 .NET 应用程序中执行工作流。Elsa 可以使用C#代码或使用基于Web的可视化设计器生成JSON等方式定义工作流程。

Elsa 可用于多种场景,包括:

  • 长时间运行的工作流程,例如订单履行和产品批准。
  • 运行时间较短的工作流程,例如发送电子邮件和生成 PDF。
  • 计划的工作流,例如发送每日报告。
  • 事件驱动的工作流,例如在用户注册时发送欢迎电子邮件。

Elsa免费且开源,并且有较完善的文档,了解更多请访问官网官方仓库

工作流的基本概念

要定义一个工作流,需要包含两个最基本的信息:

  1. 对一系列任务的执行过程的描述;
  2. 各任务之间执行关系的描述。

在Elsa中,这些被抽象为:

  1. 活动(Activity): 执行任务的实体,如:写入文本、发送邮件、执行SQL、执行HTTP请求等;
  2. 工作流(Workflow):包含多个活动,以及活动之间的执行关系, 如:并行、串行、分支、循环等;

有了活动和工作流,就可以描述一个任务的执行过程了。但为了满足业务的复杂性,Elsa还引入了更多的功能和概念。

上下文系统

活动的本质是执行任务,任务的执行需要数据支持,或返回结果。下游的任务也可能依赖于上游任务的返回结果,如:一个发送执行结果邮件任务,需要知道接收信息和前一个任务的执行结果。上下文系统就是用来支持任务执行过程中的数据传递的。

上下文系统包括:

  • 变量(Variable)
  • 工作流输入/输出(Input/Output)
  • 活动输入/输出
  • 结果(OutCome)

阻断/恢复功能

一些场景下,任务不会连续执行,需要暂停任务,任务恢复后,需要继续执行。

这些场景包括:

  • 延时触发,或按计时器规则触发的任务;
  • 接收到某个消息才执行的任务。

这些功能在Elsa中使用书签(Bookmark)事件(Event)等类型实现。

设计器(Designer)

硬编码的方式已经无法满足复杂的业务场景,设计器可以将工作流设计为一个图形化的界面,用户可以拖拽活动,连线,设置活动的属性;活动被打包成一个节点(Node),与活动之间的连线表示活动之间的依赖关系。

定义(Definition)与实例化(Instance)

工作流定义描述了一个工作流的结构,比如:名称,变量,包含的活动等,可以理解为一个工作流的模板。

工作流定义在Elsa初始化时会"注册" 到资源池中,每个工作流定义都有一个唯一的ID。

使用设计器生成的工作流,通过序列化成JSON字符串,并持久化到数据库。

使用硬编码创建的工作流,在Elsa初始化时将工作流注册到工作流定义并持久化到数据库。

实例化是根据定义创建一个工作流的实例,工作流实例包含工作流状态(WorkflowState)以及活动实例(ActivityState)。与定义一样,它们通过序列化成JSON字符串,并持久化到数据库。当程序重新启动时,会从数据库中恢复工作流实例。

相关推荐
李树健1232 小时前
.NET 高级开发 | .NET 中的序列化和反序列化
.net
李树健1235 小时前
.NET 10 & C# 14 New Features 新增功能介绍-ASP.NET Core
c#·asp.net·.net
无风听海5 小时前
.NET10之IHostedService深度解析
c#·.net
无风听海5 小时前
.NET10之ASP.NET Core控制器构造函数选择规则深度解析
后端·asp.net·.net
CSharp精选营6 小时前
.NET被上海信创“拉黑”了?刚子给你讲明白:别慌,这事儿没那么严重
c#·.net·信创
唐青枫1 天前
C#.NET Monitor 与 Mutex 深入解析:进程内同步、跨进程互斥与使用边界
c#·.net
不正经绣才1 天前
【扣子Coze教程】发票智能归档工作流,批量识别+同步飞书(附源码)
飞书·教程·工作流·coze·扣子·发票归档
会写代码的建筑师1 天前
.NET 控制台后台程序实践细节总结
后端·.net
阿捞21 天前
在 .NET 中使用 Moonshot Kimi + AgentFramework:从 SDK 到 Agent 的完整实践
html·.net·xhtml
步步为营DotNet2 天前
解锁.NET 11 中 Microsoft.Extensions.AI 在智能后端开发的深度应用
人工智能·microsoft·.net