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.

Loading up a WF program from an XAML file

In this task, we will run a WF program by loading it from an XAML file.

How to do it...

  1. Create a Workflow project:
    Create a new Workflow Console Application under the Chapter01 solution and name the project as LoadUpWorkflowFromXML.

  2. Author a Workflow:
    Author the Workflow1.xaml file; this Workflow will print a string to console as shown in the following screenshot:



  3. Create code to load up the Workflow instance from an XAML string:
    Open Program.cs file and change code as follow:

    using System;

    using System.Activities;

    using System.Activities.Statements;

    using System.IO;

    using System.Collections;

    using System.Text;

    using System.Activities.XamlIntegration;

    namespace LoadUpWorkflowFromXML

    {

        class Program

        {

            static void Main(string[] args)

            {

                string filePath= @"C:\WF4Cookbook\Chapter01\LoadUpWFFromXML\Workflow1.xaml";

                string tempString="";

                StringBuilder xamlWFString = new StringBuilder();

                StreamReader xamlStreamReader =

                    new StreamReader(filePath);

                while (tempString != null){

                    tempString = xamlStreamReader.ReadLine();

                    if (tempString != null) {

                        xamlWFString.Append(tempString);

                    }

                }

                Activity wfInstance = ActivityXamlServices.Load(

                    new StringReader(xamlWFString.ToString()));

                WorkflowInvoker.Invoke(wfInstance);

            }

        }

    }

    We may need to change the file path according to our real environment.

  4. Run it:
    Set LoadUpWorkflowFromXML 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...

We use the following code block to read a Workflow XML string from file and store the string in xamlWFString:

string filePath= @"C:\WF4Cookbook\Chapter01\LoadUpWFFromXML\Workflow1.xaml";

string tempString="";

StringBuilder xamlWFString = new StringBuilder();

StreamReader xamlStreamReader =

    new StreamReader(filePath);

while (tempString != null){

    tempString = xamlStreamReader.ReadLine();

    if (tempString != null) {

        xamlWFString.Append(tempString);

    }

}

Then, using the following statement, ActivityXamlServices reads the XML Workflow and builds up a Workflow object graph:

Activity wfInstance = ActivityXamlServices.Load(

                new StringReader(xamlWFString.ToString()));

Total Pages : 13 910111213

comments