首页 > 其他分享 >[.NET项目实战] Elsa开源工作流组件应用(一): Elsa工作流简介

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

时间:2024-03-15 17:36:50浏览次数:23  
标签:活动 定义 Elsa 任务 工作 开源 NET 执行

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字符串,并持久化到数据库。当程序重新启动时,会从数据库中恢复工作流实例。

标签:活动,定义,Elsa,任务,工作,开源,NET,执行
From: https://www.cnblogs.com/jevonsflash/p/18075880

相关文章

  • AspNetCore8.0实战
    前言想变优秀的第N天。学习张老师的Blog.Core。1.创建Asp.NetCoreAPI1.1创建项目启用OpenAPI:sawgger不适用顶级语句:使用main函数使用控制器:controller1.2配置说明iisSettings:iis配置。http:kestrl启动配置。IISExpress:iis启动配置。2.仓储+服务创建以下公共类......
  • 深入理解.NET集合框架:类型与用途
    在这篇博客中,我们将详细探讨.NET集合框架的各个成员,以及它们的特点和适用场景。了解这些集合类型对于编写高效、可靠的.NET应用程序至关重要。以下是.NET集合框架中一些最常用的集合类型的概述:一、数组(Array)特点:固定长度,元素类型可以相同也可以不同。用法:适用于已知数据大小且......
  • 轻量级.net standard微信支付登录Nuget开源库
    我个人编写的库,在我个人网站,小程序等很多地方都在使用中,大家可以搜索小程序什邡市宅猫君网络工作室或者到我的网站store.zhaimaojun.cn 去体验支付和登录效果。本库主要实现了nativepay(二维码支付)jsapipay(小程序直接调起支付),需要注意的是这是基于api3的,非api2。以下演示如......
  • Java IO流之Netty实现聊天通信功能
    目录1Netty1.1概要设计1.1.1技术选型1.1.2数据库设计1.1.3通信设计1.1.3.1报文协议格式1.1.3.2报文交互场景1.2Netty简单示例1.2.1pom.xml1.2.2发送和接收1.2.3示例说明1.2.3.1线程阻塞问题1.2.3.2服务端和接收端EventLoopGroup1.3Netty中handler概述1.4聊天服务......
  • 开源ocr 识别手机截图定位
    #coding:utf-8#importuiautomator2asu2importtimefromtqdmimporttqdmfromloguruimportloggerfromcnocrimportCnOcrdefcalculate_centroid(points):iflen(points)==0:returnNonenum_points=len(points)sum_x=sum(poi......
  • Dynamsoft Barcode Reader 9.6.40.NET Crack
    .NET版本-9.x发行说明9.6.40(03/14/2024)改进更新了DynamsoftBarcodeReader库和其他相应依赖库的安全性。改进并发实例License的多线程处理逻辑。提高了条码解码性能:提高了解码OneD和PDF417条形码时的准确性。提高了密集DataMatrix代码的可读性。固定的......
  • 掌握 Kubernetes 故障排除技巧:kubectl命令的基本指南
    Kubernetes彻底改变了容器编排,简化了应用程序的管理和扩展。然而,与任何复杂系统一样,Kubernetes集群也会遇到问题,需要及时解决才能保持最佳性能和可靠性。在本文中,我们将深入探讨必要的kubectl命令,这些命令是诊断和排除Kubernetes集群问题不可或缺的工具。无论您是新手还是经......
  • 猫头虎分享已解决Bug || 网络攻击(Network Attack):DDoSError, NetworkIntrusion
    博主猫头虎的技术世界......
  • 使用ScottPlot开源库在WinForms中快速实现大型数据集的交互式图表显示
    思维导航前言ScottPlot类库介绍ScottPlot类库支持平台和框架ScottPlot类库源代码新建WinForms项目安装ScottPlot.WinForms包折线图实现柱状图实现饼图实现散点图实现项目演示入口项目源码地址优秀项目和框架精选DotNetGuide技术社区交流群前言在.NET应用开......
  • .NET项目轻松配置:掌握Packages.props和Build.props的利用
     概述:`Directory.Packages.props`和`Directory.Build.props`是.NET项目中的配置文件,分别用于统一管理NuGet包引用和自定义MSBuild构建过程。它们提高了解决方案的可维护性,通过集中配置,简化了项目文件,使团队协作更一致,同时避免了在每个项目中重复相同的配置,提高了开发效率。在......