惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
H
Help Net Security
博客园_首页
P
Privacy International News Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tenable Blog
Latest news
Latest news
D
Darknet – Hacking Tools, Hacker News & Cyber Security
爱范儿
爱范儿
Cyberwarzone
Cyberwarzone
P
Palo Alto Networks Blog
月光博客
月光博客
有赞技术团队
有赞技术团队
Know Your Adversary
Know Your Adversary
博客园 - 叶小钗
P
Proofpoint News Feed
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
S
Schneier on Security
A
About on SuperTechFans
F
Full Disclosure
The Cloudflare Blog
T
The Exploit Database - CXSecurity.com
S
SegmentFault 最新的问题
Apple Machine Learning Research
Apple Machine Learning Research
Microsoft Security Blog
Microsoft Security Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
N
News and Events Feed by Topic
www.infosecurity-magazine.com
www.infosecurity-magazine.com
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Webroot Blog
Webroot Blog
量子位
大猫的无限游戏
大猫的无限游戏
小众软件
小众软件
WordPress大学
WordPress大学
Last Week in AI
Last Week in AI
美团技术团队
Help Net Security
Help Net Security
Microsoft Azure Blog
Microsoft Azure Blog
GbyAI
GbyAI
云风的 BLOG
云风的 BLOG
Y
Y Combinator Blog
博客园 - 司徒正美
N
Netflix TechBlog - Medium
S
Security @ Cisco Blogs
B
Blog
P
Privacy & Cybersecurity Law Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
Hacker News - Newest:
Hacker News - Newest: "LLM"
V
Visual Studio Blog
NISL@THU
NISL@THU

博客园 - zhangdong

软件架构和设计 在Visual Studio 2010中定义GDI+自定义控件——自定义控件介绍 Visual Studio 2010 Team System 动手实验室——架构师工具 Visual Studio 2010 Team System 动手实验室 Silverlight 框架 .NET Framework 3.5 Silverlight 的发展之路 Microsoft Exchange Server 2010 介绍 Silverlight 3 —— 介绍 搭建基于MOSS的团队解决方案01——Microsoft Office SharePoint 2007 Server快速入门(Continued) 搭建基于MOSS的团队解决方案01——Microsoft Office SharePoint 2007 Server快速入门 Windows Workflow Foundation实验01——Windows Workflow Foundation快速入门(练习四) Windows Workflow Foundation 实验01 —— Windows Workflow Foundation 快速入门(练习三) Windows Workflow Foundation实验01——Windows Workflow Foundation 快速入门(练习二) Windows Workflow Foundation实验——安装与准备 使用.NET平台工具操作Live Framework 地图控件快速入门——控制地图 地图控件快速入门 - zhangdong - 博客园 WCF中的管道——管道类型
Windows Workflow Foundation实验01——Windows Workflow Foundation快速入门(练习一)
zhangdong · 2010-01-13 · via 博客园 - zhangdong

试验目标

这个试验的目的是介绍Windows Workflow Foundation工作流的概念。完成这个试验后,你可以:

  • 使用Visual Studio 2008设计器编写顺序工作流
  • 配置和使用Visual Studion 2008 调试工作流
  • 向工作流中传递参数
  • 接受一个事件以激活新的工作流的实例
  • 定义条件
  • 配置基本的活动,包括if/else、Delay、Listen和Code
  • 在工作流中利用自定义的活动接受事件

工作流是一个人工或系统的执行过程。这个过程以活动视图的形式定义。一个活动就是工作流中的一个步骤,也是工作流执行、重用和组成的基本单元。工作流的设计,就是设计活动的布局,并将其编译到.NET程序集中。这个程序集会运行在工作流运行时和公共语言运行时中。

练习一 —— 创建一个Hello World 工作流

这个练习中,你会使用Visual Studio 2008的Windows Workflow Foundation 设计器创建一个非常简单的“Hello World ”工作流。Hello World工作流是一个顺序工作流,包含一个code活动。code活动用来在运行时向输出设备打印一句“Hello World”。你将会探索工作流的定义和工作流的Code-Beside。最后,你会看到如何使用一个简单的宿主执行和调试你的工作流。

