官术网_书友最值得收藏!

Creating a WF program using OutArgument

In this task, we will create a WF program that can return a result to the workflow host.

How to do it...

  1. Create a workflow project:

    Create a new Workflow Console Application under the Chapter01 solution; name the project as UseOutArgument.

  2. Author a workflow:

    Author the workflow shown in the following screenshot. Here are the detailed actions:

    1. Drag a Sequence activity from Toolbox to the designer panel.
    2. In the bottom of the designer panel, click the Arguments button, and click Create Argument to create an OutArgument string named OutMessage.
    3. Drag two WriteLine activities from Toolbox into the Sequence activity and fill the textboxes with "Start…" and "End" respectively.
    4. Drag an Assign activity from Toolbox to the designer panel. Fill the right expression box with OutArgument as OutMessage, whereas fill the right expression box with the following string: This is a message from workflow.
      How to do it...
  3. Write code to host the workflow:

    Open Program.cs file and change the host code as follows:

    using System;
    using System.Activities;
    using System.Collections.Generic;
    
    namespace UseOutArgument {
        class Program {
            static void Main(string[] args) {
                IDictionary<string,object> output=
                    WorkflowInvoker.Invoke(new Workflow1());
                Console.WriteLine(output["OutMessage"]);
            }
        }
    }
    
  4. Run it:

    Set UseOutArgument as Startup project. Press Ctrl+F5 to build and run the workflow without debugging. The application should run in a console window and print the message as shown in the next screenshot:

    How to do it...

How it works...

Look at the following code snippet:

IDictionary<string,object> output=
     WorkflowInvoker.Invoke(new Workflow1());
Console.WriteLine(output["OutMessage"]);

OutMessage is the name of OutArgument we defined in Workflow1.xaml. the WorkflowInvoder.Invoke method will return a IDictionary type object.

There's more...

There is a third type of workflow argument: InOutArgument. It is a binding terminal that represents the flow of data into and out of an activity. In most cases, we can use InOutArgument instead of InArgument and OutArgument. But there are still some differences—for example, we cannot assign a string to InOutArgument, while it is allowed to assign a string to InArgument directly in the host program.

主站蜘蛛池模板: 松阳县| 尤溪县| 克拉玛依市| 神木县| 科技| 彭山县| 庄河市| 叶城县| 上蔡县| 专栏| 大洼县| 长宁县| 宁阳县| 孙吴县| 绥芬河市| 南汇区| 二连浩特市| 清丰县| 南乐县| 乐东| 新建县| 将乐县| 莲花县| 邵东县| 日土县| 凤山市| 柳江县| 滕州市| 盐山县| 紫阳县| 南雄市| 太白县| 黄大仙区| 尼木县| 额尔古纳市| 五家渠市| 松滋市| 农安县| 涪陵区| 阜康市| 义马市|