大数跨境
0
0

LightWorkFlowManager 轻量的工作过程管理库

LightWorkFlowManager 轻量的工作过程管理库 dotNET跨平台
2023-10-13
19
导读:LightWorkFlowManager 轻量的工作过程管理库,适合任何需要执行工作过程的应用逻辑,可以方便将多个工作过程拼凑起来,且自动集成重试和失败处理,以及日志和上报功能

LightWorkFlowManager:轻量级工作流程管理库

简介与适用场景

LightWorkFlowManager 是一个由作者所在团队开源的轻量级工作流程管理库,采用 MIT 协议发布,适合用于客户端和服务器端的应用场景。其主要优势在于调试友好、逻辑清晰,能够自动集成重试、失败处理、日志记录等功能,适用于需要将多个任务串联执行的复杂逻辑。

该库现已在 GitHub 上开源,地址为:https://github.com/dotnet-campus/LightWorkFlowManager,并且已在实际产品中稳定运行半年以上。

它特别适用于类似解析 PPT 并提取图片的任务。这种任务通常包含多个步骤(如获取文件、提取内容、处理数据),而不同业务场景可能有不同的输入源或输出目标。使用 LightWorkFlowManager 可以避免统一入口带来的逻辑复杂性,让每条业务链更清晰,降低代码圈复杂度并提升可维护性。

核心功能与机制

  • 工作流串联:开发者可以将不同的工作单元定义为 Worker,并按需串联执行。
  • 上下文传递:前一步的输出可自动作为后一步的输入,同时支持手动设置参数和转换。
  • 异常处理与重试:Worker 返回结果包含成功/失败状态,支持中断流程和重试机制,默认开启自动重试。
  • 嵌套调用:可在某个 Worker 内部调用其他 Worker 实现分支逻辑。
  • 委托工作器:对轻量操作提供简洁支持,无需定义完整类结构即可直接传入委托。

使用示例

  1. 安装 NuGet 包:dotnetCampus.LightWorkFlowManager
  2. 创建 MessageWorkerManager:
    string taskId = Guid.NewGuid().ToString();
    string taskName = "PPT 解析";
    IServiceScope serviceScope = serviceProvider.CreateScope();
    
    var workerManager = new MessageWorkerManager(taskId, taskName, serviceScope);
    
  3. 定义并运行 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 服务端应用,具备良好的跨平台兼容性和依赖注入集成能力。

【声明】内容源于网络
0
0
dotNET跨平台
专注于.NET Core的技术传播。在这里你可以谈微软.NET,Mono的跨平台开发技术。在这里可以让你的.NET项目有新的思路,不局限于微软的技术栈,横跨Windows,
内容 908
粉丝 0
dotNET跨平台 专注于.NET Core的技术传播。在这里你可以谈微软.NET,Mono的跨平台开发技术。在这里可以让你的.NET项目有新的思路,不局限于微软的技术栈,横跨Windows,
总阅读14.9k
粉丝0
内容908