基于IBM WPS的动态业务流程的设计与实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于IBM WPS的动态业务流程的设计与实现
杨光
北京邮电大学经济管理学院,北京(100876)
E-mail:rayyang@
摘要:随着商业环境的日益复杂化,对企业流程的管理受到越来越多的重视,基于BPEL的流程组合方法得到了广泛的业界支持。

IBM推出了Websphere Process Server,它集成了强大的业务流程的功能,但该产品缺乏对流程灵活性的支持,用户无法修改已经发布的流程模型。

因此,本文提出了动态流程的概念,设计并实现了基于WPS的动态流程应用程序,并结合一个应用实例分析了其执行过程。

关键词:WPS,动态业务流程,WS-BPEL,ProcessMonitor
1.引言
业务流程[1]是指为了实现某种业务目的的行为的流程或一系列动作,IBM的Websphere Process Server (WPS)集成了业务流程的功能,WPS内部的业务流程管理器负责管理业务流程的生命周期,正确导航/执行相应的基于WS-BPEL流程模型,调用相关服务来集成合适的业务功能。

同时,IBM也提供了相关开发工具——Websphere Integration Developer (WID), 使用WID可以对企业业务流程进行建模和发布。

发布的业务流程模型仅仅描述了业务流程的逻辑,企业需要输入实际数据启动流程模型的实例,该实例代表了一个具体的业务流程。

然而这种实现仍然存在局限性。

商业环境的变化会影响企业的业务流程,然而WPS不支持修改已经部署的业务流程模型,因此企业只能创建并部署新的流程模型,才能达到修改业务流程的目的,从而提高了修改流程的成本。

因此,有必要提供一个动态修改业务流程的应用程序套件(简称动态流程服务),用户利用该套件可以修改业务流程模型的逻辑,如添加新操作、删除操作。

2.动态流程的设计
从架构的角度看,动态流程服务位于用户和WPS的业务流程组件之间,用户通过动态流程组件修改业务流程模型的逻辑,如图所示。

图 2-1 用户交户图
结合引言中提到的局限性,动态流程服务需要完成以下功能:
1.动态性。

用户可以修改现有流程模型的逻辑,不需要创建、部署新的流程模型。

2.改变流程模型的逻辑。

具体可分为流程的增广与删减。

流程的增广,即在流程的执
行过程中添加额外的一个或一系列操作。

流程的删减,即自动执行流程的某个或一
系列操作,在外部看来,流程中的某些操作仿佛已经被删除。

3.组件的可重用。

添加的一个或一系列操作,都可以看作一个组件,且该组件可以被
其他流程模型使用。

因而避免了重复定义组件,增强了动态流程服务的灵活性。

4.面向角色。

在动态流程应用程序上修改流程模型涉及两个主要步骤,开发组件和修
改逻辑。

这些步骤分别由两个角色完成,开发者和逻辑设计者,他们都是动态流程
应用程序的用户。

开发者负责开发组件,通常是企业的IT人员,他必须清楚企业
现有的流程模型,根据业务部门的需求设计可以添加到某个流程模型中的组件。


辑设计者负责修改流程模型的逻辑,通常是提出修改业务流程需求的业务部门,他
们指定原流程模型中的哪个操作后面需要增加额外的操作(组件)或者删除该操作
(自动完成操作)。

5.易用性、可访问性。

目前支持业务流程的服务器产品都有相应的流程开发工具,这
些工具往往功能很强大,使用起来也很复杂,而且流程在创建或修改后都需要花费
一段时间部署到服务器上。

因此,在不影响功能性的前提下,动态流程应用程序的
用户界面及所需要的操作应该尽量简单。

否则,用户还不如重新创建新的业务流程。

另外,用户应该能在任何有网络地方,用任何计算机都能访问动态流程应用程序。

结合上述特点,动态流程应用程序的功能可以概括为在不需要创建新的流程模型的前提下,达到修改原有流程模型逻辑的目的。

3.基于IBM WPS的动态流程的实现
3.1.WPS业务流程
WebSphere Process Server 中的业务流程组件实现了与 Web 服务业务流程执行语言(Web Services Business Process Execution Language,WS-BPEL)兼容的流程引擎。

用户可以通过使用WebSphere Integration Developer进行可视化的流程开发,如下图所示。

业务流程由流程的输入、流程的输出以及流程结构组成[2]。

图 3-1 WID可视化开发环境
流程的输入和输出可以是基本类型的变量,也可以是业务对象。

业务对象是业务数据的
表示形式,它与SDO里的数据对象(Data Object, DO)的概念相对应。

