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

Creating a WF program using InOutArgument

In this task, we will create a WF program using InOutArgument. This type of argument is used to receive values and is also used to pass values out to the caller (WF host).

How to do it…

  1. Create a workflow project:

    Create a new Workflow Console Application under the Chapter01 solution and name the project as UseInOutArgument.

  2. Author a workflow:

    Create an InOutArgument type argument: InOutMessage. Author a WF program as shown in the following screenshot. In the Assign activity textbox, type InOutMessage = "Now, I am an OutMessage".

    How to do it…
  3. Write code to host the workflow:

    Open the Program.cs file and alter the code as shown:

    using System;
    using System.Activities;
    using System.Activities.Statements;
    using System.Collections.Generic;
    
    namespace UseInOutArgument{
        class Program{
            static void Main(string[] args){
                IDictionary<string, object> input =
                    new Dictionary<string, object>() 
                { 
                    {"InOutMessage","Now, I am InMessage"}
                };
                IDictionary<string,object> output=
                    WorkflowInvoker.Invoke(new Workflow1(),input);
                Console.WriteLine(output["InOutMessage"]);
            }
        }
    }
    
  4. Run it:

    Set UseInOutArgument 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 following screenshot:

How to do it…

How it works...

The following code block initializes the InArgument value:

IDictionary<string, object> input =
                new Dictionary<string, object>() 
            { 
                {"InOutMessage","Now, I am InMessage"}
            };

This statement will run the workflow program with the input dictionary.

IDictionary<string,object> output=
                WorkflowInvoker.Invoke(new Workflow1(),input);

The string Now, I am InMessage is printed by the workflow. The string Now, I am an OutMessage is a message altered in the workflow and passed to the host and then printed by the host program.

There's more...

We cannot assign a string to InOutArgument directly, and the following style of parameter initialization is not allowed:

IDictionary<string, object> output =
    WorkflowInvoker.Invoke(new Workflow1() 
    { 
        InOutMessage="Now,I am InMessage"
    });

See Also

  • Creating a WF program using OutArgument
  • Initializing a WF program using InArguments
主站蜘蛛池模板: 共和县| 漳浦县| 当阳市| 扎鲁特旗| 北海市| 遂宁市| 叶城县| 彭阳县| 松江区| 定南县| 余姚市| 鹤庆县| 开江县| 介休市| 新龙县| 万安县| 商南县| 获嘉县| 河津市| 乐业县| 交城县| 南漳县| 柞水县| 尼勒克县| 崇左市| 萨嘎县| 蒙自县| 新民市| 乌鲁木齐县| 侯马市| 新昌县| 崇义县| 大田县| 民乐县| 遵化市| 靖宇县| 临汾市| 阿勒泰市| 墨竹工卡县| 霍州市| 青铜峡市|