Easy.WorkFlow.AspNetCore 2.3.17

dotnet add package Easy.WorkFlow.AspNetCore --version 2.3.17
                    
NuGet\Install-Package Easy.WorkFlow.AspNetCore -Version 2.3.17
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Easy.WorkFlow.AspNetCore" Version="2.3.17" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Easy.WorkFlow.AspNetCore" Version="2.3.17" />
                    
Directory.Packages.props
<PackageReference Include="Easy.WorkFlow.AspNetCore" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Easy.WorkFlow.AspNetCore --version 2.3.17
                    
#r "nuget: Easy.WorkFlow.AspNetCore, 2.3.17"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Easy.WorkFlow.AspNetCore@2.3.17
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Easy.WorkFlow.AspNetCore&version=2.3.17
                    
Install as a Cake Addin
#tool nuget:?package=Easy.WorkFlow.AspNetCore&version=2.3.17
                    
Install as a Cake Tool

Easy.WorkFlow.AspNetCore

Easy.WorkFlow.AspNetCore 是一个简化工作流 API 集成的中间件包,它封装了工作流相关的 HTTP 端点,使您能够通过简单的配置来处理工作流构建、启动、执行以及管理等操作。

更新日志

  • 2.3.17
    • 升级:Easy.WorkFlow.Core升级到2.3.14版本,具体见 [Easy.WorkFlow.Core 更新日志]
  • 2.3.16
    • 升级:Easy.WorkFlow.Core升级到2.3.13版本,具体见 [Easy.WorkFlow.Core 更新日志]
  • 2.3.15
    • 升级:Easy.WorkFlow.Core升级到2.3.12版本,具体见 [Easy.WorkFlow.Core 更新日志]
  • 2.3.14
    • 升级:Easy.WorkFlow.Core升级到2.3.11版本,具体见 [Easy.WorkFlow.Core 更新日志]
  • 2.3.13
    • 升级:Easy.WorkFlow.Core升级到2.3.10版本,具体见 [Easy.WorkFlow.Core 更新日志]
  • 2.3.12
    • 升级:Easy.WorkFlow.Core升级到2.3.9版本,具体见 [Easy.WorkFlow.Core 更新日志]
    • 调整:取消IServiceResolver,使用原生的IServiceProvider。
  • 2.3.11
    • 升级:Easy.WorkFlow.Core升级到2.3.8版本,具体见 [Easy.WorkFlow.Core 更新日志]
    • 新增:实现工作流的IServiceResolver,可用于在ASP.NET Core环境中解析服务。
  • 2.3.10
    • 升级Easy.WorkFlow.Core到2.3.7版本,具体见 [Easy.WorkFlow.Core 更新日志]
  • 2.3.9
    • 升级Easy.WorkFlow.Core到2.3.6版本,具体见 [Easy.WorkFlow.Core 更新日志]
  • 2.3.8
    • 升级Easy.WorkFlow.Core到2.3.5版本,具体见 [Easy.WorkFlow.Core 更新日志]
  • 2.3.7
    • 调整:新增RequiredAuthorization参数,替代原先通过AuthorizationPolicy的策略授权;未传递AuthorizationPolicy时使用默认策略(默认策略需注册有)。
  • 2.3.6
    • 修复:授权处理未传入AuthorizationHandlerContext的Resource参数导致无法获得授权上下文信息
    • 调整:调整身份认证及授权的位置,现在会过滤非workflow请求,非workflow请求不处理认证及授权。
  • 2.3.5
    • 依赖 Easy.WorkFlow.Core 到 2.3.4 版本。
    • 调整:调整授权服务未注册时手动抛出InvalidOperationException异常
    • 调整:统一内置的序列化器,使用Easy.WorkFlow.Core注册的IJsonSerializer。
  • 2.3.4
    • 新增:支持身份认证及授权,可通过WorkFlowMiddlewareOptions.RequiredAuthenticated配置是否需要身份认证;配置WorkFlowMiddlewareOptions.AuthorizationPolicy配置授权策略。
  • 2.3.3
    • 升级Easy.WorkFlow.Core到2.3.3版本,具体见 [Easy.WorkFlow.Core 更新日志]
  • 2.3.1
    • 升级Easy.WorkFlow.Core到2.3.1版本,具体见 [Easy.WorkFlow.Core 更新日志]
  • 2.3.0
    • 升级Easy.WorkFlow.Core到2.3.0版本,具体见 [Easy.WorkFlow.Core 更新日志]
  • 2.2.2
    • 升级Easy.WorkFlow.Core到2.2.2版本,具体见 [Easy.WorkFlow.Core 更新日志]
  • 2.2.1
    • 升级Easy.WorkFlow.Core到2.2.1版本,具体见 [Easy.WorkFlow.Core 更新日志]
    • 添加注释文档
  • 2.2.0
    • 升级Easy.WorkFlow.Core到2.2.0版本,具体见 [Easy.WorkFlow.Core 更新日志]
  • 2.1.0
    • 升级Easy.WorkFlow.Core到2.1.0版本,具体见 [Easy.WorkFlow.Core 更新日志]

