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. HDU2829

    题目大意:给定一个长度为n的序列,至多将序列分成m+1段,每段序列都有权值,权值为序列内两个数两两相乘之和.m<=n<=1000. 分析:令w[i,j]表示区间[i,j]中两两乘积之和,f ...

  2. TSP(旅行者问题)——动态规划详解(转)

    1.问题定义 TSP问题(旅行商问题)是指旅行家要旅行n个城市,要求各个城市经历且仅经历一次然后回到出发城市,并要求所走的路程最短. 假设现在有四个城市,0,1,2,3,他们之间的代价如图一,可以存成 ...

  3. c++学习-虚函数

    #include <iostream> using namespace std; class common{ public: virtual void hello(){cout<&l ...

  4. 转载__Java内部类

    内部类是指在一个外部类的内部再定义一个类.内部类作为外部类的一个成员,并且依附于外部类而存在的.内部类可为静态,可用protected和private修饰(而外部类只能使用public和缺省的包访问权 ...

  5. 4 c#

    /直接小写transform表示获取当前脚本所挂载的游戏对象身上的Transform组件 Vector3 p= transform.position;//     transform组件上的位置属性 ...

  6. centos下安装MySQL5.7

    1.查找mysqlwhereis mysql 2.删除mysqlyum remove mysql mysql-server mysql-libs mysql-server;rm –rf /usr/li ...

  7. Mac 终端常用命令备忘

    Tab 补全 pwd 显示路径 一 .ls ls -lh   查看当前路径详细文件 ls ..     返回上级目录 ls -a   显示隐藏文件 ls -a -l 以详细列表显示 ls ../../ ...

  8. codeblocks调试快捷键说明

    使用codeblocks避免不了快捷键: 在调试程序的时候: 首先在view->toolbar->debugger调出来:快捷方式可以自己看 RUN to Cursor  :F4 单步调试 ...

  9. [Flex] ButtonBar系列——flex3 皮肤和外观设置

    <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="h ...

  10. 微信企业号开发--手机删除键keyup事件无效

    $('#input').keyup(function(){}); 其他的按键都是有效的,但是唯独删除按键无效. 以下方法可以解决: $('#input').bind('input propertych ...