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

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
主站蜘蛛池模板: 宣威市| 金门县| 双峰县| 河南省| 吴忠市| 禹州市| 塔城市| 洮南市| 防城港市| 扎兰屯市| 荔波县| 阜城县| 晋江市| 思南县| 台北县| 凤台县| 洪雅县| 台中市| 肃南| 逊克县| 肇庆市| 岑巩县| 泸水县| 云阳县| 封开县| 乌兰浩特市| 上栗县| 武清区| 宁武县| 九寨沟县| 许昌县| 深州市| 桂东县| 武乡县| 合山市| 盘锦市| 丘北县| 潮安县| 五峰| 门源| 柳河县|