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. 一个自己做的easyui datagird扩展

    var a; $(function () { $("body").bind("contextmenu", function () { return false; ...

  2. Java-Thread

    1. 线程的创建和启动 1.1 继承Thread 在run方法里,通过this获取当前线程. 多个线程不能共享实例变量. 1.2 通过实现接口 1.2.1 实现Runable接口 在run方法里,只能 ...

  3. 在Myeclipse中移除项目对Hibernate的支持

    在Myeclipse中移除项目对Hibernate的支持 在使用Hibernate框架进行开发时可能会遇到配置错误或者需要删除Hibernate支持的情况.下面就说一下如何彻底移除项目的Hiberna ...

  4. 通过xib创建View

    1 创建一个xib并使之与一个自定义的View相关联 2 在自定义的View中参考如下代码: - (id)initWithFrame:(CGRect)frame { self = [super ini ...

  5. Mysql游标的简明写法

    -- cursor 游标/*declare 声明; declare 游标名 cursor for select_statement;open 找开; open 游标名fetch 取值; fetch 游 ...

  6. java和C++在多态实现上的区别

    1:java中没有虚函数的概念,但是有抽 象函数的概念,用abstract关键字表示,java中抽象函数必须在抽象类中,而且抽象 函数不能有函数体,抽象类不能被实例化,只能由其子类实现抽象函数,如果某 ...

  7. sessionStorage、localStorage简介

    简介 技术一般水平有限,有什么错的地方,望大家指正. sessionStorage.localStorage.cookie这三个是我们在浏览器端用来存储数据的,cookie使用起来较为繁琐以后进行总结 ...

  8. BEvent_客制化BusinessEvent通过Workflow Event接受消息传递(案例)

    2014-08-03 Created By BaoXinjian

  9. Studio之版本管理工具Git (图文教程)

    目前业界主流的版本管理工具主要是 svn/git.svn是1种集中式的代码管理工具,而git是1种散布式的代码管理工具,广受极客的爱好.而基于git的github更是全宇宙码农的提高逼格,深究技术的必 ...

  10. ylbtech-LanguageSamples-Unsafe(不安全代码)

    ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-Unsafe(不安全代码) 1.A,示例(Sample) 返回顶部 “不安全代码”示例 ...