.Net 轻量级状态机Stateless的使用(一)——简介

Stateless是一款轻量级的状态机,支持.Net Framework和.Net Core。Stateless简单易用,只要定义好状态和状态之间的转移关系就可以工作了。我们先看一个例子,在这篇文章《审批流程需求分析(一)——一个简单的场景》中,我们举了一个请假申请的例子,我们使用Stateless来实现。请假申请的流程如下 :

简单的审批流程

除去开始,这个流程有三个状态“请假申请”、“部门经理审批”和“结束”,之间的状态转换动作有“提交申请”、“需要修改”和“审批完成”,我们可以使用Stateless模拟这个流程。首先创建一个控制台项目,然后使用NuGet引入Stateless,输入代码如下:

using Stateless;
using System;

namespace ZL.StatelessDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            var stateMachine = new StateMachine("请假申请");

            stateMachine.Configure("请假申请").Permit("提交申请", "部门经理审批");
            stateMachine.Configure("部门经理审批").Permit("需要修改", "请假申请");
            stateMachine.Configure("部门经理审批").Permit("审批完成", "结束");
            
            stateMachine.OnUnhandledTrigger((state, trigger) => { });
            
            while (true)
            {
                Console.WriteLine(stateMachine.State);
                Console.WriteLine("输入命令");
                var command = Console.ReadLine();
                stateMachine.Fire(command);
                
                if (stateMachine.State == "结束") break;
            }
            Console.WriteLine(stateMachine.State);
            Console.WriteLine("流程结束");
            Console.ReadLine();
        }
    }
}

运行结果如下:


图片.png

你可能感兴趣的:(.Net 轻量级状态机Stateless的使用(一)——简介)