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" />
<PackageReference Include="Easy.WorkFlow.AspNetCore" />
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
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#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
#tool nuget:?package=Easy.WorkFlow.AspNetCore&version=2.3.17
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
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.cs
或 Startup.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 | Versions 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.
-
net6.0
- Easy.WorkFlow.Core (>= 2.3.14)
-
net7.0
- Easy.WorkFlow.Core (>= 2.3.14)
-
net8.0
- Easy.WorkFlow.Core (>= 2.3.14)
-
net9.0
- Easy.WorkFlow.Core (>= 2.3.14)
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.13 | 176 | 7/28/2025 | |
2.3.12 | 521 | 7/24/2025 | |
2.3.11 | 869 | 7/24/2025 | |
2.3.10 | 926 | 7/22/2025 | |
2.3.9 | 946 | 7/22/2025 | |
2.3.8 | 677 | 7/20/2025 | |
2.3.7 | 591 | 7/16/2025 | |
2.3.6 | 609 | 7/15/2025 | |
2.3.5 | 606 | 7/15/2025 | |
2.3.4 | 604 | 7/14/2025 | |
2.3.3 | 603 | 7/14/2025 | |
2.3.1 | 576 | 7/11/2025 | |
2.3.0 | 611 | 7/9/2025 | |
2.2.2 | 610 | 6/30/2025 | |
2.2.1 | 607 | 6/30/2025 | |
2.2.0 | 565 | 6/28/2025 | |
2.1.0 | 609 | 6/26/2025 | |
2.0.0 | 612 | 6/25/2025 |