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 C# Code

In this task, we will create the same "HelloWorkflow" function Workflow using pure C# code, beginning from a Console Application.

How to do it...

  1. Create a Console Application project:
    Create a new Console Application project under the Chapter01 solution. Name the project HelloCodeWorkflow. The following screenshot shows the Console Application new project dialog:



  2. Add reference to the System.Activities assembly :
    By default, a new Console Application doesn't have reference to the System. Activities assembly, due to which we need to perform this step.

  3. Create Workflow definition code:
    Open Program.cs file and change the code present as follows:

    using System.Activities;

    using System.Activities.Statements;

    namespace HelloCodeWorkflow

    {

        class Program

        {

            static void Main(string[] args)

            {

                WorkflowInvoker.Invoke(new HelloWorkflow());

            }

        }

        public class HelloWorkflow : Activity

        {

            public HelloWorkflow()

            {

                this.Implementation = () => new Sequence

                {

                    Activities = {

                        new WriteLine(){Text="Hello Workflow"}

                    }

                };

            }

        }

    }

  4. Run it:
    Set HelloCodeWorkflow as Startup project and press Ctrl+F5 to run it. As expected, the result should be just like the previous result shown.

How it works...

We use the following namespaces:

using System.Activities;

using System.Activities.Statements;

Because WorflowInvoker class belongs to System.Activities namespace . Sequence activity, WriteLine activity belongs to System.Activities.Statements. namespace .

    public class HelloWorkflow : Activity

    {

        public HelloWorkflow()

        {

            this.Implementation = () => new Sequence

            {

                Activities = {

                    new WriteLine(){Text="Hello Workflow"}

                }

            };

        }

    }

By implementing a class inherited from Activity, we define a Workflow using imperative code.

WorkflowInvoker.Invoke(s);

This code statement loads a Workflow instance up and runs it automatically. The WorkflowInvoker.Invoke method is synchronous and invokes the Workflow on the same thread as the caller.

There's more

WF4 also provides us a class DynamicActivity by which we can create a Workflow instance dynamically in the runtime. In other words, by using DynamicActivity , there is no need to define a Workflow class before initializing a Workflow instance. Here is some sample code:

public static DynamicActivity GetWF()

{

    return new DynamicActivity()

    {

        Implementation = () => new Sequence()

        {

            Activities ={

                new WriteLine(){Text="Hello Workflow"}

            }

        }

    };

}

Total Pages : 13 12345

comments