【愚公系列】2023年02月 .NET CORE工具案例

【愚公系列】2023年02月 .NET CORE工具案例

文章目录前言1.什么是工作流一、Workflow-Core轻量级工作流引擎1.安装包2.简单使用2.1 定义步骤2.2 定义工作流2.3 启动工作流2.4 运行二、Workflow-Core的流程配置1.代码配置2.JSON配置3.YAML配置前言1.什么是工作流工作流是OA系统比较重要的功能之一,主要在于企业流程协同审批,有效进行流程管理。

流程管理起源于生产组织和办公自动化领域,是针对日常工作中具有固定程序的活动提出的一个概念。目的是通过将工作分解成定义良好的任务、角色,按照一定的规则和过程来执行这些任务并对它们进行监控,达到提高办事效率、降低生产成本、提高企业生产经营管理水平和企业竞争力的目标。

现代计算机技术实现了工作流,是支持企业经营过程高效执行并监控其执行过程的计算机软件系统。工作流软件类似电脑桌面操作系统,操作系统驱动电脑各部件协同运转,工作流软件则驱动业务过程自动有序进行。

Workflow-Core地址:https://github.com/danielgerlag/workflow-core

一、Workflow-Core轻量级工作流引擎1.安装包代码语言:javascript复制Install-Package WorkflowCore

Microsoft.Extensions.Logging

Microsoft.Extensions.Logging.Debug2.简单使用2.1 定义步骤1、步骤一

代码语言:javascript复制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、步骤二

代码语言:javascript复制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();

}

public override ExecutionResult Run(IStepExecutionContext context)

{

Console.WriteLine("Goodbye world");

_logger.LogInformation("Hi there!");

return ExecutionResult.Next();

}

}

}2.2 定义工作流代码语言:javascript复制using WorkflowCore.Interface;

using WorkflowCore.Models;

using WorkflowCore.Sample01.Steps;

namespace WorkflowCore.Sample01

{

public class HelloWorldWorkflow : IWorkflow

{

public void Build(IWorkflowBuilder builder)

{

builder

.UseDefaultErrorBehavior(WorkflowErrorHandling.Suspend)

.StartWith()

.Then();

}

public string Id => "HelloWorld";

public int Version => 1;

}

}2.3 启动工作流代码语言:javascript复制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();

host.RegisterWorkflow();

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();

var serviceProvider = services.BuildServiceProvider();

return serviceProvider;

}2.4 运行二、Workflow-Core的流程配置1.代码配置代码语言:javascript复制public class MyWorkflow : IWorkflow

{

public void Build(IWorkflowBuilder builder)

{

builder

.StartWith()

.Then()

.Then();

}

}2.JSON配置代码语言:javascript复制{

"Id": "HelloWorld",

"Version": 1,

"Steps": [

{

"Id": "Hello",

"StepType": "MyApp.HelloWorld, MyApp",

"NextStepId": "Bye"

},

{

"Id": "Bye",

"StepType": "MyApp.GoodbyeWorld, MyApp"

}

]

}3.YAML配置代码语言:javascript复制Id: HelloWorld

Version: 1

Steps:

- Id: Hello

StepType: MyApp.HelloWorld, MyApp

NextStepId: Bye

- Id: Bye

StepType: MyApp.GoodbyeWorld, MyApp

相关推荐

焚券的解释及意思
365bet体育投注

焚券的解释及意思

📅 09-20 👁️ 4636
流苏穗子怎么做图解 手工制作穗子的方法
365bet体育投注

流苏穗子怎么做图解 手工制作穗子的方法

📅 07-16 👁️ 5544
微信查看原图保存在哪里
365bet体育投注

微信查看原图保存在哪里

📅 07-30 👁️ 6924