Workflow-Core Workflow-Core 是一个开源的工作流引擎项目,它提供了一个轻量级的框架,用于在.NET 应用程序中创建和管理工作流程 。它基于.NET Standard,并且可以在各种平台上运行,包括 windows、linux 和 macOS 。
功能特性 1. 灵活的工作流程定义:使用 Workflow-Core,您可以轻松定义和构建复杂的工作流程 。工作流程由一系列步骤(Activities)组成,这些步骤可以串行、并行或条件性地执行 。您可以定义工作流程的输入和输出参数,以及每个步骤的条件和依赖关系 。
2. 可扩展性和可定制性:Workflow-Core 允许您扩展和自定义工作流引擎的行为 。您可以编写自己的活动(Activity)和触发器(Trigger),以满足特定的业务需求 。还可以通过自定义的服务注入(Dependency Injection)来定制工作流程的行为 。
3. 持久化和恢复:Workflow-Core 支持工作流程的持久化和恢复 。这意味着即使在应用程序关闭或崩溃后,工作流程的状态也会得到保存,并且可以在应用程序重新启动时继续执行 。它使用持久化提供程序(Persistence Provider)将工作流程数据保存到数据库或其他持久化存储中 。
【.NET 轻量级工作流引擎】4. 监控和跟踪:Workflow-Core 提供了监控和跟踪工具,用于实时跟踪工作流程的执行状态和性能指标 。您可以使用这些工具来诊断问题、优化性能和监控工作流程的整体健康状况 。
5. 轻量级和高性能:Workflow-Core 设计为轻量级和高性能 。它采用异步执行模型,并且在处理大量并发工作流程时具有良好的性能表现 。它还提供了缓存机制和并行执行,以提高工作流程的执行效率 。
如何使用 安装 NuGet 包“WorkflowCore”
dotnet add package WorkflowCoreFluent API
使用 Fluent API 定义工作流 。
public class MyWorkflow : IWorkflow { public void Build(IWorkflowBuilder<MyData> builder) { builder .StartWith<Task1>() .Then<Task2>() .Then<Task3>; } } 基本概念 工作流由一系列相互关联的步骤组成 。每个步骤都可以有输入并产生输出,这些输出可以传递回它所在的工作流 。
通过创建继承自StepBody或StepBodyAsync抽象类的类并实现 Run/RunAsync 方法来定义步骤 。
看看下面的例子:
public class HelloWorld : StepBody { public override ExecutionResult Run(IStepExecutionContext context) { Console.WriteLine("Hello world"); return ExecutionResult.Next(); } }然后我们通过组成一系列步骤来定义工作流结构 。这是通过实现 IWorkflow 接口完成的,如下:
public class HelloWorldWorkflow : IWorkflow { public string Id => "HelloWorld"; public int Version => 1; public void Build(IWorkflowBuilder<object> builder) { builder .StartWith<HelloWorld>() .Then<GoodbyeWorld>(); } }Workflow-Core 还支持了 JSON 和 YAML 格式,在 JSON 中实现的这个工作流看起来像这样:
{ "Id": "HelloWorld", "Version": 1, "Steps": [ { "Id": "Hello", "StepType": "MyApp.HelloWorld, MyApp", "NextStepId": "Bye" }, { "Id": "Bye", "StepType": "MyApp.GoodbyeWorld, MyApp" } ] } 与 ASP.NET Core 一起使用 在您的启动类中,使用AddWorkflow扩展方法配置工作流核心服务,如下
public class Startup { public Startup(IConfiguration configuration) { Configuration = configuration; } public IConfiguration Configuration { get; } public void ConfigureServices(IServiceCollection services) { services.AddMvc(); services.AddWorkflow(cfg => { cfg.UseMongoDB(@"mongodb://mongo:27017", "workflow"); cfg.UseElasticsearch(new ConnectionSettings(new Uri("http://elastic:9200")), "workflows"); }); } public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseMvc(); var host = app.ApplicationServices.GetService<IWorkflowHost>(); host.RegisterWorkflow<TestWorkflow, MyDataClass>(); host.Start(); } } 持久化 由于工作流通常是长时间运行的过程,因此它们需要在步骤之间持久存储 。有几个持久性提供程序可作为单独的 Nuget 包使用 。
• MemoryPersistenceProvider
• MongoDB
• SQL Server
• PostgreSQL
• Sqlite
• Amazon DynamoDB
推荐阅读
- 记一次 .NET某车零件MES系统登录异常分析
- Spring MVC工作流程,你学会了吗?
- 墩子是什么意思(厨房墩子工作流程)
- AI绘图之HYPERNETWORK模型
- ktv少爷培训计划 ktv少爷工作流程
- 出纳的工作流程是什么 出纳的工作技能要求
- 一个超适合初学者的轻量级Java开发工具!
- Asp.Net Core自定义配置中心客户端
- 工作流程管理系统 担保业务管理系统
- 工作流管理软件 工作流系统
