TJC.Cyclops.ApprovalFlow
2026.2.26.1
dotnet add package TJC.Cyclops.ApprovalFlow --version 2026.2.26.1
NuGet\Install-Package TJC.Cyclops.ApprovalFlow -Version 2026.2.26.1
<PackageReference Include="TJC.Cyclops.ApprovalFlow" Version="2026.2.26.1" />
<PackageVersion Include="TJC.Cyclops.ApprovalFlow" Version="2026.2.26.1" />
<PackageReference Include="TJC.Cyclops.ApprovalFlow" />
paket add TJC.Cyclops.ApprovalFlow --version 2026.2.26.1
#r "nuget: TJC.Cyclops.ApprovalFlow, 2026.2.26.1"
#:package TJC.Cyclops.ApprovalFlow@2026.2.26.1
#addin nuget:?package=TJC.Cyclops.ApprovalFlow&version=2026.2.26.1
#tool nuget:?package=TJC.Cyclops.ApprovalFlow&version=2026.2.26.1
Cyclops.ApprovalFlow
项目概述
Cyclops.ApprovalFlow是企服版框架中的审批流开发套件,提供灵活、可扩展的工作流管理能力。该项目采用图论模型设计,通过节点和边的组合构建复杂的审批流程,支持多种节点类型和流转逻辑,为企业应用提供强大的业务流程管理支持。
核心功能模块
1. 流程引擎 (FlowEngine)
流程引擎是整个审批流系统的核心,负责管理流程的执行、监控和自动推进。
- 线程池管理:使用SimpleThreadPool高效处理流程任务
- 执行器监控:按流程键分组管理和监控执行器状态
- 自动推进:定期检查执行器状态并推进流程实例
- 资源管理:提供完整的资源释放机制,确保系统稳定运行
2. 流程构建器 (FlowBuilder)
流程构建器提供了流程定义的加载、创建和管理功能,支持多种方式创建流程执行器。
- JSON文件加载:从JSON配置文件加载流程定义
- JSON字符串加载:从JSON字符串直接加载流程定义
- 内存缓存:维护流程执行器的内存缓存,提高性能
- 执行器管理:支持创建、获取和更新流程执行器
3. 图式流程定义 (GraphFlowDefinition)
基于图论的流程定义模型,通过节点和边的组合描述完整的审批流程。
- 流程标识:唯一的流程编码和友好的流程名称
- 节点集合:定义流程中的各个步骤和环节
- 边集合:定义节点之间的连接关系和流转条件
4. 节点模型 (GraphNode)
支持多种节点类型,满足不同的流程需求。
- 节点类型:开始节点、任务节点、用户节点、网关节点、结束节点等
- 节点属性:支持自定义属性扩展业务配置
- 可视化信息:包含节点在画布上的位置和文本信息
5. 边模型 (GraphEdge)
描述节点之间的连接关系和流转条件。
- 连接关系:定义源节点和目标节点
- 动作标签:支持通过文本信息定义流转动作(如:通过、退回、不通过等)
- 属性扩展:支持自定义边的属性配置
技术栈
- 开发框架:.NET 8.0
- 项目类型:类库(Class Library)
- 核心依赖:
- Cyclops.Common
- Cyclops.DI
- 数据格式:JSON(用于流程定义序列化)
环境依赖要求
- .NET 8.0 SDK 或更高版本
- 引用的Cyclops.Common和Cyclops.DI项目
安装与配置
安装方式
可以通过以下方式安装Cyclops.ApprovalFlow包:
NuGet包管理器:
Install-Package Cyclops.ApprovalFlow.NET CLI:
dotnet add package Cyclops.ApprovalFlow
基本配置
使用Cyclops.ApprovalFlow需要以下基本配置:
- 准备流程定义JSON文件或字符串
- 初始化FlowBuilder实例
- 加载流程定义并创建FlowExecutor
- 初始化并启动FlowEngine
核心功能代码示例
1. 从JSON文件加载流程定义
// 创建流程构建器实例
var flowBuilder = new FlowBuilder();
// 从JSON文件加载流程定义
string jsonPath = "path/to/your/flowdefinition.json";
var executor = await flowBuilder.CreateExecutorFromJsonFileAsync(jsonPath);
2. 从JSON字符串加载流程定义
// 创建流程构建器实例
var flowBuilder = new FlowBuilder();
// 流程定义JSON字符串
string flowJson = @"{
""key"": ""LeaveApprovalFlow"",
""name"": ""请假审批流程"",
""nodes"": [
{
""id"": ""start"",
""type"": ""start-node",
""text"": { ""value"": ""开始"" }
},
{
""id"": ""manager-approval",
""type"": ""user-node",
""text"": { ""value"": ""经理审批"" },
""properties"": {
""assignee"": ""manager""
}
},
{
""id"": ""end",
""type"": ""end-node",
""text"": { ""value"": ""结束"" }
}
],
""edges"": [
{
""id"": ""edge1",
""sourceNodeId"": ""start",
""targetNodeId"": ""manager-approval",
""text"": { ""value"": ""提交"" }
},
{
""id"": ""edge2",
""sourceNodeId"": ""manager-approval",
""targetNodeId"": ""end",
""text"": { ""value"": ""通过"" }
}
]
}";
// 从JSON字符串加载流程定义
var executor = await flowBuilder.CreateExecutorFromJsonStringAsync(flowJson, "LeaveApprovalFlow");
3. 初始化并启动流程引擎
// 初始化流程引擎
var flowEngine = FlowEngine.Instance;
// 启动流程引擎
flowEngine.Start();
// 在应用关闭时停止流程引擎并释放资源
// flowEngine.Dispose();
4. 获取已缓存的流程执行器
// 创建流程构建器实例
var flowBuilder = new FlowBuilder();
// 尝试获取已缓存的执行器
if (flowBuilder.TryGetExecutor("LeaveApprovalFlow", out var executor))
{
// 使用执行器处理流程
// ...
}
使用注意事项
流程定义格式:确保流程定义JSON符合GraphFlowDefinition的数据结构要求,特别是节点和边的ID必须唯一且相互匹配。
节点类型选择:根据业务需求选择适当的节点类型,如开始节点(start-node)、任务节点(task-node)、用户节点(user-node)、网关节点(gateway-node)和结束节点(end-node)等。
资源管理:使用完FlowEngine后,务必调用Dispose()方法释放资源,避免内存泄漏。
错误处理:加载流程定义时可能会抛出异常,请确保添加适当的错误处理逻辑。
并发安全:在多线程环境下使用FlowBuilder和FlowEngine时,请注意线程安全问题。
流程版本管理:对于需要频繁变更的流程,建议实现版本管理机制,确保流程定义的可追溯性。
性能优化:对于大量流程实例的场景,可以考虑优化线程池配置和定期清理过期的流程实例。
贡献者
- yswenli
许可证
保留所有权利
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | 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 was computed. 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. |
-
net8.0
- TJC.Cyclops.Common (>= 2026.2.26.1)
- TJC.Cyclops.DI (>= 2026.2.26.1)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on TJC.Cyclops.ApprovalFlow:
| Package | Downloads |
|---|---|
|
TJC.Cyclops.Web.Core
企服版框架中api核心功能项目,基于aspnetcore集成di、jwt、swagger、codefirtst、支持多种常见数据库、nacos配置中心、统一接口回复参数、全局异常捕获、全局接口日志、防重放攻击、图形验证码、快捷上下文对象、上传下载、数据导入导出等功能 |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2026.2.26.1 | 56 | 2/26/2026 |
| 2026.2.4.1 | 125 | 2/4/2026 |
| 2026.1.15.1 | 145 | 1/15/2026 |
| 2026.1.14.2 | 139 | 1/14/2026 |
| 2026.1.14.1 | 134 | 1/14/2026 |
| 2026.1.13.2 | 136 | 1/13/2026 |
| 2026.1.13.1 | 153 | 1/13/2026 |
| 2026.1.7.1 | 164 | 1/7/2026 |
| 2025.12.23.1 | 238 | 12/23/2025 |
| 2025.12.16.1 | 347 | 12/16/2025 |
| 2025.12.15.2 | 295 | 12/15/2025 |
| 2025.12.15.1 | 313 | 12/15/2025 |
| 2025.12.12.1 | 208 | 12/12/2025 |
| 2025.12.11.1 | 493 | 12/11/2025 |
| 2025.12.4.1 | 268 | 12/4/2025 |
| 2025.12.3.3 | 754 | 12/3/2025 |
| 2025.12.3.2 | 715 | 12/3/2025 |
| 2025.12.3.1 | 740 | 12/3/2025 |
| 2025.12.2.1 | 744 | 12/2/2025 |
| 2025.11.28.1 | 236 | 11/28/2025 |
企服版框架中审批流开发套件