FREE BOOK

Chapter 1: Workflow Program

Posted by Packt Publishing Free Book | WF October 15, 2010
In this chapter we will see how to create WF program with different methods.

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".



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

Total Pages : 13 56789

comments