
Microsoft Windows Workflow Foundation 4.0 Cookbook
By :

In this task, we will run a WF program by loading it from an XAML file.
Create a workflow project:
Create a new Workflow Console Application under the Chapter01
solution and name the project as LoadUpWorkflowFromXML
.
Author a workflow:
Author the Workflow1.xaml
file; this workflow will print a string to console as shown in the following screenshot:
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.
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:
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()));
Change the font size
Change margin width
Change background colour