WPS V6使用XML 模式来定义业务对象类型(即业务对象实例含有的属性和引用等)。

业务对象可以通过属性包含基本类型的变量和其它的业务对象。

基本类型的变量包括字符串型、整型、布尔型、时间日期等。

业务流程机构由WS-BPEL描述,流程中的每一个操作(也作节点)称为活动。

活动可以包括多种类型,其中比较常用的包括接收、人员任务、调用、分支选择、循环和回复。

流程分为单向和双向。

单向流程是指没有输出的流程。

双向流程包含输入和输出,例如销售审批流程需要销售信息作为输入,同时需要返回审批结果。

接收活动通常是流程的入口,负责启动流程实例,而回复活动通常出现在双向流程中。

人员活动表示该活动本身需要人员的参与,调用活动可以调用其它SCA组件,例如业务流程。

3.2.动态流程服务的实现
动态流程应用程序基于WPS,其相应的基础构架如下:
图 3-2 动态流程应用程序架构
业务流程数据库、业务对象服务和业务流程引擎由WPS提供。

动态流程应用程序包括三个主要模块,开发人员模块、逻辑修改模块和核心模块。

本文将以下图所示场景为例,讲述动态流程应用程序的开发和使用细节。

原审批流程模型中,主管审批后,则通知财务审批。

现在需要增加另外一级的审批,如“经理审批”。

动态流程服务采用了Web2.0界面,实现了易用性和可访问性。

图 3-3 流程监控器
由于底层的业务流程组件对外提供的接口功能非常有限,本文实现的动态流程应用程序只允许在人员活动或调用活动之后添加额外的操作,并且只能删除流程中的人员活动或调用活动。

但是,通过与多个IBM客户的交流发现,目前的功能足以满足日常业务的需求。

3.2.1.开发人员模块
动态流程中所使用的组件重用了WPS中的业务流程组件,因此开发人员可以利用WID 开发组件,然后将组件部署到WPS上。

另外,动态流程应用程序还提供了逻辑描述和组件描述的XML Schema以及变量映射接口。

开发人员可以访问动态流程服务的主页来下载它们。

流程模型的逻辑采用XML进行描述比较简单,开发人员可以用任何支持XML的编辑器进行编辑。

逻辑描述指出了,流程模型中的某项活动之后可以添加的组件。

组件描述包括组件的基本信息和变量映射实现类的类全名。

基本信息包括组件的名称、组件应用程序名称等。

变量映射接口,定义了一组接口,实现了流程和组件之间变量的映射。

例如,流程中result是一个布尔型的变量,表示主管的审批结果。

在调用组件“经理审批”时需要将result 的值映射到组件中的某个输入变量中,如approved1。

组件执行结束后,需要将执行的结果(组件的内部变量)映射回原流程的某个变量中,如result。

变量映射的接口如下:
Class IVariableAdapter{
getInput(PIID
piid);
ClientObjectWrapper
spiid);
Map
getOutput(PIID
}
getInput方法中,开发人员需要通过流程实例的ID(PIID)取得流程中某个变量的值,将其封装在ClientObjectWrapper变量中。

ClientObjectWrapper为调用组件所需要的参数。

getOutput方法中,通过spiid取得子流程的某些变量值并放在java.util.Map中,Map的Key 为主流程的变量名称,即将组件中的变量值赋给主流程的相应变量。

从外部看来,组件“经理审批”仿佛就是原流程模型中的一个活动。

3.2.2.逻辑修改模块
逻辑修改模块集成到了IBM的ProcessMonitor[3]上。

Process Monitor采用了Web2.0技术,实现了在Web浏览器中对流程模型进行可视化的编辑并支持拖拽。

用户在登陆
ProcessMonitor后,点击Dynamic Process连接,进入逻辑修改模块,修改流程模型的逻辑。

该模块包括三个部分,流程模型列表、工作台和组件列表。

图 3-4 用户模块
用户在左侧选择某个流程模型后,工作台会显示流程的逻辑,组件列表会显示所有可以添加的组件(由开发人员在逻辑描述中定义)。

用户需要将组件拖拽到工作台中合适的位置,如果某个人员活动或调用活动后面允许添加该组件,则组件图标会高亮显示,否则不允许添加。

保存之后启动的流程实例会执行修改后的逻辑。

如果删除一个任务,用户在要删除的活动上点击鼠标右键,接下来会显示自动完成该活动所需要的变量,用户需要为这些变量提供默认值,在流程执行到该活动时自动完成。

