workflow-core 数据传递
使用workflow 过程中一定涉及数据在各stepbody专递,下面建立一个 工作流,演示如何通过传值计算两个数乘积
一、建立用于传值的类 mydata
/// <summary> /// 功能传值 使用 /// </summary> public class myData { /// <summary> /// 传递 给input1 /// </summary> public int Value1 { get; set; } /// <summary> /// 传递 给input2 /// </summary> public int Value2 { get; set; } /// <summary> /// 传递 给Output /// </summary> public int Value3 { get; set; } }
二、建立过程体(StepBody) Multiplication 用于计算 input1* Input2=Output
/// <summary> /// 功能 计算 input1*input2=Output /// </summary> public class Multiplication : StepBody { public int Input1 { get; set; } public int Input2 { get; set; } public int Output { get; set; } public override ExecutionResult Run(IStepExecutionContext context) { Output = Input1 * Input2 ; return ExecutionResult.Next(); } }
三、建立过程体用于输出计算结果 PrintResult
/// <summary> /// 功能 输出结果 /// </summary> public class PrintResult : StepBody { public string Message { get; set; } public override ExecutionResult Run(IStepExecutionContext context) { Console.WriteLine(Message); return ExecutionResult.Next(); } }
四、新建工作流(passDataWorkFlow),用于启动工作流、传参,计算结果
public class passDataWorkFlow:IWorkflow<myData> { public string Id => "PassingDataWorkflow"; public int Version => 1; public void Build(IWorkflowBuilder<myData> builder) { builder .StartWith(context => { Console.WriteLine("工作流启动!!!"); return ExecutionResult.Next(); }) .Then<Multiplication>() .Input (step => step.Input1, data => data.Value1)//将 Value1赋值 给input1 .Input (step => step.Input2, data => data.Value2)//将 Value2赋值 给input2 .Output(data => data.Value3, step => step.Output)//将 Output 给 value3 .Then<PrintResult>() .Input(step => step.Message, data => $"工作流执行结果{data.Value1}*{data.Value2}= " + data.Value3.ToString()) .Then(context => { Console.WriteLine("工作流执行完毕!!"); return ExecutionResult.Next(); }); } }
五、启动工作流
在asp.net core HomeController 新建一个Action 启动工作流
public class HomeController : Controller{ IServiceProvider serviceProvider1 = null; public HomeController(IServiceProvider serviceProvider1 ) { this.serviceProvider1 = serviceProvider1; }
public IActionResult passingData() { var host= serviceProvider1.GetService<IWorkflowHost>(); host.RegisterWorkflow<passDataWorkFlow, myData>(); host.Start(); var initialData = new myData { Value1 = 100, Value2 = 1000 }; //传入 两个数据 计算乘积 host.StartWorkflow("PassingDataWorkflow", 1, initialData); Console.ReadLine(); host.Stop(); return Json(null); } }
结果如下:

浙公网安备 33010602011771号