一个基于Mule ESB的综合业务处理平台的设计和实现

2013-04-29 00:44:03陈真理俞东进刘其群
计算机时代 2013年8期

陈真理 俞东进 刘其群

摘 要: 在进行企业应用集成过程中,企业服务总线技术经常被用于组织内部或跨组织边界的不同应用系统的连接,以达到在不改变已有应用的情况下最大限度地简化业务流程的目的。基于企业服务总线技术提出了一个支持跨系统数据交换和业务交互的综合业务处理平台的设计方案。该平台基于Mule ESB、Apache Drools等开源软件实现,其中Mule ESB用于构建企业服务总线,Apache Drools用于构建规则引擎。初步实验结果验证了该平台的有效性。

关键词: 企业服务总线; 企业应用集成; 综合业务处理平台; 开放源码

中图分类号:TP311 文献标志码:A 文章编号:1006-8228(2013)08-08-03

0 引言

企业应用集成(Enterprise Application Integration,EAI)泛指连接、管理和组合企业间和企业内应用,使其能以统一的方式进行互联和互操作,以支持业务过程自动化的技术。从应用的角度上讲,它包含了两个方面的内容:数据交换和业务交互。其中,数据交换为参与应用集成的多个系统提供了一个统一的数据视图;而业务交互则实现了跨系统的、粗粒度的、自治业务的实时调用。

随着信息化建设的不断推进,企、事业单位内的信息系统规模不断扩展而变得越来越复杂。信息化发展的阶段性、标准不统一以及各种认识上的误区,经常会导致所谓的“信息孤岛”现象,从而产生各种数据孤岛(不同部门的信息不能共享)、系统孤岛(不同系统彼此独立而无法共用)、业务孤岛(不能实现跨部门、跨业务的业务流转和协同)、管控孤岛(不能实现信息系统的集成化管理)等。

解决“信息孤岛”问题有各种对策,例如:统一进行信息资源规划、理顺组织内的数据流等。但是这些方法往往意味着需要对现有各个遗留系统进行重构,甚至重新设计和开发,成本巨大,见效缓慢。通过构建集成化的综合业务处理平台实现不同应用系统的集成则是一种更为人们所接受的解决“信息孤岛”问题的方法。这里,平台是可以适应于不同系统之间信息共享的通用工具,它通过企业应用集成技术将一个单位的业务流程、公共数据、应用软件、硬件和各种标准联合起来,在不同应用系统之间实现无缝集成。这种方案可以最大程度地保留已有系统的投资,同时可达到不同系统之间的信息共享和业务协同的目标。

在构建集成化的综合业务处理平台过程中,以服务的视角建模发生在松耦合的异构系统之间的数据交换和业务交互过程,可以很好地满足企业应用集成对灵活性和可重用性的要求,是一种主流的技术方法。这里,服务泛指自治、开放、自描述、并与实现无关的网络构件[1]。各系统存在的数据抽取、数据发布、粗粒度的业务构件等都可以被抽象为一个个的服务,而所谓的应用集成便是这些服务的发布、查找以及服务与服务之间的绑定和调用。在这其中,面临的主要困难是参与集成的各个系统的异构性。然而,幸运的是,近年来以企业应用集成为主要应用领域的面向服务架构(Service-Oriented Architecture,SOA)的实现正逐步过渡到建立在IT标准的基础之上[2],如使用SCA组装构件,使用BEPL编排服务,使用WSDL描述服务。这些标准和协议的形成代表着基于SOA实施的应用集成与厂商平台无关,从而为实现分布、异构的独立系统之间的互联提供了可能。

对于如何构建基于服务技术的综合业务处理平台,国内外已有较多的研究。例如,文献[3]提出了一个“代理+服务器”松散耦合模式的数据交换平台(DEP),该平台利用数据传输服务和消息服务分别实现交换数据的传输和数据交换过程中的流程控制;文献[4]提出了一种基于企业服务总线技术的电子政务数据共享与交换平台的体系结构;论文[5]给出了一个以企业服务总线为中心的面向服务软件体系架构的参考模型,并基于Petri网和时序逻辑从形式上对原型系统进行了需求规范描述及功能正确性验证等。

本文通过采用一个专用于异构系统集成的轻量级企业服务总线,构建横跨多个应用系统的综合业务处理平台,以支持集成化信息服务和多业务协同。该平台的核心是通过企业服务总线(Enterprise Service Bus,ESB)技术完成业务交互和数据交换两类应用的综合集成。企业服务总线是基于面向服务架构的基础设施。第三方的程序组件能够以标准的方式“插入”到企业服务总线上运行,参与应用集成的各方并不直接交互(请求者无须了解服务提供者的物理实现),而由总线负责将请求交付给功能提供者和QoS的服务提供者。服务请求者和服务提供者的应用程序逻辑可以使用各种编程模型和技术调用或交付服务,而无需考虑是直接连接还是通过企业服务总线传递的[6]。

1 基于企业服务总线的综合业务处理平台的总体结构

综合业务处理平台的中心是企业服务总线。该企业服务总线提供了Web服务适配器和JMS(Java Message Service)适配器,以实现Web服务接口和消息接口,也可根据需要进一步扩充实现JCA或者EJB接口。消息中间件和各种服务组件则通过Web服务适配器和JMS适配器分别绑定到企业服务总线。平台的总体结构如图1所示。

该综合业务处理平台主要具备如下特点。

⑴ 采用规则引擎技术实现基于ESB的跨系统复杂业务逻辑的可维护性

