1.2      Windows Workflow概览

微软的Windows Workflow Foundation(简称WF)是.NET框架3.0版的一部分。.NET3.0其它主要部分是Windows Presentation Foundation(简称WPF)和Windows Communication Foundation(简称WCF)。微软将在Windows XP,Windows Server 2003 和Windows Vista操作系统中提供对WF的支持。

WF在当前和未来都能够得到微软操作系统平台的支持,这样很可能会造就出一个WF被持久而广泛地应用的局面。我们可以在智能客户端软件和简单的控制台程序中应用WF。我们也可以在服务器端软件中应用WF,这类软件包括了Windows服务、ASP.NET的Web应用程序和Web服务。WF还将出现在微软自行开发的几款产品中,比如Windows SharePoint Services 和 Microsoft Biztalk Server。现在,我们来看看WF都有哪些本质特征。

1.2.1  活动

活动(Activity)是WF中的基本构件。活动构成了一个工作流中的各个步骤或任务,它们实现了对工作流的定义。我们可以按层次把多个活动组织起来,然后把它们作为指令输入给工作流引擎去执行。活动能够影响工作流的执行路径,而人和软件系统都可以参与其中。

WF中的所有活动都继承自Activity类。Activity类定义了工作流中所有活动都要具备的通用操作,比如Execute和Cancel方法。这个类还包括了通用属性的定义,比如Name和Parent属性,以及通用事件的定义,比如Executing和Closed事件(当一个活动执行完毕,它会引发Closed事件)。下面的截屏图显示的是在Visual Studio 2005类设计器中看到的Activity类。

WF以“基本活动库”的形式为用户提供了一系列预制活动模块。在基本活动库中有一些简单活动,比如像IfElseActivity 和 WhileActivity这样的控制流操作活动,开发者可以把它们作为构建复杂活动的基础。基本活动库还包括了更多的活动,它们当中有的能够等待事件,有的能够调用Web服务,有的能够执行规则引擎,等等等等,不一而足。

1.2.1.1      自定义活动

Windows Workflow允许开发人员通过创建自定义活动的方式对基本活动库的功能进行扩展,这样就能够解决特定领域的问题。例如,为了提高比萨饼送餐流程的效率,我们可以采用SendOrderToKitchen 或 NotifyCustomer之类的自定义活动。

所有的自定义活动最终都会继承自Activity基类。工作流引擎在执行一个活动时,不会区分它是由微软,还是由第三方提供的。

我们可以用自定义活动构建出专门用于创建工作流解决方案的域特定语言。域特定语言的应用可以极大地简化问题空间。比如,我们可以自定义一个SendOrderToKitchen活动,用它把一个Web服务调用和其它处理逻辑封装在一起。这个活动显然是为餐厅问题域定制的。与使用基本类库中的简单活动相比,使用这个经过高级抽象的活动做开发必然会提高程序员的工作效率。即便是一位餐厅经理也会理解SendOrderToKitchen的含义,并且有可能在可视化工作流设计器中使用到它。如果你听说某位餐厅经理更倾向于使用WhileActivity和InvokeWebServiceActivity活动,那才怪了!

 

C#,VB.NET和XML都是通用语言,能够应用到众多的领域中去解决不同类型的问题。因此,我们使用C#既能为比萨饼餐厅,也能为医院编写软件,而且C#能够同等地满足这两个领域对开发语言的要求。“域特定”语言可以为特定领域内的问题提供出色的解决方案。如果使用餐厅工作流域特定语言为一个餐厅编写软件,那么这套软件可能会提高餐厅的生产效率;如果还是用这门语言为医院搞开发,那可就没人敢为软件的应用效果打包票了。

章节链接:

【翻译习作】 Windows Workflow Foundation程序开发

【翻译习作】 Windows Workflow Foundation程序开发-前言

【翻译习作】 Windows Workflow Foundation程序开发-第一章01

