-
Book Overview & Buying
-
Table Of Contents
-
Feedback & Rating
Microsoft Windows Workflow Foundation 4.0 Cookbook
By :
In this task, we will create the same "HelloWorkflow" function workflow using pure C# code, beginning from a Console Application.
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:

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.
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"}
}
};
}
}
}
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.
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="Hellow 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.
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"}
}
}
};
}
Change the font size
Change margin width
Change background colour