规则引擎是指用以管理和自动实现业务规则的软件系统,其主要功能包括:存储、分类和管理规则,验证规则的一致性,通过规则推断其他规则、联系规则和执行这些规则。变化的商业规则和业务流程经常会引起对应用程序的频繁修改,传统模式下开发的应用程序往往面临全面和代价高昂的修改。规则引擎提供了一个将业务处理和业务规则处理分离、共用和统一管理维护业务规则的系统开发框架。

在平台提供的业务流程集成模型中,抽象业务流程逻辑的描述与业务流程功能的实现分离开来,从而克服了传统ESB技术在实现复杂、动态业务流程集成方面的不足。业务流程的各个节点由规则引擎实现,通过规则引擎即可实现企业级跨系统复杂多变的业务规则,从而为更灵活、更经济、更高效地管理综合型业务流程提供了技术支持。

⑵ 采用工作流技术实现基于平台的服务可编排性

为达到通过服务进行组装和编排以满足业务和流程的变化的目的,平台整合了一个工作流引擎以实现基于框架的服务编排,从而将业务流程逻辑从具体的程序执行代码中分离出来。工作流引擎包括流程定义、流程引擎和流程管理三个部分。其中,流程定义模块用以定义流程,采用BPEL描述;流程引擎模块负责已定义好的业务流程执行;流程管理模块负责监控和管理所有的流程。

⑶ 通过集成符合UDDI规范的服务注册库实现ESB服务的集成化管理

该平台在传统的企业服务总线中引入了符合UDDI规范的服务注册库。UDDI是一个分布式的互联网服务注册机制,它集描述(Universal Description)、检索(Discovery)和集成(Integration)为一体,其核心是注册机制。在平台中,服务注册库以一种结构化的方式来保存有关服务的元信息。这些数据使用标准的分类法进行分类,因此可以按类别来查询信息。在实际运行过程中,框架上运行的所有服务信息被注册到UDDI。通过 UDDI服务注册库,平台可以发现合适的Web服务信息,然后调用这些服务。

2 基于Mule ESB的原型实现和应用

企业服务总线作为平台的核心,通过提供一种标准的软件底层架构支持服务的运行,并以标准的消息格式统一服务之间的交互方式,从而为系统集成提供了更好的扩展性和灵活性。但是,市场上流行的主流企业服务总线产品(如:IBM Service Integration Bus、BEA Aqualogic,等)普遍价格昂贵,而且由于通用性太强使得应用过程中定制的工作量较大。

本文选用Mule ESB(http://www.mulesoft.org)的社区版作为综合业务处理平台的核心部件。Mule ESB是MuleSoft公司的服务总线产品,提供了服务创建和部署、服务中介、消息路由和数据交换等功能。通过Mue ESB,服务提供者将业务功能封装为服务,并以接口的形式向外提供,消费者即可通过服务总线访问该接口,进而调用提供者提供的服务,实现与位置无关的服务调用。另外,平台选用开源软件Apache Drools作为规则引擎,开源软件JBoss jBPM作为流程引擎,开源软件Apache jUDDI作为UDDI引擎。

上述基于Mule ESB的综合业务处理平台已成功应用于一个电子商务结算系统的实验中。该系统需要实现与客户管理系统、订单系统和发货系统等的应用交互。下面以确定折扣的业务为例说明平台中基于Mule ESB和Apache Drools的交互实现过程。该业务相关的规则可简述为:根据客户的类型(会员类型或者普通类型)和一次购买金额确定相应的折扣信息,具体包含以下四种规则:

⑴ 会员客户,且一次购物金额小于1000,九五折优惠;

⑵ 会员客户,且一次购物金额大于1000,九折优惠;

⑶ 普通客户,且一次购物金额小于1000,无打折优惠;

⑷ 普通客户,且一次购物金额大于1000,九五折优惠。

为实现上述规则,需要创建配置文件mule-config.xml。同时,创建规则文件rules.drl,实现四种规则。表1对应第1条规则的配置实现,即客户类型为会员,并且购物金额在1000元以内;相应地,可分别定义另外三种规则的配置实现。

3 结束语

以服务的视角对发生在松耦合的异构系统之间的数据交换和业务交互过程进行建模,可以在很大程度上满足企业应用集成对灵活性和可重用性的要求。企业服务总线技术是构建基于服务的综合业务处理平台的关键技术,而借助Mule ESB等优秀开源软件可大大减低总体建设成本。本文基于企业服务总线技术提出了一个支持跨系统数据交换和业务交互的综合业务处理平台的设计方案。该平台基于Mule ESB、Apache Drools等开源软件实现,其中Mule ESB用于构建企业服务总线,Apache Drools用于构建规则引擎。初步实验结果验证了该平台的有效性。未来将在实验的基础上,构建面向最终用户的综合业务处理产品,以屏蔽对集成各个组成部件的复杂配置要求,最终达到在一定场合中可部分替代商业产品的目标。

参考文献:

[1] 喻坚,韩燕波.面向服务的计算—原理和应用[M].清华大学出版,2006.

[2] Papazoglou MP, van den Heuvel WJ. Service oriented architec-tures: Approaches, technologies and research issues[J]. The VLDB Journal,2007.16(3):389-415

[3] 梅立军,付小龙,刘启新等.基于SOA的数据交换平台研究与实现[J].计算机工程与设计,2006.27(19):3601-3627

[4] 李晓东,杨扬,郭文彩.基于企业服务总线的数据共享与交换平台[J].计算机工程,2006.32(21):217-223

[5] 张广胜,蒋昌俊,汤宪飞等.面向服务的企业应用集成系统描述与验证[J].软件学报,2007.18(12):3015-3033

[6] Schmidt Marc-Thomas, Hutchison Beth, Lambros Peter, etc. The enterprise service bus: Making service-oriented architecture real[J].IBM Systems Journal,2005.44(4):781-797