任务1 —— 创建一个新的工作流的项目
  1. 在开始|所有程序|Microsoft Visual Studio 2008中打开Visual Studio 2008。
  2. 选择文件|新建|项目。
  3. Visual Studio 2008会显示新建项目对话窗口。
  4. 在新项目对话窗口中,展开左侧项目类型树中的Visual C#|Workflow。
  5. 选择名为“Sequential Workflow Console Application”并且输入如下属性值:Name: HelloWorldWorkflowimage
  6. 现在你就有了一个新的解决方案和工作流项目
  7. 这个项目模板中有一个Workflow1.cs。而这个在我们将要定义一个简单工作流之前我们将会移除它。选中Workflow1.cs并点击del键。点击Ok按钮以确认删除。
  8. 在解决方案管理器中,右键单击HelloWorldWorkflow项目,在弹出的菜单中选择添加|新项。
  9. 在添加新项窗口中,选择Sequential Workflow (with code separation)。点击添加,以加入一个新的工作流到HelloWorldWorkflow项目中。注意:你可以通过点击右上角工具栏中的图标把添加新项对话窗口的视图改为大图标,你就可以预览到模板的全名。image
  10. 新的顺序工作流项目将会包含两个文件:Workflow1.xoml和Workflow1.xoml.cs。Workflow1.xoml包含XML标签来显示工作流的类型。Workflow1.xoml.cs包含的是工作流的code-beside类image .
任务2 —— 添加活动代码
  1. 在解决方案资源管理器中双击Workflow1.xoml,以打开Visual Studio 工作流设计器。
  2. 在工作流设计器中,选择视图|工具箱菜单,以在工具箱中显示可用的活动。
  3. 你需要在工具箱视图中展开Windows Workflow类,就可以看到Workflow Foundation的可用活动。
  4. 在工具箱中选择Code活动。
  5. 拖拽Code活动到顺序工作流的设计界面。
  6. 注意标记在新的Code活动上的惊叹号。单击惊叹号标记来查看Smart箭头,就可以知道这里提示惊叹号的原因。clip_image002
  7. 选择Smart箭头将会触发属性工具窗口的显示,并且ExecuteCode属性被标记为高亮。
  8. 在ExecuteCode属性中输入codeActivity1_CodeHandler,并点击回车。
  9. 这样就会触发一个新的方法或者事件被添加到工作流的Code-beside类代码中。Visual Studio将会自动打开Workflow1.xoml.cs代码文件并显示新建的codeActivity1_CodeHandler方法。另外,你还可以通过在设计视图中双击活动或者选择视图|代码菜单两种方法,从设计视图跳转到代码界面。
  10. Code-beside类是一个继承自SequentialWorkflowActivity基类的部分类。这个code-beside类与工作流同名。此时,你的类中会有如下代码:
       1:  using System;
       2:  using System.ComponentModel;
       3:  using System.ComponentModel.Design;
       4:  using System.Collections;
       5:  using System.Drawing;
       6:  using System.Linq;
       7:  using System.Workflow.ComponentModel.Compiler;
       8:  using System.Workflow.ComponentModel.Serialization;
       9:  using System.Workflow.ComponentModel;
      10:  using System.Workflow.ComponentModel.Design;
      11:  using System.Workflow.Runtime;
      12:  using System.Workflow.Activities;
      13:  using System.Workflow.Activities.Rules;
      14:   
      15:  namespace HelloWorldWorkflow
      16:  {
      17:      public partial class Workflow1 : SequentialWorkflowActivity
      18:      {
      19:          private void codeActivity1_CodeHandler(object sender, EventArgs e)
      20:          {
      21:   
      22:          }
      23:      }
      24:  }
  11. 在codeActivity1_CodeHandler方法中添加如下代码,向标准输出设备输出Hello World!
       1:  private void codeActivity1_CodeHandler(object sender, EventArgs e)
       2:  {
       3:              Console.WriteLine("Hello,World!");
       4:   }
  12. 选择生成|生成解决方案,编译并生成你的项目确保没有编译错误或警告。
任务3 —— 使用调试模式运行工作流

在这个练习中,我们将会使用一个简单的宿主程序Program.cs。这个类是我们选择工作流项目模板是自带的。另外,你还可以通过调用定义在System.Workflow.Runtime命名空间中的工作流APIs生成你自己的工作流宿主应用程序。

  1. 在解决方案资源管理器中双击workflow1.xoml,打开Visual  Studio 工作流设计器。
  2. 单击codeActivity1活动以选中它,并且在它上面设置断点。
  3. 右键单击code1活动,选择断点|插入断点,来设置断点的位置。
  4. 现在你应该看到一个红色的圆点在Code1活动的左侧。clip_image002[1]
  5. 按下F5,在Visual Studio调试环境下编译并运行解决方案。
  6. 基于控制台的测试宿主将会启动一个工作流实例。这个实例运行到code活动时,会中断。黄色的框表示调试器停止在的活动。clip_image002[3]
  7. 在菜单中选择调试|单步调试,然后调试器将会跳进code1_CodeHandler方法的开始位置。clip_image002[5]
  8. 选择几次调试|单步调试,你会看到在测试宿主程序运行的窗口中打印出了“Hello, World!”。
  9. 至此,工作流运行结束,程序也完成。image