首页 > 其他分享 >workflow创建分支工作流

workflow创建分支工作流

时间:2022-08-31 08:22:35浏览次数:52  
标签: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,分支
From: https://www.cnblogs.com/sunzzhankui/p/16641646.html

相关文章

  • 在 React 中无压力地创建表单
    在React中无压力地创建表单管理验证、错误、修改字段列表等的简单方法Photoby泰勒尼克斯on不飞溅老实说,有很多方法可以管理表单的状态。现在我们有很多选择。......
  • 如何创建前端 WebGPU 项目?
    目录1.丐版HelloWebGPU①为什么是index.html②你这个代码为什么浏览器没有显示东西?③为什么你不用HTTP协议打开index.html2.我需要类型提示2.1.使用VSCode的......
  • new的工作原理、new和字面量创建对象的区别
    new的工作原理:1.创建一个空对象,构造函数中的this会指向这个对象2.这个新对象会被链接到原型3.执行构造函数方法,其属性和方法都会被添加到this引用的对象中4.如果构造函......
  • ElasticSearch7创建index时指定type问题
    项目背景最近在某项目开发中遇到一个高版本ES创建索引时指定index和type问题。项目中的ES使用了阿里云上的ES,版本为7.4。通过ES官网对各版本type的演变如下:在5.X版本......
  • numpy基本属性,numpy创建array
    基本属性importnumpyasnparray=np.array([[1,2,3],[4,5,6]])array.dtype返回矩阵的数据类型array.ndim返回该矩阵是几维的array.size返回矩阵的大小(元素的......
  • 优雅创建List或者Map的方式
    List创建空List:Collections.emptyList();创建单个元素的List:Collections.singletonList("item");但是需要注意,上面两种创建方式创建出来的List都是不可变List,创建可......
  • Dataset与DataFrame创建的比较方式
    DataFrameDataset创建方式1.根据集合或者RDD的隐式函数toDF(列名)创建(需要引入SparkSession的隐式转换函数)2.SparkSession的createDataFrame函数3.外部结构化......
  • Jenkins 踩坑 | job 创建、参数化、定时构建及时区偏差问题解决
    ⬇️点击“下方链接”,提升测试核心竞争力!>>更多技术文章分享和免费资料领取1)启动Jenkins后在首页点击"开始创建一个新任务"。2)输入任务名称,选择自由风格,点击“确定”。......
  • ABAP-PP BOM主数据批量创建
    需求:PP模块BOM主数据批量创建修改。批量创建BOM主数据BAPI:BAPI_MATERIAL_BOM_GROUP_CREATE批量修改BOM主数据BAPI:CSAP_MAT_BOM_MAINTAINCS01:创建BOM主数据CS02:更改BOM......
  • python 日志写入文件,参数说明及动态判断文件是创建还是追加
    importloggingimportos'''格式符含义%(levername)s日志级别名称%(pathname)s当前执行程序的路径(即脚本所在的位置)%(filename)s执行脚本程序......