一、关于Workflow-Core
近期工作上有一个工作流的开发需求,自己基于面向对象和职责链模式捣鼓了一套小框架,后来在github上发现一个轻量级的工作流引擎轮子:Workflow-Core,看完其wiki之后决定放弃之前自己造的轮子,使用这个开源项目来改造,也就有了这一篇博文。
Workflow-Core是一个基于.NET Standard的轻量级工作流引擎,其GitHub地址为:https://github.com/danielgerlag/workflow-core,目前有超过1200+个star。它提供了FluentAPI、多任务、持久化以及并行处理的功能,适合于小型工作流、责任链的需求开发。
由于Workflow-Core支持工作流长期运行,因此Workflow-Core支持以下多种数据源格式的持久化,可以通过安装不同的Provider包来实现对应的持久化:
(默认提供,用于测试和开发)内存
MongoDB
MS SQL Server
MySql
Sqlite
Redis
PostgreSQL
立刻上手把,Nuget上安装一把,目前最新版本2.0.0:
PM> Install-Package WorkflowCore
二、Workflow-Core的基本使用
2.1 Hello World
这里创建了一个.NET Core控制台应用程序,快速演示第一个Workflow-Core的Hello World,展示如何开始一个Workflow:
(1)定义一个实现IWorkflow接口的Workflow:
public classHelloWorldWorkflow : IWorkflow
{public string Id => "HelloWorld";public int Version => 1;public void Build(IWorkflowBuilderbuilder)
{
builder
.StartWith()
.Then()
.Then();
}
}
这里定义了一个HelloWorldWorkflow,其版本号为1,它有3个步骤:HelloWorld、ActiveWorld和GoodbyeWorld,会依次执行。
(2)定义三个继承自StepBody类的步骤类:
public classHelloWorld : StepBody
{public overrideExecutionResult Run(IStepExecutionContext context)
{
Console.WriteLine("Hello World!");returnExecutionResult.Next();
}
}public classActiveWorld : StepBody
{public overrideExecutionResult Run(IStepExecutionContext context)
{
Console.WriteLine("I am activing in the World!");returnExecutionResult.Next();