Chapter 1 Introducing Windows Workflow Foundation

本文介绍了如何使用Windows Workflow Foundation (WWF) 创建一个简单的控制台应用程序,通过逐步指导完成环境搭建、项目创建、工作流设计及运行流程。
Chapter 1 Introducing Windows Workflow Foundation
实现Windows Workflow FoundationHello 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.csWorkflow1.cs
Program.cs:所有的控制台项目创建时都会自动生成这个文件。
Workflow1.cs:包括Workflow1.csWorkflow1.designer.cs,空的Workflow Component,可以通过Workflow设计器设计。

三、设计Workflow1.cs
1.双击Workflow1.cs,进入设计界面。从工具箱中拖一个IfElse ActivityWorkflow1中,默认名称ifElseAcvivity1ifElseAcvivity1包含两个分支,ifElseBranchActivity1ifElseBranchActivity2。其中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 ActivityifElseBranchActivity1中,默认名称codeActivity1。同样的,codeActivity1右上角有一个感叹号,表示必要的属性没有设置,这种其况编译是不能通过的。
双击codeActivity1Visual 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 WorldWorkflow Program开始了Windows Workflow Foundation之旅,需要注意的是,这个示例没有体现任何WWF的优势,仅仅是一个体验。
WWF更多精彩,让我们共同期待。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值