WF学习笔记(一)

-流程启动方式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可以对流程内定义的参数,变量赋值。image

-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);



        }

 }

imageimage

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);



        }

 }

imageimage

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);



        }

}

imageimage

你可能感兴趣的:(学习笔记)