没有合适的资源?快使用搜索试试~ 我知道了~
工作流引擎之Elsa入门系列教程之一 初始化项目并创建第一个工作流.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 77 浏览量
2022-07-13
16:39:40
上传
评论
收藏 615KB DOC 举报
温馨提示
试读
12页
工作流引擎之Elsa入门系列教程之一 初始化项目并创建第一个工作流.doc
资源推荐
资源详情
资源评论
工作流引擎之 Elsa 入门系列教程之一 初始化项目并创建第一个工作流
引子
工作流(Workflow)是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。
为了实现某个业务目标,需要多方参与、按预定规则提交数据时,就可以用到工作流。
通过流程引擎,我们按照流程图,编排一系列的步骤,让数据可以按照一定的规则,一定
的顺序,提交给一定的负责人进行处理,实现带有时间轴的数据协作。
目前平台主流工作流引擎有两个:
workflow-core
轻量级嵌入式工作流引擎。它支持多种持久化方式和并发提供程序,以允许多节点群集,
可以编码或者使用 json、xml 编排工作流。
这个引擎功能比较简单,但不适合处理长期工作流(定时任务类型的),随着执行的次数
越来越多,处理速度会越来越慢。
Workflow slow when the count of the execution point more and more #1028
PersistedWorkflow ExecutionPointers exponentially increase in workflow loop. #1030
而且它是异步的,通过 webapi 启动流程后不能实时返回此次流程中 step 返回的数据,官
方更新速度也不太理想,所以不选择此工作流引擎。
Elsa Workflows
Elsa Core 是一个工作流库,可在任何 .NET Core 应用程序中执行工作流。可以使用代码
和可视化工作流设计器来定义工作流。(功能更加全面,附带可视化流程设计器与流程监控
页面)
本系列文章选择使用 Elsa 作为流程引擎,准备介绍此流程引擎的使用与扩展,如何与 Abp
框架一起使用,集成 swagger,一步一步实现一个 Demo。
快速开始
我们用 vs2022 创建一个空的 ASP.NET Core Web 应用,作为工作流核心服务,包含仪表
盘与流程 API。
一步一步添加依赖与配置,并启动。后续慢慢改造。
初始化项目
创建一个名为 ElsaCore.Server 的新项目
new web -n “ElsaCore.Server”
进入项目文件夹中为项目安装包
cd ElsaCore.Server
add package Elsa
add package Elsa.Activities.Http
add package Elsa.Activities.Timers
add package Elsa.Activities.UserTask
add package Elsa.Activities.Temporal.Quartz
add package Elsa.Persistence.EntityFramework.SqlServer
add package Elsa.Server.Api
add package Elsa.Designer.Components.Web
add package Microsoft.EntityFrameworkCore.Tools
添加 ef tools 用于初始化数据库
Elsa.Activities.Temporal.Quartz 可以换成 Elsa.Activities.Temporal.Hangfire,后续会讲解集
成 Hangfire 和仪表盘。
上面的 Activities 是 Elsa 提供的几个活动实现,Http 就是通过 webapi 接口形式的、Timers
提供定时任务功能、UserTask 提供了用户审批的功能,后续会详细解释,并且还有好多其
他的 Activities,我们还可以自己实现一个新的。
修改 Program.cs
using Elsa;
using Elsa.Persistence.EntityFramework.Core.Extensions;
using Elsa.Activities.UserTask.Extensions;
using Elsa.Persistence.EntityFramework.SqlServer;
var builder = WebApplication.CreateBuilder(args);
// Elsa services.
var elsaSection = builder.Configuration.GetSection(“Elsa”);
builder.Services.AddElsa(elsa => elsa
.UseEntityFrameworkPersistence(ef =>
ef.UseSqlServer(builder.Configuration.GetConnectionString(“Default”), typeof(Program)))
.AddConsoleActivities()
.AddJavaScriptActivities()
.AddUserTaskActivities()
.AddHttpActivities(elsaSection.GetSection(“Server”).Bind)
.AddQuartzTemporalActivities()
.AddWorkflowsFrom()
)
// Elsa API endpoints.
.AddElsaApiEndpoints()
// For Dashboard.
.AddRazorPages();
var app = builder.Build();
app.UseStaticFiles()// For Dashboard.
.UseHttpActivities()
.UseRouting()
.UseEndpoints(endpoints =>
{
// Elsa API Endpoints are implemented as regular ASP.NET Core API controllers.
endpoints.MapControllers();
// For Dashboard
endpoints.MapFallbackToPage(“/_Host”);
});
app.Run();
添加 appsettings.json 配置
BaseUrl 的端口号要和 launchSettings.json 中的一致
“ConnectionStrings”: {
“Default”:
“Server=(LocalDb)\\MSSQLLocalDB;Database=ElsaServer;Trusted_Connection=True”
},
“Elsa”: {
“Server”: {
“BaseUrl”: “https://localhost:5001”
}
}
剩余11页未读,继续阅读
资源评论
书博教育
- 粉丝: 1
- 资源: 2837
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功