LightWorkFlowManager:轻量级工作流程管理库
简介与适用场景
LightWorkFlowManager 是一个由作者所在团队开源的轻量级工作流程管理库,采用 MIT 协议发布,适合用于客户端和服务器端的应用场景。其主要优势在于调试友好、逻辑清晰,能够自动集成重试、失败处理、日志记录等功能,适用于需要将多个任务串联执行的复杂逻辑。
该库现已在 GitHub 上开源,地址为:https://github.com/dotnet-campus/LightWorkFlowManager,并且已在实际产品中稳定运行半年以上。
它特别适用于类似解析 PPT 并提取图片的任务。这种任务通常包含多个步骤(如获取文件、提取内容、处理数据),而不同业务场景可能有不同的输入源或输出目标。使用 LightWorkFlowManager 可以避免统一入口带来的逻辑复杂性,让每条业务链更清晰,降低代码圈复杂度并提升可维护性。
核心功能与机制
- 工作流串联:开发者可以将不同的工作单元定义为 Worker,并按需串联执行。
- 上下文传递:前一步的输出可自动作为后一步的输入,同时支持手动设置参数和转换。
- 异常处理与重试:Worker 返回结果包含成功/失败状态,支持中断流程和重试机制,默认开启自动重试。
- 嵌套调用:可在某个 Worker 内部调用其他 Worker 实现分支逻辑。
- 委托工作器:对轻量操作提供简洁支持,无需定义完整类结构即可直接传入委托。
使用示例
- 安装 NuGet 包:dotnetCampus.LightWorkFlowManager
- 创建 MessageWorkerManager:
string taskId = Guid.NewGuid().ToString(); string taskName = "PPT 解析"; IServiceScope serviceScope = serviceProvider.CreateScope(); var workerManager = new MessageWorkerManager(taskId, taskName, serviceScope); - 定义并运行 Worker:
class FooWorker : MessageWorker<InputType, OutputType> { protected override async ValueTask<WorkerResult<OutputType>> DoInnerAsync(InputType input) { // 实现业务逻辑 return Success(new OutputType()); } } // 执行 Worker var result = await workerManager.RunWorker<FooWorker>();
适用平台
LightWorkFlowManager 支持广泛的技术栈,包括 WPF、WinForms、MAUI 等客户端应用框架,以及 ASP.NET Core 服务端应用,具备良好的跨平台兼容性和依赖注入集成能力。

