ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

workflow创建分支工作流

2022-08-31 08:33:26  阅读:181  来源: 互联网

标签:workflow 创建 step host serviceprovider Message data public 分支


1.创建 工作流

namespace 工作流.Models
{
 
   public class OutcomeWorkflow : IWorkflow<MyData>
    {
        public string Id => "参数";
        public int Version => 1;

        public void Build(IWorkflowBuilder<MyData> builder)
        {
            var branch1 = builder.CreateBranch()
                .StartWith<PrintMessage>()
                    .Input(step => step.Message, data => "调用 PrintMessage 来自分支1")
                .Then<PrintMessage>()
                    .Input(step => step.Message, data => "分支1执行完毕!");

            var branch2 = builder.CreateBranch()
                .StartWith<PrintMessage>()
                    .Input(step => step.Message, data => "调用 PrintMessage 来自分支2")
                .Then<PrintMessage>()
                    .Input(step => step.Message, data => "分支2执行完毕!");


            builder
                .StartWith<SayHello>()
                .Decide(data => data.Value)
                    .Branch(1, branch1)
                    .Branch(2, branch2);
        }
    }
   public class MyData
    {

        public int Value { get; set; }
    }
}

2.创建 步骤体(stepbody)   PrintMessage

        public class PrintMessage : StepBody
        {
            public string Message { get; set; }

            public override ExecutionResult Run(IStepExecutionContext context)
            {
                Console.WriteLine("执行了 printMessage::"+Message);
                return ExecutionResult.Next();
            }
        }

 

3.创建步骤体  sayhello

 public class SayHello : StepBody
    {
        public override ExecutionResult Run(IStepExecutionContext context)
        {
            Console.WriteLine(" 执行sayHello");
            return ExecutionResult.Next();
        }
    }

 

4.创建控制器 执行工作流

  创建工作流之前 要在 切记  startUp.cs  ConfigureServices 方法中注册工作流

 public void ConfigureServices(IServiceCollection services)
        {
            services.AddWorkflow();//必须添加此代码
            services.AddControllersWithViews();
        }

 

 

 

 public class HomeController : Controller
    {
        private readonly ILogger<HomeController> _logger;
        private readonly IServiceProvider _serviceprovider = null;
        public HomeController(ILogger<HomeController> logger, IServiceProvider serviceprovider)
        {
            _logger = logger;
            _serviceprovider = serviceprovider;
        }

     public IActionResult outCome()
        {

            //start the workflow host
            var host = _serviceprovider.GetService<IWorkflowHost>();
            host.RegisterWorkflow<OutcomeWorkflow, MyData>();
            host.Start();

            Console.WriteLine("启动工作流...");
            host.StartWorkflow("参数", new MyData { Value = 2 });//传入参数 调用分支2


            Console.ReadLine();
            host.Stop();


            return Json(null) ;
        
        }

}

 5.执行效果如下

 

标签:workflow,创建,step,host,serviceprovider,Message,data,public,分支
来源: https://www.cnblogs.com/sunzzhankui/p/16641646.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有