【翻译习作】 Windows Workflow Foundation程序开发-第一章02的更多相关文章

  1. 【翻译习作】 Windows Workflow Foundation程序开发-第一章05

    1.3      开发我们的第一个工作流 也许你曾经在这样的产品经理手下搞过开发:他总是在你身边转悠,并不时的问一句“你还没做完吗?”.在这一部分,我们将用一个简单的Windows Workflow程 ...

  2. 【翻译习作】 Windows Workflow Foundation程序开发-第一章04

    1.2.3  Windows Workflow运行时 从Windows Workflow的角度看,可以将工作流活动当成是交给一个工作流处理器去执行的一系列指令或操作码.在Windows Workflo ...

  3. 【翻译习作】 Windows Workflow Foundation程序开发-第一章03

    1.2.2.Visual Studio 2005扩展包 微软也为Windows Workflow开发者提供了Visual Studio 2005扩展包.扩展包将许多功能集成到Visual Studio ...

  4. 【翻译习作】 Windows Workflow Foundation程序开发-第一章01

    第 1 章    欢迎来到工作流的世界 …思想如蝴蝶般飞到我身边 —— Gossard / Vedder (译注:Gossard与Vedder是来自Pearl Jam乐队的2名乐手,该句出自他们的歌曲 ...

  5. 【翻译习作】 Windows Workflow Foundation程序开发

    近期整理硬盘,把09年的翻译习作<Windows Workflow Foundation程序开发>找出来了.现在又把译文过了一遍,做了些修改,贴出来献丑了.原书是<Programmi ...

  6. 【翻译习作】 Windows Workflow Foundation程序开发-前言

    Windows Workflow Foundation程序开发-基于XAML和C#的WF实战技术与例程 ——C#程序员的WF功能与编程接口技术指导 前言 Windows Workflow Founda ...

  7. 你还记得windows workflow foundation吗

    很多年前,windows workflow foundation还叫WWF,而直译过来的名称让很多人以为它就是用来开发工作流或者干脆就是审批流的. 博主当年还是个懵懂的少年,却也知道微软不会大力推一个 ...

  8. Workflow-Microsoft:Windows Workflow Foundation

    ylbtech-Workflow-Microsoft:Windows Workflow Foundation 1. Windows Workflow Foundation返回顶部 1.1. Windo ...

  9. 微信小程序开发-第一弹

    前言:       本篇文章为大家详细介绍微信小程序开发第一篇,后续步骤会逐步更新,欢迎大家关注. 第一步  注册        1.1 打开网址 https://mp.weixin.qq.com/  ...

随机推荐

  1. CRT:C运行库简介

    1)运行时库就是 C run-time library,是 C 而非 C++ 语言世界的概念:取这个名字就是因为你的 C 程序运行时需要这些库中的函数.   2)C 语言是所谓的"小内核&q ...

  2. IAR Embedded Workbench IDE 显示行号

    第一次使用IAR Embedded Workbench IDE,默认设置是不现实代码行号的.显示代码行号方法如下:首先选择“Tools”菜单项,打开“IDE Option”对话框,然后在树状图中选择“ ...

  3. QT5中的信号与槽与C++ 11的function的配合

    最近将公司的界面开发库从WX转换到了QT,有了信号和槽,原本我们在使用WX的时候,为了使用信号,我们是使用BOOST的signal2库,到了QT有了信号槽,这个就没什么必要了 但是前段时间使用QT发现 ...

  4. Shell_Oracle Erp基于主机文件Host开发详解(案例)

    2014-06-20 Created By BaoXinjian

  5. jQuery图片延迟加载插件jQuery.lazyload

      插件描述:jQuery图片延迟加载插件jQuery.lazyload,使用延迟加载在可提高网页下载速度.在某些情况下,它也能帮助减轻服务器负载. 使用方法 引用jquery和jquery.lazy ...

  6. 深入ThreadLocal之二

    概述 相信读者在网上也看了很多关于ThreadLocal的资料,很多博客都这样说:ThreadLocal为解决多线程程序的并发问题提供了一种新的思路:ThreadLocal的目的是为了解决多线程访问资 ...

  7. tar.gz和rpm安装文件(转载)

    from:http://bbs.chinaunix.net/thread-2277750-1-1.html Linux软件的二进制分发是指事先已经编译好二进制形式的软件包的发布形式,其优点是安装使用容 ...

  8. RunJS - 在线编辑、展示、分享、交流你的 JavaScript 代码

    发现一个很好玩,很强大的网站 RunJS - 在线编辑.展示.分享.交流你的 JavaScript 代码   http://runjs.cn/ 比如: http://runjs.cn/detail/l ...

  9. substring与substr

    一.substring package Test; public class SubstringTest { public static void main(String[] args) { Stri ...

  10. RDLC添加页码

    页脚显示页码并总页数首先添加页脚,在页脚拖一textbox,textbox的表达式输入:="第" & Globals!PageNumber & "页 共& ...