Windows Workflow Foundation简述

当今所有的企业级系统软件事实上都有一个共同的目标:支持业务处理流程。有些处理流程是全自动化的,仅仅依赖于应用之间的交互,其他大部分的处理流程依赖于人来初始化处理流程,批准流程使用的文档,解决其中出现的任何异常的情况。也就是说,我们完全可能将这一系列离散的步骤称之为众所周知的工作流,并用它来描述处理流程中涉及到的人与软件系统的活动。一旦一个工作流被定义,那么一个应用就可以围绕这这个定义(工作流)来支持业务处理流程。

在软件系统里创建和执行一个工作流是独一无二的挑战:

A. 一些业务处理流程需要几个小时,几天甚至几天才能执行完毕,比如,怎么才能让一个工作流当前的状态(一个应用的维护信息)维持如此长的时间?

B. 这种长久运行的工作流也将会与其他软件进行无障碍的交互。如何使得这种异步交互的挑战让开发人员更简单的开发出来?

C. 在软件中一些固定的交互模式往往还是相对直接简单的(流程硬编码--译者注),但是人们需要更好的弹性——比如自由的更改业务处理流程。那么,工作流如何处理这些多样的,不可预测的行为呢?

如果没有一个已经建立好的正确的基础平台,想满足这样的需求是很困难的,当然,如有被设计成支持这种工作流的技术出现,那么创建这类有用的软件系统还是能让它简单的。

MiscoSoft's Windows Workflow Foudnation (WF)就是用于解决这类需求的。它是.NET FRAMEWORK 3.0(3.5)的一个组件,并作为Windows开发平台的一部分提供给开发人员,它提供了一个在Windows建立基于工作流的应用的公共的基础平台。不管这些应用是与软件系统内部交互,还是与人交互,或者两者兼之。

1. 什么是工作流应用系统所需要的

为了对一个像WF工作流平台到底能提供什么有一个认识,我们来研究下一些各种各样的基于工作流的应用系统,下面是一些例子:

A. 任何一种实现长时间运行的处理流程的应用系统都是一个正常的工作流。系统中的处理流程与人交互,这些人可能需 要几个小时或者几天才会 回应,这是这种应用最重要的一个实例场景。比如,围绕的工作流建立起来的一个文档审批流程会让你有所认识。

B. 一个显示Web页面的ASP.NET应用可以让用户来通过工作流来控制如何根据顺序来显示页面,这样做可以无需更改Web页面(页面里的代码)来轻松更改页面的显示流。而且很清晰将页面的控制逻辑与UI分离开来。

C. 一个处于面向服务的环境中的复合应用可以通过工作流来实现的核心行为,当前,越来越多的应用系统通过服务来暴露它们的逻辑,在这些服务之上来创建业务处理流程会变得越来越简单。一个像WF这种的工作流技术提供了基础的平台,在复杂应用里,工作流控制调用这些服务的逻辑,并将他们融合在一起。

D. 一个面向于特定问题的应用,比如CRM系统,或者垂直行业的系统,比如金融领域服务都可以建立在工作流之上,这种应用共同的特点是处理一个或多个业务处理流程。把这些通过驱动业务流程的逻辑的应用系统建立在一个像WF这样的公共的工作流基础平台之上,可以更快的构建,更轻松的变更,更简单的定制。

如果要对工作流基础平台的需求有更深刻的认识,最好的的方法看看一个有更多细节的工作流应用系统的例子。假设现在有一个独立软件开发商(ISV)希望开发一套保险公司的基于工作流的应用系统,下图展示了应用系统需要支持的一个自动保险策略业务流程:

未命名 

流程开始于一个提交者发出一个新的保险单的请求,这个提交者可能是一个呼叫中心的保险代理员,也可能是客户直接通过INTERNET网提交的请求。无论如果,请求是发送到应用系统了,应用系统根据新的请求的信息来创建一个工作流程实例。最开始工作流会根据请求提供的信息来比对公司的策略条款规则。如果申请无法满足公司的保险业标准,申请会被应用系统所拒绝。相反,工作流会通过外部应用系统的个人信用服务来取得申请者的信用历史信息。如果申请者的信用评分达到某一标准,此申请会立即通过!而那些高风险的,有着历史坏帐的信用信息的申请者则需要经理的批准,如果被批准,那么此次请求被接收,否则此次申请将被拒绝。

这个例子揭示了一个基于工作流应用系统的诸多需求,这些需求包括:

A. 根据业务规则来进行决策的能力:这些业务规则有些是很简单的规则,比如根据信用核对的结果来决定是"Yes"还是"No"。还有一些更复杂的规则,比如为了下一个最初的保险业的决定,必须对大量的潜在的规则集进行评估。

B. 与工作流外部系统或者软件交互的方式:比如在这个例子里,一个初始的请求从其他系统发送过来,比如Asp.NET页面。还有其他方面,比如与信用服务交互,可以通过Web Service或者其他的技术。

C. 与人交互的方式:在这个例子里,经理需要审核一些申请的单,这样工作流应用需要有与用户交互的界面,或者通过其他软件的形式与人交互。

D. 在整个工作流生命周期维持状态的能力:尤其是人参与的工作流,比如上述的例子,一个工作流需要长时间才能完成(比如经理外出了一天,或者正在为期两周的假期里),构建一个可伸缩性的系统也需要有一种让工作流停止活动和持久的保存它状态的方法,这样在执行下一步动作的时候才重新激活它并导入其状态信息。

这些都是对工作流的基本要求,但是大部分应用系统的都在没有这些支持工作流基础设施之上迎接挑战。

工作流框架不止提供这些基础的功能,它还能提供如下所述的功能:

A. 一种类似于组件方式的方法,在这样的工作流里,每一步都由一个特定的软件模块来实现,这种方法对在某一特别的领域预见创建一些预先定义的步骤,比如保险应用或者系统管理,然后把它们应用到许多不通的工作流中可能非常有用。

B. 用于创建和修改工作流的图形化工具:因为工作流由一定数量的步骤组成,可以通过图形化工具来图解这些步骤以及他们之间的关系。

C. 监控运行时工作流的能力,实时的检查它们的运行情况。

D. 一种为工作流实例添加步骤的方法:只在软件内部交互的工作流往往不需要这种功能,但是这种弹性的功能,在一些与人交互的工作流中是常见的需求。

工作流是一门比较独特的技术,它有着它独一无二的好处和需求,当这种方法需要长时间的应用在某些特定的领域的时候,一个通用的,有效的工作流基础平台会让它更加有用。工作流已经为成为开发主流软件的派别已经等待了许多年,它只是一个其辅助作用的角色,不是一颗明星,而现在,是改变的时候了!

posted @ 2008-05-03 15:48  Zhongkeruanjian  阅读(812)  评论(0编辑  收藏  举报