3.2.3.核心模块
核心模块通过分析用户模块和开发人员模块的信息,与WPS上的业务流程组件通信,实现流程的动态增广或删除。

核心模块与流程引擎之间的通信依赖于WPS提供的业务流程事件机制,动态流程应用程序启动时会将核心模块中的类HTWMStateObserver注册成流程事件的监听者。

这样,当流程及流程中活动的状态改变时,WPS会通知核心模块这些变化。

当核心模块监听到事件后,会从事件对象中取得流程的执行信息,然后根据这些信息检查逻辑描述,如果存在描述信息,则调用相应的组件(执行添加的操作)或删除某些操作,否则继续执行。

为了提高查找的速度,调用规则会有两份拷贝。

一份在动态流程数据库中,另一份则在内存中。

但由于使用了两份拷贝,涉及到同步的问题。

在开发人员上传逻辑描述文件以及重启服务器的情况下,都需要更新数据库及内存中的数据。

仍然以上述场景为例,开发者开发了一个包含“经理审批”活动的流程组件,并定义该组件只能添加在审批流程中的“主管审批”活动之后。

上传的XML描述文件及变量影射实现类被存在动态流程的数据库中。

用户在逻辑设计界面选择审批流程后,会显示刚刚开发的“经理审批”组件,将该组件托放到“主管审批”之后并保存。

图 3-5 修改流程模板
保存时,Web程序会通知核心模块更新数据库和内存中的信息。

在这之后启动的流程实例在执行到“主管审批”时,核心模块会收到活动开始的事件,当查找发现活动“主管审批”在逻辑描述中时,暂停当前流程的执行,因为“主管审批”后面的活动(财务审批)需要在“经理审批”之后才能执行。

“主管审批”执行完成后,核心模块会收到“主管审批”活动完成的事件,从而调用映射实现类的getInput方法并用返回的参数调用“经理审批”组件。

在“经理审批”组件完成后,核心模块会调用getOutput方法将组件中的变量值赋给流程中的指定变量,之后恢复原流程的执行。

3.3.实现难点
3.3.1.性能分析
动态流程应用程序的核心部分基于事件机制,任何一个流程的行为都可能触发一个事件,而所有这些事件都会被路由到核心模块中,当核心模块处理事件时,WPS的流程引擎处于阻塞状态,因此很可能成为动态流程的应用程序的性能瓶颈。

通过反编译大量的相关文件,作者发现WPS用一个数组维护所有注册过的监听类(实现同样的接口),每当事件发生后,就会调用每一个类中的接口方法。

因此,当一个普通流程执行时,动态流程应用程序对整个系统的影响可以认为是多了一次方法调用。

对于一台服务器来说,方法调用对性能的影响可以忽略不计。

3.3.2.多租户的支持
多租户是一个目前比较流行的概念,即产品本身可以支持多家公司同时使用,许多公司都对现有产品增加了多租户的功能。

如IBM的WPS,微软的Exchange。

对于动态流程应用程序来说,实现多租户就是允许不同公司对同一个模板级别或实例级别的流程定义不同的调用规则、组件和变量映射实现类。

因此,需要在内存表和数据库中增加额外的字段区分不同的租户。

4.总结
本文结合企业对流程灵活性的需求,提出了动态流程的概念以及动态修改WPS业务流程模型的解决方案。

本文首先分析了WPS对业务流程的支持及局限,提出了动态流程的概念,并进一步分析了动态流程需具备的基本功能。

最后,结合具体例子描述了基于WPS的动态流程应用程序的设计和实现。

参考文献
[1] 范玉顺,《工作流管理技术基础》[M] 北京:清华大学出版社,2001
[2] Getting Started with WebSphere Integration Developer and WebSphere Process Server [M]. IBM Redbook.
[3] Jing Li, Tiejun Ou, and Changjie Guo. A Practical Approach for the Operation Level Monitoring of Executable Business Process [EB/OL], /scss.aspx, 2007
Design and Implementation of the Dynamic Workflow Application Based on IBM WPS Server
Yang Guang
School of Economics and Management,Beijing University of Posts and Telecommunications,
Beijing (100876)
Abstract
With the complexity of the business environment, many enterprises pay more and more attention to the process management. BPEL-based process component methodology is widely supported. Although the new generation J2EE server published by IBM is integrated with the powerful business workflow management component, it is lack of flexibility. User can not modify the already published workflow model. Therefore, the paper provides a new concept called dynamic workflow and an implementation of the WPS based application.
Keywords:WPS,BusinessWorkflow,WS-BPEL,ProcessMonitor。

相关文档
最新文档