安装

通过 NuGet 包管理器安装:

Install-Package Easy.WorkFlow.AspNetCore

或使用 .NET CLI:

dotnet add package Easy.WorkFlow.AspNetCore

使用方法

基本配置

Program.csStartup.cs 中注册中间件:

// 添加工作流核心服务
builder.Services.AddWorkFlow(options =>
{
    // 配置工作流选项
    options.WaitForProcessor = true;
    
    // 配置序列化器
    options.JsonSerializer = (data) => JsonConvert.SerializeObject(data);
    
    // 其他配置...
})
.AddWorkFlowSqlSugar(builder.Configuration) // 可选:添加 SqlSugar 仓储
.AddJsonBuilder(options => 
{
    // 配置 JSON 构建器
    options.BasePath = Path.Combine(Directory.GetCurrentDirectory(), "json");
});

var app = builder.Build();

// 配置 HTTP 请求管道
// ...

// 使用工作流中间件
app.UseWorkFlow();

// 或使用自定义配置
app.UseWorkFlow(options => 
{
    //配置请求路径
    options.BuildPath = "/custom/workflow/build";
    options.StartPath = "/custom/workflow/start";
    options.RunPath = "/custom/workflow/run";
    options.StopPath = "/custom/workflow/stop";
    options.SuspendPath = "/custom/workflow/suspend";
    options.RestorePath = "/custom/workflow/restore";
});

泛型支持

如果您需要指定工作流构建上下文的数据类型,可以使用泛型版本:

// 使用特定类型的工作流中间件
app.UseWorkFlow<YourCustomType>();
app.UseWorkFlow<string>(); //如你使用json构造工作流,默认string可以省略

API 端点

中间件注册了以下端点:

端点 方法 描述
/api/workflow/build POST 构建新的工作流定义
/api/workflow/start POST 启动工作流实例
/api/workflow/run POST 执行工作流步骤
/api/workflow/stop POST 停止工作流实例
/api/workflow/suspend POST 挂起(暂停)工作流实例
/api/workflow/restore POST 恢复已挂起的工作流实例

注意:所有端点路径均可通过配置选项自定义。

请求和响应格式

1. 构建工作流

请求:

{
  "sourceType": "json",
  "source": "工作流定义.json",
  "data": null,
  "autoGenerateId":true, //表示后端生成id
  "extras":null //附加数据,比如你的前端工作流定义原始json,如logicflow数据
}

或者直接使用 JSON 字符串:

{
  "sourceType": "json",
  "source": null,
  "data": "{\"id\":1001,\"name\":\"请假工作流\",...}",
   "autoGenerateId":true, //表示后端生成id
  "extras":null //附加数据,比如你的前端工作流定义原始json,如logicflow数据
}

响应:

{
  "code":200,
  "success": true,
  "message":"构建成功",
  "Data":{}
}

2. 启动工作流

请求:

{
  "workFlowId": 1001,
  "userId": 10001,
  "userName": "张三",
  "data": {
    "reason": "年假",
    "days": 3,
    "startDate": "2025-07-01"
  }
}

响应:

{
  "code":200,
  "success": true,
  "message":"执行成功",
  "Data":{}
}

3. 执行工作流步骤

请求:

{
  "workFlowInstanceId": 12345,
  "userId": 10002,
  "userName": "李四",
  "processingMessage": "同意请假申请",
  "processingSuggestion": "Approve",
  "data": {
    "comments": "已审核,符合规定"
  }
}

响应:

{
  "code":200,
  "success": true,
  "message":"执行成功",
  "Data":{}
}

4. 停止工作流

请求:

{
  "workFlowInstanceId": 12345,
  "userId": 10001,
  "userName": "张三"
}

响应:

{
  "code":200,
  "success": true,
  "message":"执行成功",
  "Data":{}
}

5. 挂起工作流

请求:

{
  "workFlowInstanceId": 12345,
  "userId": 10001,
  "userName": "张三"
}

响应:

{
  "code":200,
  "success": true,
  "message":"执行成功",
  "Data":{}
}

6. 恢复工作流

请求:

{
  "workFlowInstanceId": 12345,
  "userId": 10001,
  "userName": "张三"
}

响应:

{
  "code":200,
  "success": true,
  "message":"执行成功",
  "Data":{}
}

错误处理

所有端点在遇到错误时会返回适当的 HTTP 状态码和错误消息:

  • 400 Bad Request: 请求数据无效
  • 500 Internal Server Error: 服务器内部错误

错误响应格式:

{
  "code":400,
  "success": false,
  "message":"id不能为空",
  "Data":{}
}

高级配置

自定义 JSON 序列化选项

app.UseWorkFlow<JsonElement>(options => 
{
    options.JsonSerializerOptions = new JsonSerializerOptions
    {
        PropertyNameCaseInsensitive = true,
        WriteIndented = true,
        Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping
    };
});

兼容性

  • 支持 .NET 6, .NET 7, .NET 8, .NET 9
  • 兼容 ASP.NET Core MVC 和最小 API 项目
Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2.3.17 103 9/4/2025
2.3.16 164 8/29/2025
2.3.15 211 8/7/2025
2.3.14 262 7/29/2025 2.3.14 is deprecated because it has critical bugs.
2.3.13 176 7/28/2025 2.3.13 is deprecated because it is no longer maintained.
2.3.12 521 7/24/2025 2.3.12 is deprecated because it is no longer maintained.
2.3.11 869 7/24/2025 2.3.11 is deprecated because it is no longer maintained.
2.3.10 926 7/22/2025 2.3.10 is deprecated because it is no longer maintained.
2.3.9 946 7/22/2025 2.3.9 is deprecated because it is no longer maintained.
2.3.8 677 7/20/2025 2.3.8 is deprecated because it is no longer maintained.
2.3.7 591 7/16/2025 2.3.7 is deprecated because it is no longer maintained.
2.3.6 609 7/15/2025 2.3.6 is deprecated because it is no longer maintained.
2.3.5 606 7/15/2025 2.3.5 is deprecated because it is no longer maintained.
2.3.4 604 7/14/2025 2.3.4 is deprecated because it is no longer maintained.
2.3.3 603 7/14/2025 2.3.3 is deprecated because it is no longer maintained.
2.3.1 576 7/11/2025 2.3.1 is deprecated because it is no longer maintained.
2.3.0 611 7/9/2025 2.3.0 is deprecated because it is no longer maintained.
2.2.2 610 6/30/2025 2.2.2 is deprecated because it is no longer maintained.
2.2.1 607 6/30/2025 2.2.1 is deprecated because it is no longer maintained.
2.2.0 565 6/28/2025 2.2.0 is deprecated because it is no longer maintained.
2.1.0 609 6/26/2025 2.1.0 is deprecated because it is no longer maintained.
2.0.0 612 6/25/2025 2.0.0 is deprecated because it is no longer maintained.