URP中基于POX 的业务系统集成模型的设计与实现
2012-06-09孔浩,姜娜
孔 浩,姜 娜
(昭通师范高等专科学校,云南 昭通657000)
随着高校的职能和管理需求的不断增加,数字化校园已经成为所有高校中重要的建设重点,高校数字化建设和企业数字化管理类似,都拥有庞大而又复杂的业务需求,但是高校数字化最大的区别是高校拥有大量的职能部门,这些职能部门均是为高校的教师和学生进行管理和服务的,而且不同的职能部门又有不同的管理需求,这样就会导致在不同的业务系统中对几乎相同的业务对象进行管理,这也就是导致信息孤岛的主要原因。
URP(高校资源计划)为高校进行数字化建设提出了一种合理的指导方案,解决信息孤岛的核心是设计出一套符合高校自己需求的业务信息标准,新加入的业务系统必须按照该标准进行统一的建设,对于遗留系统需要开发相应的消息转换组件完成不同标准之间的消息转换。使用POX(简单原始XML)是进行分布式系统集成的良好的解决方案[1],因为XML不仅独立于平台而且容易被大多业务系统所理解。只要设计好高校业务系统中的业务模型就可以通过消息完成不同业务系统之间的集成。
1 URP的实现分析
URP提出了一套进行高校数字化建设的理论,并且提出了高校信息化建设的整体结构和框架,以此有效地指导各所高校根据该架构建设各自的数字化校园。不同的高校有着独自的管理需求,不同的管理需求需要不同的业务系统进行支撑。业务系统之间的集成问题也需要各所高校根据自己的业务情况进行设计和开发,所以实现URP并没有一种通用的解决方案,而是应该根据高校自己的管理需求进行分析和设计。
让不同的业务系统可以实现有机集成的前提是标准,一套符合高校自身管理需求的标准是系统集成的关键。在有了标准的前提下,以后高校内需要集成的系统均需要按照该标准进行统一的实现,如此就为业务系统之间的集成提供了基本的前提。标准制定之后如何实现不同业务系统之间的集成可以有大量的实现方案,目前XML已经成为多数业务系统所认识的标准,基本所有的主流程序设计语言都支持XML的解析和处理,所以通过传递基于XML的消息可以相对简单直接地实现不同的业务系统的集成[2]。
2 高校数据标准的定义
标准是解决系统集成的前提,但是标准并没有统一的实现方式,因为不同的高校有着不同的业务需求,所以标准的制定必须根据高校的不同情况进行分析设计[3]。虽然不同的高校在标准的实现上会有所不同,但是在设计和存储的方式上却有相应的共通点。
2.1 高校数据标准的设计
高校的所有业务系统的关注点基本都是统一的,教师和学生是高校所有业务系统中最为核心的2个管理对象。如图1所示,基础的核心实体就是学生、教师,其中学生实体和班级、专业实体有直接关联,教师实体和院系实体有直接关联,这些都是所有业务系统都会涉及的实体,这是标准化的核心,还有校内业务系统中的数据字典也需要根据不同的需求进行制定,对数据字典的标准化可以根据上级招生业务系统中的考生字典来确定大量和学生实体相关的信息,并且还可以根据上级人事系统中的教师员工字典确定教师实体相关的数据。
图1 高校数据标准的核心实体
2.2 高校数据标准的存储
标准制定完成之后,需要考虑存储问题,如果仅仅通过 Word、Excel等常规文件方式进行存储,在进行数据转换时处理起来将会增加工作量,合理的存储方式是持久化到关系型的数据库中,并且根据实际的开发需求在进行业务集成时为这些数据确定相应的表述方式,如图2所示,持久化的标准,在具体进行业务集成时可以选取多种通信方案,基于POX的表述是一种相对简单而且直接的方式,它是基于原始XML数据进行业务对象的传递[4]。
图2 高校数据标准的存储和通信方式
2.3 遗留系统进行标准化的方案
对于高校业务系统而言,在制定标准之前必定已经存在相应的业务系统,这些业务系统很可能没有按照标准进行设计,此时在已经确定通信方案的基础上,自行编写消息转换器完成对这部分系统的标准化操作,所有遗留系统在进行通信时首先通过消息转换器进行数据重组,之后才进行通信。目前几乎所有的主流开发语言都具备了天生的XML处理能力,所以选择POX的表述方式可以轻松地实现所有业务系统之间的消息转换[5]。
3 基于POX的通信方案实现
标准为业务系统的集成提供契约,但是仅仅拥有契约是无法实现不同业务系统之间的集成的,不同业务系统之间的通信必须根据契约选择一种合理的通信方式才能完成业务系统之间的集成[6]。目前流行的方式有很多种,其中基于POX的通信方式和基于SOAP消息的通信方式较为流行,但是由于WS-*的协议栈是一种重量级的协议,而且使用这种方式往往需要依赖于现成的中间件实现业务系统之间的通信总线,使用POX的方式可以更加可控地实现业务系统之间的通信。
3.1 POX的实现描述
POX是简单原始的XML的意思,简单来看就是数据之间的通信通过XML完成业务需求的转换,因为XML已经成为几乎所有业务系统都共同支持的标准化语言,所以它具备了最基本的平台独立性。它相比WS-*协议栈最大的优势在于,它省略了SOAP信封和一些其他封装,虽然POX不是什么尖端的技术,但是它可以形成一种基础模式,用来构建相对容易建造和部署的分布式应用。
确切地说,POX是和协议无关的,它不仅仅可以使用HTTP进行连接,还可以使用TCP、消息队列、SOAP完成等协议完成通信,规范的POX交互如图3所示:(1)创建远程服务端访问的接口;(2)客户端根据这个接口调用自己的协议分发器;(3)分发器根据客户端的请求将相应的值根据契约转换为XML,并且利用HTTP的POST请求提交到远程服务器端;(4)服务器端将获取的XML文档翻译成自己服务中的某个对象的一个本地方法完成调用;(5)服务器端的分发器将调用的结果通过XML传递回客户端,以此附加传递相应的响应代码,如果传递的是200表示正常完成调用,如果发现异常通过其他响应代码完成传递;(6)客户端的分发器从XML的响应中提取响应的值,并且将这值返回给调用对象,以此完成远程调用。
图3 POX完成客户端和服务端的交互过程
3.2 POX的具体实现
XML已经成为所有程序设计语言都通用的一种标准,并不需要特定的开发语言的支持,此处基于Java的方式进行实现,并且通过一个学生管理的奖惩模块来具体描述POX的整个流程,学生的奖惩管理是一个非常重要的模块,高校中的多数业务系统均需要获取学生的奖惩数据,以此判断该学生是否满足条件完成专升本报名等业务[7]。使用POX甚至不用使用Java的任何框架,仅仅通过Servlet就可以轻松地完成该模块的实现。
传输的消息体如图4所示:客户端和服务器端的通信都是通过简单的XML完成操作,GetStu-Cause标签标识获取一组学生奖惩情况的XML,其中causeCondition用于控制获取的条件,cause表示要获取的类型,award表示获取奖励的学生,year传递了获取2011年入学的学生,这个XML文档通过POST请求提交给服务端,服务端(此时的服务端就是学生管理系统的服务端,该系统一般是属于高校学生处所管理)将会根据该XML提取相应的条件信息,并且调用系统底层的Service的listStus(CauseCondition cc)方法完成调用,此时会得到一个学生的数组列表,之后将该列表转换为响应的XML文档[8],Students用来存储所有的学生列表,student节点用来存储某个具体的学生,此时仅仅只要获取学号和姓名即可,因为有了学号和姓名就可以在客户端的调用系统中进行相应的处理,响应成功之后会回传200的响应代码。
图4 服务端的主要实现代码
客户端的Java实现代码很简单,仅仅需要通过Apache下的Common项目中的HttpClient就可以轻松地提交这个请求。主要实现代码如图5所示,实现代码很简单,客户端可以将要转换的对象转换为XML的数据进行传递(该转换可以通过Jaxb轻松实现),传递时通过POST方法进行传递,之后服务器端通过Request获取XML的数据流,之后将数据流转换为可以处理的服务器端对象,并且调用底层的业务方法获取符合条件的对象,之后将对象转换为XML通过Response回写到客户端。
图5 客户端和服务端的主要实现代码
4 结语
URP为高校的数字化校园建设提出了指导方针,高校需要根据自身内部的特点来逐步实现URP中的各种需求,集成高校内的不同业务系统是URP最为重要的关注点,集成模型的核心是契约,契约可以为不同业务系统之间的通信提供基本的标准,在实现契约的基础上进行通信有多种选择,基于POX的方式可以相对轻量级地实现不同业务系统之间的消息传递。
[1]帕派佐格罗.Web服务:原理和技术[M].龚玲,译.北京:机械工业出版社,2010:177-182.
[2]戴维斯.开源SOA[M].高宇翔,译.北京:电子工业出版社,2010:90-100.
[3]俄尔.SOA Web Service合约设计与版本化[M].郭耀,译.北京:人民邮电出版社,2010:60-70.
[4]休依特.Java SOA Cookbook中文版[M].孙燕,译.北京:清华大学出版社,2011:352-361.
[5]卡林.Java Web服务:构建与运行[M].任增刚,译.北京:电子工业出版社,2009:76-84.
[6]布朗.SOA实践指南—应用整体架构[M].胡键,译.北京:机械工业出版社,2009:165-175.
[7]陈自力.基于JBoss的AOP实现机制的研究[J].长春工程学院学报:自然科学版,2010(2):116-118.
[8]张恺.电子商务中XML安全技术的应用研究[J].长春工程学院学报:自然科学版,2010(1):97-100.