021-68453443

基于XML和Annotation的异构系统数据集成方式的研究

2017-03-03 16:59:41 人阅读 分类:论文范文

摘要:本文运用XML的强大数据表达能力以及J2EE的反射以及Annotation编程来实现异构系统数据集成方式。该方式通过对原始结构代码进行简单的标记,将不同的数据结构串联起来。同时在转换的过程中将细节屏蔽起来并封装成标准接口,用户只需要将提供输入以及所需要的数据结构类型就可以方便的进行转换。最后本文给出集成系统详细的设计方法。
关键词:XML语言,Annotation编程,数据集成,异构系统
Research of Heterogeneous Data Integration system Based on XML and Annotation
Abstract: This paper uses the powerful data of XML expression ability and the reflection of J2EE and the Annotation programming to realize the heterogeneous data integration system mode. The way is uses the structure of the original code for a simple tag, different data structure. Details in the process of transformation at the same time and encapsulated into a standard interface. The uses only need to provide the required data structure types to  conversion. At the end of this paper it puts forward the design of the integrated system in detail.
Keywords: XML language, the Annotation programming, data integration, heterogeneous systems
1.引言
互联网技术的不断应用,异构系统之间访问成为了常态,业务的要求需要对异构系统实现整合。但是在将异构系统的不同实现整合为统一接口时,不同系统中相同数据的数据结构不尽相同可能存储信息间有重合部分。这类问题导致了异构系统在整合的时不光是子系统间的服务整合,同时数据的集成也在系统整合中成为了重要瓶颈。如何更好的将异构系统间的数据进行整合是本文所要解决的问题。
2.基于XML的构架数据集成方法
基于XML的数据集成方式有了详尽的方法,可以通过将数据集成分布到各个节点上,可以提升系统的扩展性和容错性。这一节里就来具体讨论如何通过XML来进行数据集成。
2.1 数据结构转换
本文在数据结构转换中使用Java的Annotation这个功能。Annotation可以从源文件、Class文件或者以在运行时反射的多种方式被读取。这里通过Annotation来标记数据结构中数据的对应关系。首先将数据结构分为源数据结构与目标数据结构。在源数据结构中用Annotation来标记它所对应的目标数据。这里对定制的Annotation创建TargetClass和TargetParam两个属性。Annotation将在源数据结构中被标记,并通过如上两个参数表明所指向的目标数据类型。
2.2基于反射的数据抽取
之前使用Annotation的方式来进行信息标记,下面需要对数据进行抽去,这里是一反射机制来进行数据抽取。通过下图1可以看出数据提取的流程。首先通过获取原始数据结构的类对象,从而知道该结构有什么属性。随后遍历所有属性,寻找有Annotation的属性。随后通过获取Annotation的信息来获知该数据对应的是哪个目标类的那个属性。并相应的将数据和Annotation信息存储到Map中。完成上述的流程后可以信息进行XML封装。

图1 数据提取流程图
2.3基于XML的数据集成
通过Annotation以及反射的方式将数据信息以及指引转换的注释信息进行了提取。现在为了进行数据转换,开始使用之前讨论过的XML作为中间介质进行存储交互以及逆向结构生成的工作。在这样的构架下。将数据类型转换为XML结构分别进行了封装。每一个数据类型由一个类型工厂来负责进行转换。而实际上整个XML的生成过程就是在信息抽取的递归框架下从不同的数据类型转换模块中生成数据并进行组装。这样一个框架使得的实现耦合性降低。每一个类型转换工厂相互独立只负责生产相应类型的XML结构。而这里将介绍一下基本数据类型的。首先构造基本数据结构时还是遵循sourceType、targetClass和targetParam这三个属性的原则。由相应的factory来生成以及解析的。然后再按照之前的设计流程加以组装。
2.4目标数据结构填充
在转换成XML之后将会就不同应用场景来进行使用。比如可以通过Web Service将集成为XML表现形式的数据转传输到目标节点。
转换过程也是通过Java的反射机制来实现。在之前的数据抽取过程中是将数据通过反射机制从属性中读取出来。那么在这个向目标数据结构填充的过程则是之前操作的逆过程。就是通过创建目标数据结构的空结构,随后从XML中读取相应的数据并填充进去。具体的流程图2如下:

图2 数据填充流程图
如上图所示,详细的设计了数据填充的流程。首先通过反射机制创造目标数据结构。然后从XML中提取所有数据。之前提到在XML中有三个基本属性。通过targetClass和targetParam可以唯一确定一个目标数据。所以这里在从XML中取数据的时候将这两个字段进行拼接来作为存储Map的键值。这样在取出数据后就是存储在这样一个Map中方便之后进行查找。随后开始遍历目标数据结构的属性,将它们的class和param名称进行拼接并与之前存储信息的Map里的键值进行比对。如果Map中有相应的数据,就说明这个数据应该被填充在当前这个属性中。则完成填充。 如果没有找到则看当前属性类型是否为基础数据类型。如果是则继续遍历其他属性,如不是则表明这是一个用户自定义类型。同理,需要继续深入其子结构来重复之前的操作。直到全部为基础数据类型为止。这样就从XML中将数据填充到了新的数据类型中。至此,完成了不同数据结构间的数据转换。
2.5简化的数据结构转换
同一系统内也可能需要进行数据结构转换。而在这种情况下再进行XML转换是不太合适的。因为同一ClassLoader内可以直接进行数据类型转换。只要将相应的数据转换为Object存储,再通过之前所介绍过的targetClass加targetParam来进行目标位置标记。从而方便的进行数据转换。省去了XML的装箱拆箱过程,进一步减少了系统的时间消耗。
   
图3数据填充流程图
转换步骤还是分为三步。与之前的XML转换相同。只不过是省去了相应的XML数据封装与解析。而这一部分正是XML所消耗时间内存的地方。那么在中间Map的使用时。同样采用targetClass和targetParam的组合来作为键值指引相应的数据查询。因为在同一系统中,所以数据在中间Map中是直接以Object形式进行存储。当需要填充的时候就直接从Map中寻找数据并转换成对应数据类型。
3.异构数据结构转换系统实现
通过对系统构架的设计提供了一个高扩展性的底层平台,通过对系统服务集成的设计提供了统一的服务注册机制和灵活的服务设计原则,通过对数据集成的设计提出了数据结构转移方案。下面,将对异构数据集成的核心方案进行实现,并验证其合理性。
3.1概要设计
软件主要提供异构数据结构转换功能,每一次数据转换将源数据结构转换至目标数据结构。转换方式按基于XML和基于对象两种方式进行转换。

图4 系统用例图
通过图4可以看到用例图将需求分为来那个部分:
1) 数据提供者:数据提供者即源数据结构一方,通过提供源数据将数据进行转换。转换形式按第四章中讨论的结果分为两种,经过XML转换或直接经过Java对象转换。
2) 数据需求者:数据需求者即目标数据获取放,通过将源数据所转换的XML数据或对象转换为相应的目标数据结构。
系统按需求分析中所提供的用例图将接口进行最简化设计:
1) public Document getXMLData(Object src):通过源数据转换为对应
2) public Map getObjectMap(Object src):转换为对应的Object Map,Map中的键值为目标类与目标属性所唯一确定的String标记。
3)public Object createTargetDataByXML(Document srcXML, Class targetClass):通过XML中间数据转换为对应的目标数据结构。
4) public Object createTargetDataByObject(Map  srcMap, Class targetClass):通过对象Map直接转换为目标数据结构。
这样的设计可以将数据结构转换模块实现尽可能的封装在同一模块内,对外提供如接口所示功能。从而屏蔽了具体的内部实现。
3.2详细设计
经过概要设计,明确了数据结构转换系统的需求并确定了简介的接口以使得系统在进行数据结构转换时的操作能够尽可能的简便。下面先来看一下系统类图设计。

