首页 > Windows开发 > 详细

C#工作流WorkflowCore学习:Hello World

时间:2021-02-15 10:14:22      阅读:56      评论:0      收藏:0      [点我收藏+]

为什么需要工作流?在之前博文.Net依赖注入技术学习:基本模型中,有提到这个世界的基本构型是纵向分层和横向组合,而工作流模型在纵向上比源码级别提升了一个层次,它的基本操作单元是步骤;在横向上通过一些规则,可以使步骤灵活组合。实现了更高层次抽象的简洁性和表达力的平衡。

本文介绍了.Net体系比较优秀的开源工作流WorkflowCore,github地址:https://github.com/danielgerlag/workflow-core

下面定义了2个步骤:HelloWorld和GoodbyeWorld

技术分享图片
    public class HelloWorld : StepBody
    {
        public override ExecutionResult Run(IStepExecutionContext context)
        {
            Console.WriteLine("Hello world");
            return ExecutionResult.Next();
        }
    }
View Code
技术分享图片
    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();
        }
    }
View Code

然后定义一个工作流:

技术分享图片
    public class HelloWorldWorkflow : IWorkflow
    {
        public void Build(IWorkflowBuilder<object> builder)
        {
            builder                
                .StartWith<HelloWorld>()                
                .Then<GoodbyeWorld>();
        }

        public string Id => "HelloWorld";
            
        public int Version => 1;
                 
    }
View Code

最后启动工作流:

技术分享图片
    public class Program
    {
        
        public static void Main(string[] args)
        {
            IServiceProvider serviceProvider = ConfigureServices();

            //start the workflow host
            var host = serviceProvider.GetService<IWorkflowHost>();
            host.RegisterWorkflow<HelloWorldWorkflow>();        
            host.Start();            

            host.StartWorkflow("HelloWorld");
            
            Console.ReadLine();
            host.Stop();
        }
                
        private 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;
        }


    }
View Code

 

C#工作流WorkflowCore学习:Hello World

原文:https://www.cnblogs.com/huzhongqiang/p/14402316.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!