曹渝昆
(上海电力学院计算机科学与技术学院,上海 200090)
电力营销管理信息系统是供电企业的关键业务系统,是提高电力企业经济效益的关键环节,具有基础性和先导性的重要作用.为了适应电力体制改革的不断深入和电力市场不断发展的需要,不断提高营销管理与客户服务水平,各个省的电力公司先后建成了营销管理信息系统、95598客户服务系统、缴费系统和负荷管理系统等多个营销应用系统,为各省营销工作提供了重要的技术支持.
但随着营销业务的发展和IT技术的进步,这些系统在管理理念、整体集成、技术体系、系统功能、可扩展性、可维护性、可靠性等各方面都越来越难以满足需求,在一定程度上阻碍了营销管理水平向更高层次提高.因此,在现有的基础上对营销技术支撑系统进行全面改造、升级,推出高度集成的营销管理业务应用系统已势在必行.本文提出了一种新型的遵循面向服务架构(Service Oriented Architecture,SOA)的分布式企业服务总线模型,采用分布式服务总线的模式,实现了与现有营销相关的业务系统的大集成,极大地提升了电力企业对营销工作的管理力度.
SOA是一种业务驱动的IT架构方式,支持对业务进行整合,并使其成为一种相互联系、可重用的业务任务或者服务.通过在不同的应用和信息资源之间建立联系,SOA能够帮助客户提高业务流程的灵活性,稳固企业底层的IT基础架构,并重用现有的IT投资[1].因此,选择SOA架构作为现有营销业务系统集成平台的架构,不仅能够最大限度地保护已有的业务系统,还能够对现有的营销业务系统进行优化和集成,为今后营销系统的进一步发展预留出足够的空间.
企业要做出有效的决策,应推动创新,提高灵活性,并对日新月异的市场压力做出迅速反应.如果为了当前的紧急需求,采用缺乏远见的方式,机械地对IT系统进行整合,将会导致变革的过程困难重重,且耗时巨大、费用惊人.相反,SOA能够将IT分解为便于组装、配置及重用的构建模块,即服务.这些服务构建在开放的标准基础之上,能够很容易地与其他IT系统整合,而不用担心与个别供应商专用系统的互联互通问题,同时还能够促进重用.因此,企业能够在启用服务的形式下,使用已经拥有的资源添加新的构建模块(或服务),或者与其他模块(或服务)结合起来成为新的应用,而无需对现有的、可靠的应用和系统进行调整[2,3].SOA 具体的参考架构如图1所示.
图1 SOA参考架构
服务基础架构提供了一个管理、监测并协调所有服务请求的环境,分为访问服务层、数据服务层、业务服务层、业务流程层、展现服务层.
服务基础架构的前端为企业服务总线(ESB),任何服务调用者提出的请求都将通过ESB进行协调,才能调用服务基础架构中所包含的各层服务.ESB的作用类似于一个服务中介,其责任是协调和调度业务服务,其功能包括路由、转换、聚合、递增等.另外,ESB还负责审核、日志、监测和安全等公用服务与其他类型服务和应用之间的沟通[4,5].
ESB是SOA架构的核心部件,通过ESB能够实现业务系统的分布式部署[6,7].图 2是一个基于SOA架构的分布式企业服务总线框架,它以各个企业中的ESB为基础,以服务为接口来访问各种应用系统,包括共享服务、业务流程、非共享应用和相关数据等.在基于SOA的分布式ESB架构上可以挂接多种应用系统,从这些应用系统的内部看,它们仍然作为独立系统在运行,而从整体架构的逻辑构成考虑,它们是作为整体框架的服务和功能模块存在的.
图2 基于SOA的分布式企业服务总线架构
由于目标架构中的每一个应用系统都提供了服务接口,因此用户不需要专门的集成平台,就可以直接接入服务总线,并可以通过ESB直接访问应用系统中提供的所有服务.企业原有的应用系统所提供的共享服务可以通过服务注册进行发布,并在系统设计阶段检测是否有类似的服务存在,从而实现服务的重用.企业还可以将服务发布到全公司,使其为其他省市或全球的用户服务.企业新建的所有应用系统都可以作为目标架构中共享服务的一部分嵌入到整个EAI架构中.
目标架构中的每一个域都包含自己的服务仓库,用于存储所有服务的元数据,包括服务接口定义(WSDL)、请求规范、反馈消息、服务契约和服务要求等信息.另外,每一个域中的安全服务还提供了基于服务的访问和管理安全数据的方法,这些安全数据可能包括用户、组、角色和属性信息等细粒度的权限信息.安全数据可能分散在不同的域中,或者是汇总到统一的安全域中.大多数安全功能是由服务基础架构实现的(如J2EE容器),其他安全服务则遵从服务提供者/消费者模式,如在消息层的加密、解密和审计功能等都可以封装为安全服务.
作为SOA基础架构的关键部分,ESB的功能主要体现在通信、服务交互、应用集成、服务质量、安全性,以及管理和监控等方面[5].在本文提出的分布式企业服务总线设计中应该实现的功能包括:服务接入;服务路由;访问控制;服务适配器;日志;错误处理;配置;同步.
服务接入框架负责服务调用者的接入,接收服务调用者的请求,并且调用其他模块的功能来完成服务路由、用户鉴权、服务调用等功能.比如:为一个Web Services和一个Message Driven Bean分别提供对Web Services和JMS方式的接入.
服务请求数据进入服务接入框架后,会被转换成服务总线的标准Java消息对象.服务总线的处理逻辑都是针对总线标准的Java消息对象,而不会针对特定协议的消息对象,比如JMS,Web Services等,这样就可以把总线的处理逻辑和接入协议松耦合.如果除了Web Services和JMS,还要支持新的接入协议,比如RMI,只需添加RMI对象并将其转换到服务总线的标准Java消息对象的逻辑即可,其余的逻辑都不需要改变.
服务路由模块负责查找服务的路由信息,并计算调用服务需要经过总线的最短路径.服务路由模块中有路由信息查询功能,该功能可以查询服务目录得到服务的路由信息,支持Web Services和数据库两种查询接口,可根据实际情况选择一种,这两种查询方式通过修改配置文件进行切换.
取得路由信息后,如果该服务是注册在其他总线上的,这时就需要计算路由的最短路径,而服务总线自身会提供一个计算最短路径的服务,(此服务包括所有总线的层次结构和关联关系,并可以根据图论算法计算从某个总线到另一个总线所要经过的最短路径.)这个服务可以部署在服务总线上,也可以独立部署.路由信息和最短路径会被储存在内存缓存中,下次调用时无需再计算.内存缓存采用LRU算法,同时有超时机制,超时后需要重新查询路由信息和计算最短路径,可以通过修改配置文件启用和禁止内存缓存,以及更改超时时间和缓存大小等参数.
访问控制模块包含了判断用户能否访问服务的逻辑.控制平台会给每个需要调用服务总线的系统颁发证书,这些系统必须用颁发的证书为服务调用人员签名,并将签名置于请求参数的头信息上传入服务总线.这时服务总线会验证请求数据中的签名,以判断用户是否为合法用户.
权限判断功能决定了用户是否有权限访问所调用的服务,权限信息存放在平台管理模块的数据库中.该功能可以通过Web Services接口访问平台管理中安全控制模块,传入用户标识和服务标识,而安全控制模块则返回用户是否能访问服务、或者直接访问平台管理数据库查询权限的信息.
服务适配器负责调用服务,其中Web Services适配器调用Web Services服务,JMS适配器调用JMS服务.
日志模块负责记录服务调用的输入输出参数、服务调用的状态、服务调用的异常信息等,这些数据存在数据库中.管理员可以配置日志级别,具体的日志级别如表1所示.
表1 日志级别
错误处理模块负责对服务调用过程中的异常情况进行处理.当服务内部自身发生异常时,服务总线不负责处理,而服务必须将错误代码和错误原因返回给服务总线.如果服务调用者在调用服务总线之前或调用完成后发生异常,服务总线也不负责处理,而是由服务调用者自行处理.
服务总线仅仅对以下过程中发生的异常进行处理:请求数据进入服务总线之后,服务总线对请求数据作处理,然后调用服务,并将接收服务执行结果返回给服务调用者(异步调用不需要执行结果,则不需要返回结果).
配置模块用于读取服务总线的配制信息.
当服务目录中的服务信息被修改后,服务目录会通知服务总线的同步模块来刷新缓存中的数据.它支持两种缓存数据失效方式:
(1)完全失效 当收到完全失效的通知时,同步模块将缓存内的数据全部置为失效,缓存数据将在后续的调用中重新装载;
(2)部分失效 部分失效通知包含被修改服务的惟一标识,同步模块根据该惟一标识,有选择地将相关数据置为无效.
为了满足大型企业业务系统的分布式部署的需要,要求根据IT基础架构现状来设计分层次的企业总线架构.在企业服务总线的设计中,可以根据业务系统的分布层次来确定所需的企业总线层次.将前文中提出的分布式企业服务总线框架应用在某大型电力企业的营销系统设计中,充分利用了现有的IT资源,有效保护了原有投资.
该营销系统是一个基于分布式企业服务总线的大型营销系统,其设计理念是在应用分布式企业服务总线的基础上,严格遵循包括两层不同级别总线架构形式——省电力公司和各个地市级电力公司的SOA架构.其中,在省电力公司设置了营销管理数据中心,各个分公司通过分布式企业服务总线将营销系统中的数据汇总到省电力公司,以实现营销数据的统一管理和高度集中.在省电力公司还设置了辅助决策分析模块,营销管理业务系统可以通过本地的企业服务总线ESB来调用辅助决策分析模块中的各种数据挖掘和分析工具,并对营销管理数据仓库中的数据进行深层次挖掘,从而为高层管理人员的营销决策提供数据支持.图3是基于分布式企业服务总线的某电力公司营销系统总体框架.
图3 基于分布式企业服务总线的大型电力企业营销系统架构
本架构中包括分布式企业服务总线、基础公共服务平台、基于SOA架构的应用集成平台3个主要部分.营销业务管理系统等其他系统首先与基于SOA架构的应用集成平台进行集成,将功能封装为服务后,通过分布式企业服务总线向外部提供服务.
在基于SOA的架构中,各个地市公司原来开发的与营销业务管理系统相关的系统(如95585客户服务系统、负荷管理系统、银行实施缴费系统、营销数据仓库系统等),在经过SOA改造后都可以继续使用.在对这些系统进行SOA改造的过程中,将它们与营销业务管理系统相关的功能尽可能封装为服务,纳入基础公共服务平台中,然后通过应用分布式企业服务总线与营销业务管理系统实现互连互通.
此架构的最大优势在于:各个地市公司以前开发的系统绝大多数都可以保留下来,而且界面与功能都不会发生变化;现有系统在为营销业务管理系统提供服务的同时,仍然可作为独立系统运行;在企业今后的信息化建设过程中新建的营销业务管理系统的新业务功能,或者是新建的业务应用系统,只要遵循分布式企业服务总线的服务接口定义,就可以直接与营销业务管理系统进行信息互通,从而为新功能和新系统的集成提供了相应的技术保障.这样既可以实现营销业务管理系统的统一和营销数据的高度集中,又可以使各个下属公司的营销业务管理系统保留一定的灵活性和可扩展性,从而保护了原有投资,又降低了实施的风险和成本.
此架构严格遵循SOA的设计理念,以分布式企业服务总线为桥梁,以服务为接口,实现了不同级别的营销系统之间的松耦合集成.除营销系统外,在该架构中还可以集成多种应用系统,包括与营销系统相关的营销辅助决策分析模块,以及其他业务系统和企业门户系统等.
本文提出的基于SOA架构的分布式企业服务总线非常适用于大型企业的分布式业务系统.由于企业服务总线可以分布在企业的下属子公司中,而下属子公司内部的独立业务系统可以通过企业服务总线接入到统一的业务集成平台当中,以实现各个不同业务系统的互连互通.同时,通过基于SOA架构的分布式企业服务总线还可以有效利用企业内部现有的IT资源,充分保护已有投资,具有较高的实用价值.本架构已经应用于某电力公司的营销系统中,并取得了很好的效果.
[1]费圣英.电力企业信息化SOA实践[M].南京:南京大学出版社,2007:28-31.
[2]邵欢庆,康建初.企业服务总线的研究与应用[J].计算机工程,2007(2):220-222.
[3]DIETRICH A J,KIRN S.A service oriented architecture for mass customization-a shoe industry case study[J].IEEE Transactions on Engineering Management,2008,54(1):190-204.
[4]黄安安,王丽芳.基于ESB的企业应用集成研究[J].微计算机应用,2007(9):168-172.
[5]麻志毅,陈泓婕.一种面向服务的体系结构参考模型[J].计算机学报,2006(7):45-49.
[6]饶元.面向服务体系结构的企业资源计划系统应用模型与集成策略[J].计算机集成制造系统,2009(10):56-60.
[7]GUDEDES D, MEIRA W.Anteater:a service-oriented architecture for high performance data mining[J].Internet Computing,IEEE,2009,10(4):36-43.