Chapter 1 Introducing Windows Workflow Foundation
实现Windows Workflow Foundation的Hello World
一、安装Windows Workflow Foundation支持
1. Visual Studio 2005
2. .NET Framework 3.0
3. Visual Studio Extensions for Windows Workflow Foundation
二、新建Sequential Workflow Console Application(顺序工作流控制台应用程序)
1.启动Visual Studio 2005,依次点击File >>> New >>> Project,打开New Project窗口。
2.选择Visual C# >>> Workflow >>> Sequential Workflow Console Application,名称中输入FirstFlow,位置中输入E:/WWFStepByStep/Chapter1,解决方案名称中输入FirstFlow。


3.点击确定,Visual Studio自动生成一些项,并且将界面切换到Workflow设计器。这些自动生成的项包括Program.cs和Workflow1.cs。
Program.cs:所有的控制台项目创建时都会自动生成这个文件。
Workflow1.cs:包括Workflow1.cs和Workflow1.designer.cs,空的Workflow Component,可以通过Workflow设计器设计。




三、设计Workflow1.cs
1.双击Workflow1.cs,进入设计界面。从工具箱中拖一个IfElse Activity到Workflow1中,默认名称ifElseAcvivity1,ifElseAcvivity1包含两个分支,ifElseBranchActivity1和ifElseBranchActivity2。其中ifElseBranchActivity1右上角有一个感叹号,表示必要的属性没有设置,这种其况编译是不能通过的。




2.选择ifElseBranchActivity1,设置Condition属性,选择Code Condition,在自动展开的Condition中输入TestCondition,切换焦点后Visual Studio将自动切换到代码视图。




3.在代码视图中输入以下代码。
private int num = 0;
public int Number
{
get { return this.num; }
set { this.num = value; }
}
private void TestCondition(object sender, ConditionalEventArgs e)
{
e.Result = this.num < 10;
}
4.从工具箱中拖一个Code Activity到ifElseBranchActivity1中,默认名称codeActivity1。同样的,codeActivity1右上角有一个感叹号,表示必要的属性没有设置,这种其况编译是不能通过的。
双击codeActivity1,Visual Studio将自动设置ExecuteCode属性,并切换到代码视图。






5.在代码视图中录入以下代码。
private void codeActivity1_ExecuteCode(object sender, EventArgs e)
{
Console.WriteLine("The number is less than 10.");
}
6.用上两步的方法同样在ifElseBranchActivity2中增加Code Activity,默认名称为codeActivity2。




private void codeActivity1_ExecuteCode(object sender, EventArgs e)
{
Console.WriteLine("The number is more than or equal 10.");
}
四、调用Workflow.cs
1.打开Program.cs,录入以下代码。
static void Main(string[] args)
{
Console.WriteLine("Please input a number and then press [Enter].");
Console.Write("Number:");
int number = 0;
for (; ; )
{
try
{
number = int.Parse(Console.ReadLine());
break;
}
catch
{
Console.WriteLine("Please input a integer and then press [Enter].");
Console.Write("Number:");
}
}
Console.WriteLine("Handling...");
using(WorkflowRuntime workflowRuntime = new WorkflowRuntime())
{
AutoResetEvent waitHandle = new AutoResetEvent(false);
workflowRuntime.WorkflowCompleted += delegate(object sender, WorkflowCompletedEventArgs e)
{
waitHandle.Set();
};
workflowRuntime.WorkflowTerminated += delegate(object sender, WorkflowTerminatedEventArgs e)
{
Console.WriteLine(e.Exception.Message);
waitHandle.Set();
};
Dictionary<string, object> parameters = new Dictionary<string, object>();
parameters.Add("Number", number);
WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(FirstFlow.Workflow1),parameters);
instance.Start();
waitHandle.WaitOne();
}
Console.WriteLine("Press any key to exit program.");
Console.Read();
}
2.执行程序。

五、结束语
本章以一个类似Hello World的Workflow Program开始了Windows Workflow Foundation之旅,需要注意的是,这个示例没有体现任何WWF的优势,仅仅是一个体验。
WWF更多精彩,让我们共同期待。
本文介绍了如何使用Windows Workflow Foundation (WWF) 创建一个简单的控制台应用程序,通过逐步指导完成环境搭建、项目创建、工作流设计及运行流程。
692





