工作流引擎Elsa入门、初始化项目和创建第一个工作流的系列教程之一

简介

()是对工作流及其各个操作步骤之间的业务规则的抽象概括描述。

当需要多方参与并根据预定规则提交数据以实现业务目标时,可以使用工作流。

通过流程引擎,我们按照流程图安排一系列的步骤,使数据可以按照一定的规则和顺序提交给某个负责人进行处理,实现数据与时间线的配合。

平台上有两种主流的工作流引擎:

轻量级嵌入式工作流引擎。它支持多种持久化方法和并发提供者以允许多节点集群,并且可以使用 json、xml 编码或编排工作流。

这个引擎的功能比较简单,但是不适合处理长期的工作流(计划任务的类型)。随着执行次数的增加,处理速度会越来越慢。

当点数越来越多时变慢#1028

在循环中。 #1030

而且是异步的,启动流程后不能实时返回这个流程中步骤返回的数据,官方更新速度不理想,所以没有选择这个工作流引擎。

Elsa Core 是一个工作流库,用于在任何 .NET Core 应用程序中执行工作流。可以使用代码和可视化工作流设计器来定义工作流。 (功能比较全面,有可视化的流程设计器和流程监控页面)

本系列文章选择使用Elsa作为流程引擎,准备介绍这个流程引擎的使用和扩展,如何与Abp框架结合使用,并进行集成,一步一步实现一个Demo。

快速入门

我们使用创建一个空的 ASP.NET Core Web 应用程序作为工作流核心服务,包括仪表板和流程 API。

一步一步添加依赖和配置,开始。随后的改革。

初始化项目

创建一个名为 的新项目。

 dotnet new web -n "ElsaCore.Server"

进入项目安装包的项目文件夹

cd ElsaCore.Server
dotnet add package Elsa
dotnet add package Elsa.Activities.Http
dotnet add package Elsa.Activities.Timers
dotnet add package Elsa.Activities.UserTask
dotnet add package Elsa.Activities.Temporal.Quartz
dotnet add package Elsa.Persistence.EntityFramework.SqlServer
dotnet add package Elsa.Server.Api
dotnet add package Elsa.Designer.Components.Web
dotnet add package Microsoft.EntityFrameworkCore.Tools

添加ef工具初始化数据库

Elsa…可以替换成Elsa…,后面会在 and 中解释。

以上是Elsa提供的几个的实现。 Http是一个接口的形式,提供定时任务和用户审批功能。后面我会详细解释,还有很多其他的。我们您也可以自己实施一个新的。

修改.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();

添加 .json 配置

端口号要和.json里的一样

  "ConnectionStrings": {
    "Default": "Server=(LocalDb)\MSSQLLocalDB;Database=ElsaServer;Trusted_Connection=True"
  },
  "Elsa": {
    "Server": {
      "BaseUrl": "https://localhost:5001"
    }
  }
  

修改.json

删除iis in并将端口号改为5001

{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "https://localhost:5001",
      "sslPort": 5001
    }
  },
  "profiles": {
    "ElsaCore.Server": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "applicationUrl": "https://localhost:5001",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

初始化数据库

先生成项目,再执行

dotnet ef migrations add init

目录将自动创建。

然后更新数据库并执行

dotnet ef database update

此时打开SQL对象资源管理服务器可以看到数据库已经初始化完毕。

创建一个页面

新建一个目录Pages,创建一个_Host。在这个目录中。

@page "/"
@{
    var serverUrl = $"{Request.Scheme}://{Request.Host}";
}



    
    
    Elsa Workflows
    
    
    
    
    
    



    



启动项目

运行项目,打开浏览器访问:5001/,页面如下:

© 版权声明
THE END
喜欢就支持一下吧
点赞256 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片