【愚公系列】2023年02月 .NET CORE工具案例-Workflow-Core轻量级工作流引擎(简单使用)
2023-06-13 09:17:28 时间
文章目录
前言
1.什么是工作流
工作流是OA系统比较重要的功能之一,主要在于企业流程协同审批,有效进行流程管理。
流程管理起源于生产组织和办公自动化领域,是针对日常工作中具有固定程序的活动提出的一个概念。目的是通过将工作分解成定义良好的任务、角色,按照一定的规则和过程来执行这些任务并对它们进行监控,达到提高办事效率、降低生产成本、提高企业生产经营管理水平和企业竞争力的目标。
现代计算机技术实现了工作流,是支持企业经营过程高效执行并监控其执行过程的计算机软件系统。工作流软件类似电脑桌面操作系统,操作系统驱动电脑各部件协同运转,工作流软件则驱动业务过程自动有序进行。
Workflow-Core地址:https://github.com/danielgerlag/workflow-core
一、Workflow-Core轻量级工作流引擎
1.安装包
Install-Package WorkflowCore
Microsoft.Extensions.Logging
Microsoft.Extensions.Logging.Debug
2.简单使用
2.1 定义步骤
1、步骤一
using System;
using System.Linq;
using WorkflowCore.Interface;
using WorkflowCore.Models;
namespace WorkflowCore.Sample01.Steps
{
public class HelloWorld : StepBody
{
public override ExecutionResult Run(IStepExecutionContext context)
{
Console.WriteLine("Hello world");
return ExecutionResult.Next();
}
}
}
2、步骤二
using Microsoft.Extensions.Logging;
using WorkflowCore.Interface;
using WorkflowCore.Models;
namespace WorkflowCore.Sample01.Steps
{
public class GoodbyeWorld : StepBody
{
private ILogger _logger;
public GoodbyeWorld(ILoggerFactory loggerFactory)
{
_logger = loggerFactory.CreateLogger<GoodbyeWorld>();
}
public override ExecutionResult Run(IStepExecutionContext context)
{
Console.WriteLine("Goodbye world");
_logger.LogInformation("Hi there!");
return ExecutionResult.Next();
}
}
}
2.2 定义工作流
using WorkflowCore.Interface;
using WorkflowCore.Models;
using WorkflowCore.Sample01.Steps;
namespace WorkflowCore.Sample01
{
public class HelloWorldWorkflow : IWorkflow
{
public void Build(IWorkflowBuilder<object> builder)
{
builder
.UseDefaultErrorBehavior(WorkflowErrorHandling.Suspend)
.StartWith<HelloWorld>()
.Then<GoodbyeWorld>();
}
public string Id => "HelloWorld";
public int Version => 1;
}
}
2.3 启动工作流
using Microsoft.Extensions.DependencyInjection;
using WorkflowCore.Interface;
using WorkflowCore.Sample01;
using WorkflowCore.Sample01.Steps;
IServiceProvider serviceProvider = ConfigureServices();
//start the workflow host
var host = serviceProvider.GetService<IWorkflowHost>();
host.RegisterWorkflow<HelloWorldWorkflow>();
host.Start();
host.StartWorkflow("HelloWorld");
Console.ReadLine();
host.Stop();
static IServiceProvider ConfigureServices()
{
//setup dependency injection
IServiceCollection services = new ServiceCollection();
services.AddLogging();
services.AddWorkflow();
//services.AddWorkflow(x => x.UseMongoDB(@"mongodb://localhost:27017", "workflow"));
services.AddTransient<GoodbyeWorld>();
var serviceProvider = services.BuildServiceProvider();
return serviceProvider;
}
2.4 运行
二、Workflow-Core的流程配置
1.代码配置
public class MyWorkflow : IWorkflow
{
public void Build(IWorkflowBuilder<MyData> builder)
{
builder
.StartWith<Task1>()
.Then<Task2>()
.Then<Task3>();
}
}
2.JSON配置
{
"Id": "HelloWorld",
"Version": 1,
"Steps": [
{
"Id": "Hello",
"StepType": "MyApp.HelloWorld, MyApp",
"NextStepId": "Bye"
},
{
"Id": "Bye",
"StepType": "MyApp.GoodbyeWorld, MyApp"
}
]
}
3.YAML配置
Id: HelloWorld
Version: 1
Steps:
- Id: Hello
StepType: MyApp.HelloWorld, MyApp
NextStepId: Bye
- Id: Bye
StepType: MyApp.GoodbyeWorld, MyApp
相关文章
- 【愚公系列】2022年11月 .NET CORE工具案例-使用MailKit使用IMAP协议进行邮件读取
- 【愚公系列】2022年12月 .NET CORE工具案例-PLG轻量级日志可视化服务
- 【愚公系列】2022年12月 .NET CORE工具案例-.NET Core使用ExcelMapper
- 【愚公系列】2023年01月 .NET CORE工具案例-DeveloperSharp的使用(数据库)
- 【愚公系列】2023年01月 .NET CORE工具案例-RedLock.net实现分布式锁
- 【愚公系列】2023年01月 .NET CORE工具案例-CS-Script脚本执行引擎
- 【愚公系列】2023年01月 .NET CORE工具案例-基于MediatR的CQRS模式
- 【愚公系列】2023年02月 .NET CORE工具案例-AspNetCoreRateLimit限流的使用
- 【愚公系列】2023年02月 .NET CORE工具案例-Caliburn.Micro的使用基于WPF的改造的MVVM案例
- 【愚公系列】2023年02月 .NET CORE工具案例-MahApps.Metro基于WPF的UI控件库
- 【愚公系列】2023年02月 .NET CORE工具案例-ToolGood.Words敏感词过滤
- 【原创】使用.NET Core 1.0创建一个Self-Contained控制台应用详解编程语言
- .net让Oracle与ASP.NET实现无缝连接(oracleasp)
- .net下的数据库连接SQLServer驱动在.NET平台下的数据库连接简明介绍(sqlserver驱动在)
- 数据库NET开发者操作Oracle数据库的全攻略(net操作oracle)
- 型使用NET与MySQL开发动态类型Web应用程序(.net mysql 类)
- 用Net和MySQL实现软件开发编程(.net mysql编程)
- Redis集群实现高性能NET应用(redis集群 .net)
- 使用Oracle64位Net突破技术极限(oracle64位net)
- asp.net利用NamingContainer属性获取GridView行号的方法