-
基于企业服务总线的医药电子商务平台
基于企业服务总线的医药电子商务平台
摘要:从分析医药行业电子商务实现技术的局限性出发,提出了基于企业服务总线来构建医药电子商务平台的思想;给出了基于企业服务总线的医药电子商务平台体系结构;介绍了搭建医药电子商务平台所采用的关键技术;以一个订单子系统为例详细说明了其设计和实现过程。
关键词:企业服务总线;面向服务体系架构;医药电子商务;体系结构
中图分类号:TP311.52 文献标识码:A
医药电子商务是以医疗机构、医药公司、银行.药品生产单位、医药信息般务提供商以及保险公司为网络成员,通过rn cemeI网络应用平台为用户提供安全、可靠、开放并易于维护的医药贸易电于商务平台。医药电子商务增强了药品采购的透明度,减少了购销环节,从而降低了药品销售成本。但目前,医药电子商务解决方案五花八门,信息存储格式电多种多样,对外的商务系统与内部的管理系统新旧系统并存互不联系,同种信息重复存在,相互信息独立,各分支机构和各部门同的信息沟通和数据共享问题没有得到很好的解凑,这种局面使得医药电子商务的成本优势和效率优势正在一步步地散失,影响了医药电子商务的进一步发展。
为了解决这些问题,本文提出基于企业服务总线(Emer—se se而ce Bus,EsB)的医药电子商务平台解决方案,运用企业服务总线(EsB)技术.将整台思想引人系统设计中,这样不仅可以降低各服务构件问的耦舍,还可以消除在应用过程中异构构件之间的技术差异,让不同的应用服务协调运作,实现不同服务之间的信息沟通和数据共享,从而保持医药电子商务的成本优势和效率优势。
l EsB技术
EsB的概念是从面向服务体系架构(sOA)发展而来的。面向服务体系结构(sOA)[1]描述了一种IT基础设施的应用集成模型。它将应用程序的不同功能组件(服务)、通过这些服务之间定义良好的接口联系起来。在sOA中.服务是封装成用于业务流程中的可重用组件的应用程序单元,提供了信息或业务数据从一个有效、一致的状态向另一个状态的转换。s0A的架构实现和解决了服务模块间调用的互操作问题,为了更好的服务于企业应用,引入了企业服务总线的应用架构。一个ESB是一个预先组装的sOA实现,它包含了实现s0A分层目标所必需的基础功能部件,EsB合并通信、web%州ceB、xML、数据传输,管理相关连接并协调应用交互[2]。EsB提供了事件驱动和文档导向的处理模式,以及分布式的运行管理机制,它支持基于内容的路由和过滤,具备复杂数据的传输能力,并可以提供一系列的标准接口。
作为一种消息代理架构企业服务总线提供消息队列系统,使用诸如soAP或JMs(JavaMess89e seIvice)等标准技术来实现。企业服务总线在不同的业务的应用之间提供了公共、基于标准的应用连接和处理平横。主要实现以下功能:
1)在总线范畴内对服务的注册命名及寻址管理功能。
a)面向服务的中介功能。
b)提供位置透明性的服务路由和定位服务。
c)多种消息传递型式(请求/响应,单路请求,发布/订阅等等)。
d)支持广泛使用的传输协议(HTllP,JMs,MQ等等)。
2)支持多种服务集成方式,比如JcA、web服务、Mess89l“go
3)对服务管理的支持,如服务调用的记录、测量和监控数据的提供。
EsB所提供的基于标准的连接服务,将应用中实现的功能或者数据资源转化为服务请求者能以标准的方式来访问的服务;当请求者来请求一个服务时,EsB中这种中介转化过程可能简单到什么也没有,也可能要很复杂的中介服务支持,包括动态地查找、选择一个服务,消息的传递、路由和转换、协议的转换。这种中介过程,是EsB借助于服务注册管理以及问题域相关的知识(如业务方面的一些规则等)自动进行的,不需要服务请求者和提供者介人,从而实现了察耦服务请求者和提供者的技术基础,使得服务请求者不需要关心服务提供者的位置和具体宴现技术,双方在保持接口不变的情况下,各自可以独立地演变。图1简单说明了EsB中如何来实现服务之间的相互协作关系。
基于ESB提供的应用系统的连通性.企业就可以实现更高层次、更丰富的应用功能,将现有系统和未来建设的系统无缝的集成在一起,如企业门户,业务管理系统、数据仓库,及跨企业边界的B2B应用。
2基于EsB的医药电子商务体系结构
基于EsB的医药电子商务体系结构如图2所示。
1)数据服务层:这一层主要包括提供服务的各个应用系
统数据源。
该层通过一个WDSL[3]接口实现广泛的数据存储访问。wDsL是一种描述网络web服务的xML标准格式。描述的内容包括:服务名称、服务地点、如何与服务通信。在wDsL接口与实体数据库问采用xMLsQL引擎作为数据服务代理,xML—SQL是基于一种强大而又方便的xML数据处理语言xqu8ry设计的。xQuery是~种xM L查询语言,由w3 c定义及标准化。xqIl8ry”1是以xQLle珂1.O以及xP柚2.0数据模型的形式定义的,并将xML文档的分析结构描述为有序的,做上标记的树.树上的每一个节点都有一个不同的身份并可能具有简单的或者复杂的类型。xMLsQL引擎一方面可以用现有的数据生成xML文档供应用系统使用.另一方面可以把xML的请求转换成sQL命令来操纵数据库。这样即可以保证现在的遗留系统数据可以继续使用又可以提供一个基于开放的、标准的存取数据的方法。
医药企业采用的信息系统多种多样,其系统数据除了传统的关系型数据外,还会有文件型数据,或者实时产生的数据流。众多分散的数据无论是数据源存储位置,还是数据访问方式都是复杂多样的。另外分散的数据形成了数据孤岛,导致上层应用产生矛盾的业务处理结果。数据服务层通过数据集成消除了数据孤岛,实现了分布数据源的统一管理,无论底层数据源有多复杂,通过将数据访问变为weh服务,所有上层应用都可以使用统一的方式进行数据访问。通过统一的数据访问,解决了医药信息访问不标准、不规范的问题,而且通过weh服务的方式提高了信息的共享性。此外数据服务层还可以实现不同地域范围的医药信息的交换需要,通过数据交换服务,数据信息可以被及时地传送到其他系统或应用当中,这样就有效地提高了医药信息的使用范围。
2)应用服务层:这一层主要包括提供服务的各个应用系统。
应用服务层利用数据服务层提供的统一数据服务接口能访问到完整的集成数据。在应用服务层中运行着诸多单一功能的应用业务,不但包括以前医药商务应用,如:医药进销存、客户关系、银行结算、医药信息咨淘、医药商务洽谈、会员服务、医药产品认证、仓储管理、医药配送、辅助培训等,还包括未来医药商务中新的业务系统,如:药品营销决策、医药行业IcP服务商的专业信息资源整台、医药信息数据挖掘、医药市场预测等。为了给用户提供更多有价值的服务,这些应用必须能相互配合、交换信息和应用服务[5]。然而,这些应用不可能是使用单一技术实现的,而且也不可能始终运行在一种平台上。如:原来的进销存系统采用的是c/s结构,用MssQL作为数据库,开发语言用的是powcr Builder,而对外的电子商务应用部分采用的是B/s结构,用MsSQL作为数据库,开发语言用的是Java。
由于开发语言或运行系统的限制.这些应用无法直接跨越所有平台实现应用集成访问,因此在应用服务层中提供了对各种异构构件的适配器。适配器通过接口发送和接收消息实现与被连接构件之间的交互,消息可以分为同步消息和异步消息两种,其内容包括数据消息和控制消息。对于适配器而言,接口是用于连接构件的“连接点”,它通过一组角色规定参与交互的构件所承担责任,并可咀连接角色匹配的构件。在适配器模型中,适配器行为约束包括转换规则和附加服务.其中转换规则用于解决构件交互中的失配问题,包括数据转换和命名冲突处理,前者用于处理数据失配,而后者则处理接口失配;除转换规则外,连接件还可以实现连接中所需要的额外服务,如安全、事务、通信等,称为附加服务。此外,连接约束还包括参与约束,即在一个连接实例中可连接构件的数目,它可以通过角色数目来描述。这些适配器通过wDsL接口连接在企业服务总线上。
3)企业服务总线层:各个服务通过总线层来互相访问。
通过企业服务总线层管理众多位于应用服务层中运行的web服务,将Web应用服务的标准访问接口注册到企业服务总线层中,这样众多以web服务形式存在的医药应用信息资产可以得到集中、有效的管理。此外,利用综合服务层提供的灵活的服务编制功能,将多个单一的应用服务组装为统一的复合业务,以便在更高的应用层面实现医药商务的业务需要,编制的目标是使得web服务能够消除各系统的差异,以便具有所有权的应用程序可以通过企业服务总线来互相交流,编制通过智能路由来实现,当存在复杂处理时,编制被添加在企业服务总线中,企业服务总线提供多种的开放标准的执行,在传输层通过支持基于开放的标准如HTrP解决了整合问题”o,在连接层,企业服务总线基于web s唧jces技术,支持xML,xsIJ,soAP,wsDL,uDDI等标准[7]。
对于医药电子商务中非常灵活的业务.还可以利用企业服务总线快速地通过配置界面,管理并组织各种服务和资源.将服务和资源组织成用户需要的逻辑过程。利用企业服务总线,实现医药电子商务的复合应用业务就不需要进行开发,就能快速配置出相关应用服务的交互过程,并在异构平台中快速地重用和部署服务。
4)门户层:提供外部的应用访问。
门户服务层将底层提供的复合业务服务、单一应用服务和整合数据服务通过统一的门户显示到最终用户前。门户服务层总体上是一个医药企业信息和应用的聚集点,提供统一的、通用的和具有广泛价值的医药信息(数据)与医药商务应用访问途径,也提供人与人之问、人与医药商务应用资源之间的沟通交流渠道,门户服务层的价值在于它能够使医药企业释放内部的各种医药信息和商务服务.使医药企业员工、客户和台作伙伴能够利用单一的渠道访问其所需的个性化的医药商务应用和医药信息资源,将与医药企业相关的人员、医药数据和医药商务应用有机地结台在一起。门户服务层提供了界面友好的多通道的接口,如:web页服务、适合移动电话和掌上电脑应用的服务等。
由于门户包括的医药商务应用和信息访问都是通过web服务方式实现的.所以可以根据不同的用户需要、根据不同时期的医药商务应用实现重点,非常方便、快捷地推出基于不同侧重点的医药信息门户。而且通过医药信息门户提供的移动订阅服务、个性化服务、多媒体服务等不同信息推送技术和手段,还可以保证将医药信息及时、准确地传递给广大用户。
3 医药电子商务系统设计实例
基于EsB的医药电子商务平台,是~个完全的面向企业级的中间件解决方案,可以架构在现有的医药行业的网络框架,软硬件系统之上,可以构筑出一个企业级的医药商务系统解决方案。所有信息都可以通过企业服务总线发送或接受任务、指令,它适用于所有现在的或未来的医药商务应用平台。限于篇幅,以药品交易过程中的一个简单订单处理为例对医药电子商务系统设计进行说明。药品订单处理过程如图3所示。
药品订单处理过程是客户通过交易系统提交药品订单,系统接收到外部客户的药品订单请求后,首先到进销存系统中检查当前库存药品能否满足订单的要求,如果能满足则进行订货安排,最后向用户发出订单确认。
订单请求服务和订单确认服务分别是在企业内部和企业外部实现的。在企业环境中出于安全性的考虑,对企业内部应用访问Intem眦时有所限制的,更不可能直接通过Infemet访问到企业内部的应用。所以从实际的企业应用背景上考虑,是不能直接访问订单请求服务和订单确认服务的,必须要有一个中间的机制来保证两个web服务的互访问。通过企业服务总线提供的web服务网关是用来实现企业内外部w曲服务集成的安全有效的方式。
3.1实现内部和外部服务
订单请求服务开发完成后,仅仅通过配置web服务网关即可完成服务的对外公布。web服务网关需要两个wsDL文件来描述订单请求web服务:内部的wsDL是对实际订单web服务的描述,外部wsDL是由web服务网关导出的;在企业外部使用外部wsDL访问服务,web服务网关会将之转换成对内部服务的访问。在本应用平台中内外部wsDL是有不同的绑定的,内部wsDL采用的EJB绑定,对外则采用soAP/m肿绑定,web服务网管完成不同绑定协议之间的转换。下面就是内部服务wsDL中绑定部分的定义:
对外部服务,采用Java Bean方式实现的web se而ce。外部服务wsDL接口定义的方法和内部服务是不一样的,外部服务 wsDL 定义的服务方法是:鸯虬0rderF0m蹦ceutservice,内部服务wsDL定义的方法是:异etOrderFoⅡIPdceo
3.2实现对消息的路由
引人外部订单确认web服务需要考虑将订单确认路由到正确的web服务上的问题。这就需要服务路由中介,服务路由中介为web服务网关的JAx—RPc Hdler。在中介里会依据路由表和请求的内容确定目标服务的端点地址。具体来说,以客户标识和客户web服务的端点地址作为路由表的内容,在JAx—RPc Handler盯从soAP消息中解析出客户的标识,因此为依据查找目标web服务端点地址,然后将服务端点修改为目标服务的端点地址。
3,3实现消息的转换
由于进销存系统是原有的旧系统,是基于c/s架构用PB设计的,通过适配后,可以提供web服务,但由于原有系统结构没有改变,不能直接从外部系统中获得订单消息,但原系统提供了基于MQ的消息传输接口,而且格式已经固定。这样就需要进行消息格式转换。消息格式转换功能是企业服务总线的重要特性之一,可以利用企业服务总线消息格式转换功能把w曲服务请求转换为对进存销系统的特定格式的MQ消息,对上层的服务请求者提供web服务接口。首先需要定义源和目标消息的格式,源消息是标准的SAP消息并且有wsDL的服务接口定义,目标MQ消息是纯文本的文件,这里使用A慨ngese£来定义目标MQ消息的格式。消息格式定义完毕后,需要利用消息流来完成格式的转换,在消息流中首先读取MQ对列中的SoAP请求,然后再计算节点中进行消息格式的转换,计算节点利用EsQL遍历源sOAP消息并把它映射到目标消息的特定字段,然后将转换后的消息输出到目标MQ对列上。
3.4整合内部、外部服务
通过新建一个出站服务来它们整合在一起,需要给出站服务提供一个完整wsDL定义,来表示可以通过出站服务的数据类型,它需要涵盖内部和外部所有数据类型的定义,在这个wsDL中定义了三个可以使用的端口:0rderFo册I小,Order酬nfo—目b和O”derFOHTlInf0_sIB,也就是有三个服务提供者可以选择,分别对应}rrrP,w啊b和sib类型的绑定。同时,在新建出站服务的时候,可以同时把服务选择消息中介绑定到出站服务目标上,而消息转换的消息中介则需要在完成新建出站服务后手工绑定到外部服务所对应的端口目标上。
3 .5把服务发布到企业外部
最后一步,把企业内部的服务发布出去,让外部的客户能够访问到服务。可以通过新建一个人站服务来把内部的服务
当数据库字段名发生变化时,我们只需修改自定义数据集中的这段代码c叩st stdng TR—NAME=”jsxm”;把jsm改成修改屠的字段名即可,同样如果添加一个字段只要在定制Daraset中再定义一个字段常量,然后在BuildDataTabks()中把新添加的字段加到表结构中。
第二,自定义数据集实现了序列化接口,因而支持远程调用该实体对象,便于分布式系统之间的数据交换。
第三,自定义Data鼬中的字段可以是和数据库中的某个表字段一一对应,也可以是对数据库中的多个表中的字段的抽象重新组合.甚至一个数据集中可以包涵多个数据库表对象。因此我们可以根据具体的业务对象来定义数据集,从而更有利于我们从面向对象的角度来实现我们的系统。
3.3基于xML技术动态配置用户功能界面
笔者所参与开发的教务管理系统涉及到多种角色的用户,不同用户所具有的权限也是不同的,也就是说不同角色的用户登录教务管理系统后应该能看到不同的功能界面。例如,教学秘书登录到系统后应能做修订教学计划、开课计划,给瀑程指派教师等功能,而教务处管理人员登录到系统后应能做查询已提交的教学计划、审核教学计划,对全校的教学计划和开课情况进行统计分析等功能。xML是W3c组织提出的国际标准.是一套定义语义标记的规则。DOM可以以分层次对象模型来访问存储在xML文档中的信息,可以将在xML文档中的信息转变成一组树的节点。分布式教务管理系统所有的功能菜单均采用了树状结构的菜单,利用xML配置文件根据不同的用户权限来动态配置该菜单,使得不同权限的用户仅能获得与自己权限相符的功能,不同角色的xML配置文件由系统管理员为用户创建账号时配置生成,管理员利用账号生成系统为用户添加相应功能,系统根据分配的功能自动生成相应的xML配置文件。下面是一个教学秘书用户的xML权限功能配置文件的部分: