和我一起学Windows Workflow Foundation(1)-----创建和调试一个WF实例

原创 2007年09月17日 09:47:00
 

今天开始,我打算开始学习WWF,从网上搜索到了部分相关资料,也找到了一些文档和实验。但是,资料以英文的占多数,所以,在学习起来似乎比较吃力,不过相信我能坚持下来,顺便提高点英语阅读能力,不过本人英文水平实在是差,解释的不到位或错误的地方请大家谅解(千万别笑话我,哈哈)。毕竟我也是从空白开始学习WWF,让我们一起进步。

首先,我们需要安装WinFX下载)和Visual Studio 2005 extensions for .NET Framework 3.0 (Windows Workflow Foundation)。这是我们必备的开发组件。

这些例子和教程是从微软的labs上下载到的,分为10个部分。先来学最基础的第一部分先 :)

第一部分的目的

这个试验的目的是介绍Windows Workflow Foundation的工作流概念的关键点

完成了这个试验以后,我们可以学习到:

· 使用Visual Studio 2005 为WWF设计顺序工作流

· 配置和使用Visual Studio 2005调试器调试你的工作流

· 让工作流接受参数

· 通过接收事件触发一个新的工作流实例

· 定义条件

· 为If/Else, Delay, Listen, and Code配置基本的活动(activities不知道怎么翻译好)

· 给工作流为接收到的事件定制活动

工作流是在一个活动图中进行定义的,它可能是一个人为操作或一个系统进程。一个活动在工作流中是一个步骤,其体现为一个可执行单元,并且是可重用的,可整合的。工作流在设计好后被编译成.net程序集,它被工作流运行时和通用语言运行时(CLR)所执行。

 

一.创建一个Hello World工作流

在这次练习里,我们将通过VS2005工作流设计器设计一个非常简单的“Hello World”工作流。这个Hello World工作流将通过很简单的代码实现一个顺序工作流,它将在我们的命令行中输出“Hello, World!”。我们将了解工作流的定义和其代码。最后,我们将学习怎样通过VS2005在我们的机器上执行、调试我们的工作流。

打开VS 2005,新建项目,选择“顺序工作流控制台应用程序”,修改项目名称为:HelloWorldWorkflow.

 

1. 点击确定我们将生成一个新的工作流项目。

2. 这个项目会为我们自动生成一个工作流模版Workflow1。在这里我们是不需要这个模版的,我们只是做一个非常简单的例子,所以我们删除这个Workflow1.cs文件。

3. 右键单击项目选择添加新项

4. 选择“顺序工作流(具有单独的代码)”,点确定添加。这里将添加两个文件Workflow1.xoml和Workflow1.xoml.cs,Workflow1.xoml包含了描述工作流类型的XML语言,而其CS后缀的的文件则包含这个工作流内的动作执行代码。

5. 下面我们要做的就是添加代码了。双击Workflow1.xoml文件来打开VS 工作流设计器视图。

6. 我们从工具箱里可以砍刀我们可以添加的各种活动。

7. 我们从工具箱中拖拽“Code”这个活动到我们的工作流当中。

8. 注意,这个时候在我们拖拽进来的“Code”这个活动的右上角有一个红色的叹号,点击下拉的小三角我们可以看到显示这个叹号的呀,是因为属性ExecuteCode还没有被设置。

9. 那么下一步很明白了,我们需要设置ExecuteCode,点击这个提示,我们会发下在属性窗口的ExecuteCode会显示高亮,在其内输入codeActivity1_CodeHandler并双击,会在后台代码Workflow1.xoml.cs中生成codeActivity1_CodeHandler方法

10. 可以看到,这个类继承自 SequentialWorkflowActivity 基类. 我们要在方法中输入:

Console.WriteLine("Hello, World!");

全部代码如下:

 

using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Collections;
using System.Drawing;
using System.Workflow.ComponentModel.Compiler;
using System.Workflow.ComponentModel.Serialization;
using System.Workflow.ComponentModel;
using System.Workflow.ComponentModel.Design;
using System.Workflow.Runtime;
using System.Workflow.Activities;
using System.Workflow.Activities.Rules;
namespace HelloWorldWorkflow
{
public partial class Workflow1 : SequentialWorkflowActivity
{
private void codeActivity1_CodeHandler(object sender, EventArgs e)
{
Console.WriteLine("Hello, World!");
}
}
}

11. 按Ctrl+F5运行程序,如果出现:
则说明成功。

12. 是不是太简单了?至少,我们第一次的工作流编写完成了。

13. 等等,别急,还有个好玩的,那就是WWF的调试功能。我们在以前调试的时候,是要在代码中设置断点的,现在,你可以试一下调试WWF。

14. 打开工作流的设计视图Workflow1.xoml。

15. 选中我们刚才拖拽过来的codeActivity1,点右键,选断点—插入断点(或者选中后直接点F9),看到了什么?

6. 现在我们再按F5,在执行到这里的时候就会停止,可以进行调试了。

7. 点F11单步执行将进入我们的codeActivity1_CodeHandler事件,是不是很方便?

 

今天先说这么多,明天继续学,呵呵

创建和运行长时间运行的工作流(三)

分析PersistableIdleAction的枚举值 我们在创建和运行长时间运行的工作流(二)中的ConfigureWorkflowApplication方法里面,在wfApp的Persistab...
  • mathieuxiao
  • mathieuxiao
  • 2013年02月21日 15:13
  • 3222

进程创建和进程终止

进程创建和进程终止 ▇以Solaris系统上的Sched进程理解进程的创建 名词对照小贴士 pid 进程标志符。大多数操作系统根据一个唯一的pid来识别进程pid通常是个整数。 ...
  • white_cloth
  • white_cloth
  • 2014年01月27日 17:29
  • 1016

《Python基础教程》

步长不能为0,但步长可以是负数,即从右到左提取元素,但开始索引必须大于结束索引 2.2.3 序列相加 列表和字符串是无法连接在一起的,尽管它们都是序列。简单来说,两种相同类型的序 列才能...
  • lp310018931
  • lp310018931
  • 2015年10月14日 03:07
  • 1065

跟我一起学windows初高级调试(1) --你为什么要学调试

本系列文章使用C/C++语言,vs自带调试器和windbg等其他相关调试工具,介绍windows下用户态下的初高级调试,不涉及内核调试...
  • ithzhang
  • ithzhang
  • 2014年02月09日 10:57
  • 5506

和我一起学 Selenium WebDriver(1)——入门篇

zTree 东西不多,我也一直使用着原始的人工测试手段,随着内容的不断增多,测试起来就越发的繁杂,而且经常犯懒,这样就会忽略很多本该发现的问题,而且也容易出现旧的bug 反复出现的情况,这都是测试不规...
  • shenzhenhair
  • shenzhenhair
  • 2013年02月26日 20:21
  • 201

和我一起学 Selenium WebDriver(1)——入门篇

zTree 东西不多,我也一直使用着原始的人工测试手段,随着内容的不断增多,测试起来就越发的繁杂,而且经常犯懒,这样就会忽略很多本该发现的问题,而且也容易出现旧的bug 反复出现的情况,这都是测试不规...
  • xuchuangfeng
  • xuchuangfeng
  • 2017年03月06日 15:00
  • 120

和我一起学 Selenium WebDriver(1)——入门篇

原址:点击打开链接    zTree 东西不多,我也一直使用着原始的人工测试手段,随着内容的不断增多,测试起来就越发的繁杂,而且经常犯懒,这样就会忽略很多本该发现的问题,而且也容易出现旧的bug ...
  • u011461420
  • u011461420
  • 2016年05月17日 20:30
  • 1179

和我一起学 Selenium WebDriver(1)——入门篇

zTree 东西不多,我也一直使用着原始的人工测试手段,随着内容的不断增多,测试起来就越发的繁杂,而且经常犯懒,这样就会忽略很多本该发现的问题,而且也容易出现旧的bug 反复出现的情况,这都是测试不规...
  • xiao190128
  • xiao190128
  • 2015年11月11日 17:28
  • 330

我和我的小伙伴们一起学Unity3D(一)

Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。(粘自...
  • wwwang89123
  • wwwang89123
  • 2013年08月19日 21:00
  • 738

和我一起学批处理(2)

回显、代码屏蔽与暂停 回显代码屏蔽与暂停 回显 暂停 代码屏蔽 最终效果与代码回显回显,就是在你做的程序中,显示出一行字来,也就是让别人打开程序后,看到一行字(说白了就是输出文字) 例如 这里...
  • wei_developer
  • wei_developer
  • 2016年03月26日 10:50
  • 150
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:和我一起学Windows Workflow Foundation(1)-----创建和调试一个WF实例
举报原因:
原因补充:

(最多只允许输入30个字)