图5系统类图
在类图5中,看到系统类分为三部分:
1)数据初始封装:数据首先由SuperObject进行封装,主要用来存储源数据结构初始数据。通过对源数据进行抽象封装,从而获得了统一的处理输入。
2)XML数据生成:通过ElementFactory、NativeElementFactory的处理,能够提供XML相应节点的生成操作。而对于不同数据结构的XML化操作由多个类型Factory类实现。由于要频繁进行Element生成操作,将各个XML节点生成类设计为Singleton模式。这样可以尽可能减少多余内存生成。
3)目标数据结构生成:中间数据形式,无论是XML还是Object Map都将首先被解析为TargetParam形式被保存起来。随后再经过第三节的数据填充算法生成对应的目标数据结构。
3.3 示例分析
对于上述异构数据结构转换程序,提供了相应的试验场景。场景定义了两套不同的数据结构,分别为源数据结构和目标数据结构。两个数据结构虽然表现方式不同,但是实际上存储了相同的数据。通过这样的场景来模拟异构数据集成需求。

图6 源数据结构类图
 

图7 源数据结构类图
如图6和7可以看到相同的产品信息被分不到不同的两个数据结构中。系统通过XML中间数据结构成功的从源数据结构将数据转移到目标数据结构。
结束语
可以通过简单的标记将不同的数据结构串联起来。同时在转换的过程中我们将细节屏蔽起来并封装成标准接口。用户只需要将提供输入以及所需要的数据结构类型就可以方便的进行转换。 并且这样一种编程模式可以尽可能的减少对原有系统的改造。也尽量避免了因为数据统一做带来的额外操作。用户甚至不需要改变任何自己的数据结构。而只是在各子节点的数据结构定义类中将相应的属性上增加Annotaion标记。就可以方便的通过之前定制的转换程序来进行数据结构转换。
参考文献
[1]袁占亭, 张秋余, 杨洁. 基于Web Services 的企业应用集成解决方案研究[J] . 计算机集成制造系统-CIMS, 2004, 10 ( 4) : 394- 414.
[2]Naveen Erasala, David C Yen, T M Rajkumar. Enterprise Application Integration in the Electronic Commerce World[J] . Computer Standards & Interfaces, 2003, 12( 25) : 69- 82.
[3] Johannession P, Perjons E. Design Principles for Process Modeling in Enterprise Application Integration[J]. Information Systems, 2001, 26(3):165-184.
[4] Ying Huang, Jen-Yao Chung. A Web Services-based Framework for Business Integration Solutions [J]. Electronic Commerce Research and Application, 2003, (2):15- 26.
[5]Guo gang. Research on Process Definition and Man agement Methond of New Product Development in a Concurrent Environment.Proceedings of IE&EM’ 2002 &IceCE’,Beijing ,2002 :19~21.
[6] LI Bohu , XIONG Guangleng , ZHU Wenhai , ZHANG Heming , QUANChunlai . Research and practice on concurrent engineering and virtual manufacture technology[A] . Proceedings of 2000 AMSMA ,19th [C] .Guangzhou :Guangdong People’s Publishing House ,2000. 30 - 39.
[7]FOSTER I ,KESSELMAN C ,GLOBUS:a metacomputing infrastructure toolkit [J ] . International Journal of Supercomputer Applications ,1997 ,11 (2) :115 - 128.
[8] Herani Madhusudan. An Intelligent Mediator-based Framework for Enterprise Application Integration[ J] . Journal of Computing and Information Science in Engineering, 2004,12( 4) : 294- 304.
[9] G. Thimm, S.G. Lee, Y.-S. Ma, “Towards unified modelling of product life-cycles,” Computers in Industry, vol. 57, 2006, pp. 331–341.
[10] Y.-S. Ma and T. Tong, “Associative feature modeling for concurrent engineering integration,” Computers in Industry, vol. 51, no. 1, 2003, pp. 51-71.
[11] Y.-S. Ma and Jerry Y.H. Fuh, “Product lifecycle modelling, analysis and management,” Computers in Industry, vol. 59, no. 2-3, 2008, pp. 107–109. 

相关资讯