-流程启动方式1:
WorkflowInvoker.Invoke(new Workflow1());
-流程启动方式2:
WorkflowApplication instance = new WorkflowApplication(new Workflow1());
instance.Run();
-顺序容器Sequence定义了[Collection<Activity> Activities 属性]与[Collection<Variable> Variables 属性] ,[Activities]集合,可以存放Activity ,集合中的Activity按顺序从上向下执行 [Variables]集合用于存放变量。
-CodeActivity 一个抽向类,继承该类后,需要override该类的Execute方法,用于编写自定义的功能代码;
public sealed class CodeActivity1 : CodeActivity { // 定义一个字符串类型的活动输入参数 public InArgument<string> Text { get; set; } // 如果活动返回值,则从 CodeActivity<TResult> // 派生并从 Execute 方法返回该值。 protected override void Execute(CodeActivityContext context) { // 获取 Text 输入参数的运行时值 string text = context.GetValue(this.Text); Console.WriteLine(text); } }
-可以定义变量来传递数据,流程中的变量也有作用域
Assign 赋值 继承CodeActivity可以对流程内定义的参数,变量赋值。
-Arguments是WF的输入输出接口,在同一个流程内,所有Activity共享一组参数. 参数有如下属性: In、Out、In/Out、property。
In参数关联变量值可传入内部;内部修改参数时,关联变量不会改变。
public sealed class InArgumentActivity : CodeActivity { public InArgument<string> InText { get; set; } protected override void Execute(CodeActivityContext context) { string text = context.GetValue(this.InText); Console.WriteLine("外部传入值:" + text); context.SetValue(InText, "内部修改V1的值"); text = context.GetValue(this.InText); Console.WriteLine("内部修改后:" + text); } }
Out参数关联变量值无法传入内部,内部参数修改时,会更新其管理的变量。
public sealed class OutArgumentActivity : CodeActivity { public OutArgument<string> OutText { get; set; } protected override void Execute(CodeActivityContext context) { string text = context.GetValue(this.OutText); Console.WriteLine("外部传入值:" + text); context.SetValue(OutText, "内部修改V1的值"); text = context.GetValue(this.OutText); Console.WriteLine("内部修改后:" + text); } }
In/Out参数关联变量值可传入内部;内部参数修改时会更新其关联的变量。
public sealed class InOutArgumentActivity : CodeActivity { public InOutArgument<string> InOutText { get; set; } protected override void Execute(CodeActivityContext context) { string text = context.GetValue(this.InOutText); Console.WriteLine("外部传入值:" + text); context.SetValue(InOutText, "内部修改V1的值"); text = context.GetValue(this.InOutText); Console.WriteLine("内部修改后:" + text); } }