BPM(Business Process Management)作为一种技术,同时也是一门商业学科,它从流程管理的角度出发来协助企业建立便捷、直通的业务环境,从而提高企业的敏捷度以及在市 场上随需应变的能力。一般来说,流程管理有两种机制,一种是基于交易 (Transactional) 的流程管理,交易过程很大程度上依赖于应用集成和系统点到点的处理,而这一过程的生命周期很短,可能并不需要人与人之间的交流。另一种是基于内容 (Content)这样的任何非结构化信息的流程管理,以内容为中心的流程是一个需要高度协作并要求用户在系统或内容的基础上做出决策的过程。
作为复杂的业务流程,通常需要内容和交易两种流程管理机制的有效结合。下面,我们来看本文要介绍的两种流程管理产品在使用上分别侧重于哪种机 制。
IBM WebSphere BPM 与 IBM FileNet BPM
IBM WebSphere BPM 在实现 BPM 的同时转向 SOA,以应用服务的整合及重用为核心,对于流程涉及到的各种异构系统具有与平台无关的特点,能够轻松的将所需服务无缝的整合在一起,同时凭借其松耦合的 特性,使得企业可以按照模块化的方式来添加新服务或更新现有服务,以满足新的业务需要。通过这样的解决方案,企业就能够对业务的变化做出快速的反应,并利 用对现有应用程序和应用基础结构的投资来实现新的业务需求。
IBM FileNet BPM 是偏重于内容的流程管理,它以人与事件的交互为根本,在流程处理时依据提供的各种非结构化的内容信息做出快速有效的决策。FileNet BPM 所提供的嵌套的流程设计、流程配置和流程管理工具实现了对复杂业务流程需求的快速实现。它在流程处理过程中能及时有效的追踪任务,获取里程碑并预知时间瓶 颈,像人的大脑一样模拟流程管理中的各个环节,从而帮助企业提高业务处理能力和避免人工管理的繁琐工作。
在实现和管理工作流的整个周期中需要经历四个阶段:建模,实现,部署和监控管理,由于 FileNet BPM 同样可以和 WebSphere 一样使用 WebSphere Business Modeler 进行建模,而监控管理软件属于流程优化的范畴,所以这两个阶段在这里就不加赘述了。我们在本文中将着重讨论两种解决方案在实现和部署阶段,各自针对 Web 服务的实现方法和策略。在此之前首先介绍下它们分别所涉及到的产品和工具:
该实例描述的是提供给用户的一个购房贷款流程。在场景中,用户首先向银行提交一份贷款申请,银行业务人员对用户信息的确认通过后会自动调用一 个贷款审批的 Web 服务,这个 Web 服务通过一定的业务标准对用户的请求进行判断并且返回给用户一个及时的响应,最后由用户来确定该贷款行为是否生效,如图 2 所示。
在整个流程中,除了必须的人工任务之外,流程中最为核心的部分就是提供贷款审批的 Web 服务(图 3),它是将一个已经设计并实现了的业务流程发布为 Web 服务来提供给外部调用的。
下面将详细介绍该实例以及被它调用的 Web 服务的设计与实现。
WID 应用了 SCA(Service Component Architecture) 这套符合 SOA 思想的规范 , 目的是为了可复用 , 可组装 , 对应于 SCA 中的一些概念有:component,module,import\export 和 share library。
下面将介绍如何设计一个工作流并将其导出为一个 Web 服务,以及如何利用另一个工作流调用该 Web 服务。
1. 设计该项目要用到的数据对象
在共享库(share lib)里的数据类型(data types)下新建商业对象(business object),如图 4 所示。
2. 设计实现各个功能的组件与其接口
在组件集设计面板上拖动组件(Component)调色板里的流程(Process),规则组(Rule Group)以及人工服务(Human Task)组件进行组装,并且在共享库里的接口(Interfaces)节点下创建每个组件的接口。如图 5 所示。
3. 实现每个组件的功能
这里以自动审批规则“AutoApprovalRules”组件和主控流程“LoanApprovalProcess”组件为例简单介绍实现 组件功能。
在自动审批组件实现面板中的规则逻辑(Rule Logic)处选择新建规则集“New rule set”,并进入规则逻辑编辑面板,按图 6 所示的信息编写其规则的逻辑。
在实现“LoanApprovalProcess”组件的流程设计面板中,根据业务模型的要求设计出流程图,并且添加自动审批和人工审批这两 个组件的引用到特定的步骤中,完成流程图(见图 7)。
4. 将该组件绑定为 Web 服务
我们回到项目的组装图(Assembly Diagram),为流程组件添加一个绑定为 Web 服务的导出,(见图 8)。
将该模块利用 WPS 部署为企业应用供其他的服务所调用。
根据上一个流程的步骤来实现这个购房贷款流程,下面只详细说明一下如何利用 WID 在组件中调用现有 Web 服务。
1. 在库中导入被调用 Web 服务的 WSDL 文件
向当前共享库中导入被调用的 Web 服务的 WSDL 文件,可以看到共享库的业务视图中出现了 Web 服务端口的项以及该服务的接口,如图 9 所示。
2. 以导入组件的形式引用 Web 服务
通过向组装图中拖拽共享库中的 Web 服务端口,生成一个 Web 服务的导入(Import),如图 10 所示。
3. 在流程中使用 Web 服务
在流程设计面板右侧的引用伙伴(Reference Partner)中拖拽名为“LoanApprovalInterfacePartner”的合作项,使之被流程所调用。如图 11 所示,为组件的接口映射变量来实现消息的传递。
最后,定义和实现所需要的组件、接口以及数据类型,并且按照一定的规则将其连接起来,实现流程,如图 12 所示。
FileNet BPM 通过一系列步骤(Step)的组合来实现工作流定义,针对流程中任务的执行,使用了队列(Queue)的概念,也就是步骤中的工作都是在队列中执行的。根 据流程中任务的执行者不同,FileNet 将队列分为 4 类:用户队列、工作队列、组件队列和系统队列。
需要人机交互来完成的工作项将会指派给用户队列和工作队列,这两者的不同主要在于用户队列中任务的参与者是个人,而工作队列中任务的参与者是 组。系统队列和组件队列是用于执行不需要参与者的任务,它们的区别在于系统队列提供的操作和功能是由 FileNet BPM 实现并直接提供给用户使用,而组件队列提供的功能是需要由用户自行设计实现并且在进行配置后才可以使用。本例中,我们将用系统队列和用户队列来完成流程中 的各项任务。
接下来将介绍如何利用 FileNet BPM 设计一个工作流并将其发布为一个 Web 服务,然后再阐述如何利用另一个工作流调用这个现存的 Web 服务。
1. 设计数据字段
根据业务场景对于 Web 服务的要求,设计在流程中需要的数据类型,如图 13 所示。
2. 设计流程
根据业务场景从 PD 提供的步骤(Step) 调色板中选取适当的步骤来完成流程,如图 14 所示。
3. 为提供 Web 服务定义伙伴链接(Partner Link)
配置伙伴链接的类型为接收 / 回复(Receive/Reply)同时为其定义进程端口类型(Process Port Type)使该流程可以作为 Web 服务被其他流程调用,如图 15 所示。
4. 进一步实现流程功能
我们必须要为流程中的步骤指定特定的用户和执行中所需要的参数,如图 16 所示。
为了提供 Web 服务,我们需要实现流程中的接收步骤和回复步骤。在接收步骤的属性面板中进行相应配置。如图 17 所示。
设置好接收 / 回复步骤的属性并且通过验证后,可以将流程进行传输(Transfer),这是将流程发布成为 Web 服务不可缺少的步骤。
按照 Web 服务流程的实现完成购房贷款流程,流程设计如图 18 所示。接下来将着重介绍如何在该流程调用(Invoke)现有 Web 服务。
1. 为调用 Web 服务定义伙伴链接(Partner Link)
定义伙伴链接的类型为调用(Invoke),并且在“WSDL URL”框中输入或者选择被调用 Web 服务的 WSDL 文件的 URL,如图 19 所示。
如图 20 所示,FileNet 提供了三种获取 Web 服务的方式,其中 WSRR 注册和 UDDI 注册需要在流程配置控制台(PCC)中进行相应的配置,然后在查询页面就可以得到由 WSRR 或 UDDI 提供的 Web 服务的查询服务了。在这个实例中,我们选择第三种方式进行查找,获得之前在本地传输的工作流的 WSDL,如图 20 所示。
2. 在 PD 中实现 Invoke 功能
为调用步骤指定之前定义的伙伴链接(Partner Link),然后选择 Web 服务提供的操作,并为操作提供引入引出的参数(见图 21),这样就完成了调用 Web 服务的配置。
3.在 AE 端启动 WSRequest 并启动流程
在启动流程之前,我们需要在 AE 的流程任务管理器(Process Task Manager)中启动工作流所在的隔离区域(region)的组件管理器(Component Managers)。通过图 22 可以看到,有一个 WSRequest(0)的组件已经启动,我们需要靠它实现工作流对 Web 服务的请求。
在 WSRequest(0)启动后,回到 PD 验证流程无逻辑错误后,点击 PD 工具栏上的启动(Launch)按钮将流程启动。
通过应用这两种 BPM 产品对于同一个场景的实现,我们对于两种产品在流程实现上的一些异同有了基本的认识,下面将总结两种产品在实现并调用的 Web 服务上各自的方法和策略。
如图 23 所示,在贷款审批流程设计并实现后,Websphere BPM 需要为流程添加绑定为 Web 服务的导出,部署该服务。实现购房贷款流程的过程中以导入组件的形式引用该服务,从而实现 Web 服务的应用。
图 23. Websphere BPM 实现并调用 Web 服务
如图 24 所示,在设计贷款审批流程的过程中,我们需要在流程中使用接收步骤和回复步骤来实现该流程作为 Web 服务时同调用方的交互,将贷款审批流程传输后,在实现购房贷款流程时配置伙伴链接和调用步骤来应用 Web 服务。
图 24. FileNet BPM 实现并调用 Web 服务
通过阐述两种产品的对于 Web 服务实现以及调用的形式,我们可以看到在调用 Web 服务的过程中,两个产品都提供了很多机制来获取 Web 服务,但不论是直接指定 WSDL 文件还是利用 UDDI 搜索获取 WSDL 文件的 URL,两个产品上在调用 Web 服务的本质是相同的,实际上就是对获取的 WSDL 进行解析,根据 WSDL 文件里描述端口,服务以及操作等信息,定义对现有服务进行参数的输入和输出结果的接收。而面向 SOA 的理念都可以使两种产品满足市场需求。