APP下载

基于XML Schema的第三方数据同步接口

2009-10-13周霜菊吉久明

现代情报 2009年7期
关键词:一卡通

周霜菊 吉久明

〔摘 要〕介绍基于XML的信息交换机制和映射算法,并以华东理工大学图书馆与校园“一卡通”系统的数据同步为例,介绍在不修改图书馆现有系统的前提下,实现图书馆集成系统与“一卡通”系统的集成。结合XML技术,给出基于Schema XML的第三方数据同步接口的校园“一卡通”与图书馆系统数据同步的实现方案,并重点介绍了集成方案中基于Schema XML的数据同步接口的实现。

〔关键词〕第三方同步;一卡通;XML Schema

〔中图分类号〕TP391 〔文献标识码〕C 〔文章编号〕1008-0821(2009)07-0162-04

A Data Sync Scheme Based on XMLZhou Shuangju Ji Jiuming

(Institute of Scientific and Technical Information,East China University of Science and Technology,

Shanghai 200237),China)

〔Abstract〕Firstly,the paper introduced information-exchange mechanism based on XML and rules about mapping arithmetic based on Schema.Then giving a presentation of the integration scheme of the smart card system and book management system in East China university of science and technology.The design of a universal data sync interface system base parameter is proposed and the major data sync scheme based third party agent technology used in implementation was given.

〔Key words〕third party agent;smart card;XML Schema

国内高校的图书管理系统,基本上都是在上世纪九十年代初发展起来的,大都比校园“一卡通”发展得早。因此现有的图书管理系统与校园“一卡通”接口的问题,就凸显在“一卡通”的建设者与图书馆的技术人员面前[1]。随着XML技术的发展及其相关技术体系的日趋完善,XML的可扩展性使得异构的信息系统之间可以整合不同类型的数据源,并且可以利用XML文档来进行数据的导入、导出和交换。本文结合XML技术,给出了基于XML Schema的第三方数据同步接口的校园“一卡通”与图书馆系统数据同步的实现方案。

1 基于XML的信息交换机制和映射算法

基于XML Schema的信息交换机制是一种采用关系数据库和XML文档相结合的数据管理机制,基于这种机制的信息系统体系结构如图1所示。该机制分析用于交换的信息的数据结构,设计出相应的XML模式,并将模式文档传递给X-RDB功能组件。X-RDB功能组件接收传递过来的XML模式文档和XML文档,将XML模式影射为数据库关系模式,采用查询语言进行关系数据库的更新、查询、删除和插入操作[2]。

与DTD模式相比,Schema模式具有强大的复杂数据类型定义和数据结构描述功能。直接映射算法是一种比较新的映射算法,其主要设计思想是根据一系列规定的映射法则,将模式中各元素的嵌套关系和层次结构映射成为关系数据库支持的标准SQL语句,从而在数据库中建立相应的表结构和约束关系[2]。

2 需求分析与实现思路

华东理工大学校园卡系统使用的是新开普电子技术有限公司的数字化校园解决方案,图书馆采用的是大连网信软件有限公司的妙思文献管理系统,而图书馆的借书证采用的是校园卡。当学校师生在一卡通中心有新办卡、挂失、

解挂等数据变动时,要求图书馆集成系统数据库进行相应的数据变动。由于两个系统分属不同公司开发,没有统一的接口、标准,新开普的一卡通系统数据库采用的是Oracle数据库,而图书馆的妙思文献管理系统采用SQL Server数据库,这就造成了系统间不能做到互通、互联和数据分享与更新。

由于业界没有相应的标准来解决图书馆的数据同步问题,当被同步的系统升级时,采用直接访问被同步系统的数据库的方法,很容易给图书馆的工作带来不便。如我校的校园卡系统在2007年9月突然升级,原有的数据结构发生改变,导致图书馆的数据同步系统不能正常运行,影响了图书馆的正常流通秩序。为了避免此类情况的再次的发生,我们正研究设计基于接口的通用的数据同步程序。这种通用程序,不再直接访问被同步数据库,而是通过在同步程序里增加接口参数配置模块。由该模块配置同步程序所需的接口,包括数据库连接参数(包括服务器名称、数据库名称、数据库用户、数据库口令等)、一卡通数据库信息接口参数、同步数据库信息接口参数、集成系统信息接口参数等。这些配置参数将以文本文件或XML文件形式存储,通用数据同步程序负责制定参数配置文件的XML Schema[3],并提供界面来设定或修改参数XML文件,完成接口参数的修改。

3 基于XML Schema的第三方数据同步接口

3.1 系统功能构架

数据同步系统的功能构架分为新开普同步模块、接口参数配置模块、文件模块、X-RDB功能组件和更新模块组成,如图2。通过新开普数据同步模块将一卡通的Oracle数据库复制成中间同步数据库存放在接口服务器中。由于一卡通数据库没有用户信息的更新流水表,因此在中间数据库增加触发器和信息更新流水表,通过触发器把卡中心用户信息变动记录到信息更新流水表中。当一卡通数据库有信息更新时,中间同步数据库信息更新流水表添加一条包含用户新、旧信息的记录。第三方同步接口的参数配置模块用于配置同步程序所需的接口,包括数据库连接参数(包括服务器名称、数据库名称、数据库用户、数据库口令等)、同步数据库信息接口参数、集成系统信息接口参数等。文件模块存放经过参数设置生成的相应参数配置文件、记录上次处理的最大记录号的文件和日志文件。X-RDB功能组件接收文件模块传递过来的XML模式文档和XML文档,将XML模式影射为数据库关系模式,输出查询语言给更新模块进行关系数据库的更新、查询、删除和插入操作。更新模块读取信息更新流水表,更新相应的图书馆数据信息,从而达到了数据更新的同步。其中基于Schema XML的第三方数据同步接口模块是系统的关键模块。

3.2 系统的实现

3.2.1 基于XML Schema的第三方数据同步接口的实现

由于接口参数是由被同步系统提供的,这种基于接口参数的数据同步程序,一方面能够保持稳定,另一方面也同样适用于各种异构图书馆与校园“一卡通”的数据同步情况,因为图书馆集成系统和校园一卡通所要求的读者信息基本相同,因而系统首次使用时开发人员只需研究如何配置接口参数就行了。配置好后的参数存放在文本文件或XML文件中。例如数据库连接参数配置可以通过图3的界面来设定,配置完成后,形成以下形式的XML配置文件:

xml version=′1.0′encoding=′GB2312′?

AdoStrConYkt

192.168.96.1

Oracle

sa

唱唱

ykt

AdoStrConTsg

192.168.96.2

Sql Server

sa

唱唱

tsg

进行数据同步时,系统调用数据库连接、同步数据库信息接口、集成系统信息接口等参数配置文件以及最大记录号文件来确定读取和修改的信息。对妙思文献管理系统等对外提供编程接口的图书馆集成系统,系统根据配置文件读取到的接口参数去获取相关信息,并生成系统适用的标准SQL语句提交给服务器执行,从而实现数据的更新同步。对于ILASII2.0等不向外提供编程接口的图书馆集成系统,系统根据配置文件读取到的接口参数获取相关信息并生成指定格式的文本,然后通过ILASII2.0系统本身提供的“读者定长数据接收”功能实现数据的同步[4]。相关代码如下:

FunConfig()

Begin

∥读取相关参数

StrConYkt=DataConfig(AdoStrConYkt);∥从配置文件中读取一卡通连接的参数并返回相应的连接字符串

StrConTsg=DataConfig(AdoStrConTsg);∥从配置文件中读取图书馆连接的参数并返回相应的连接字符串

StrTableLsb=GetTable(StrTableLsb);∥从配置文件中读取同步数据库的流水表名

StrTableYkt=GetTable(TableYkt);∥从配置文件中读取一卡通用户表的表名

StrTableTsg=GetTable(TableTsg);∥从配置文件中读取读者信息表的表名

StrFieldYkt=ReadInfo(StrFieldYkt);∥从配置文件中读取一卡通信息接口名称

StrFieldTsg=ReadInfo(StrFieldTsg);∥从配置文件中读取集成系统信息接口名称

if not adoconnection1.Connected then ∥连接一卡通数据库

begin

?adoconnection1.ConnectionString:=StrConYkt;

?adoconnection1.Connected:=true;

end;

if not adoconnection2.Connected then ∥连接图书馆数据库

begin

?adoconnection2.ConnectionString:=StrConTsg;

?adoconnection2.Connected:=true;

end;

End

∥新增读者

Begin

FunConfig()

method:=′new′;

filename:=′newid.txt′;∥存放上次新增的最大记录号

tablename:=StrTableYkt;

maxchangid:=readoldid(filename);∥获取上次最后新增的记录号

maxnewid:=readnewid(tablename,StrMaxYkt);∥一卡通当前用户表的最大记录号

if maxchangid

begin

DataSync(maxchangid,maxnewid,method,StrTableLsb,StrTableYkt,StrTableTsg,StrFieldYkt,StrFieldTsg);

end;

End

∥更新相应信息

Begin

FunConfig()

method:=′old′;

filename:=′logservermax.txt′;∥存放上次最后修改的记录号

tablename:=StrTableLsb;

maxchangid:=readoldid(filename);∥获取上次最后修改的记录号

maxnewid:=readnewid(StrTableLsb,StrMaxLsb);∥更新流水表里的最大更新记录号

if maxchangid

begin

DataSync(maxchangid,maxnewid,method,StrTableLsb,StrTableYkt,StrTableTsg,StrFieldYkt,StrFieldTsg);

end;

End

∥构造SQL语句

SqlMadeUser(maxchangid,maxnewid,StrTableYkt,StrFieldYkt)

Begin

SqlSelect=strRead(StrFieldYkt,StrUser)∥获取一卡通中用户的信息字段名称

SqlFrom=StrTableYkt∥获取一卡通用户信息表的名称

SqlWhere=strRead(StrFieldYkt,StrMaxYkt)∥获取一卡通用户信息表记录号字段名称

strSql=SqlSelect+SqlFrom+SqlWhere between′+inttostr(maxchangid+1)+′and′+inttostr(maxnewid)+′′′;

∥这样在实际使用中就构造出了:

∥strSql=′select cardno,name,outid,customerid from BASEzCUSTOMERS where customerid between′+inttostr(maxchangid+1)+′and′+inttostr(maxnewid)+′′′

End

4 基于XML Schema的第三方数据同步接口应用

4.1 开发环境

华东理工大学一卡通中心和图书馆集成系统数据同步系统中,一卡通卡中心与接口服务器之间是新开普电子技术有限公司开发的新开普第三方数据同步服务,该服务程序采用Visual Studio 2005为开发工具。接口服务器与图书馆集成系统之间是图书馆自行开发的第三方同步服务,该服务程序采用Borland Delphi 7为开发工具。服务程序与数据库连接采用ADO(ActiveX DATA Object),它是微软公司提出访问任何数据源及数据库的通用数据访问对象,它用SQL语言代码对数据库及数据源进行创建、插入、删除和修收。

4.2 应用实例和效果

基于XML Schema的第三方通用数据同步系统功能如图4所示。通过该接口可以设定程序运行时间间隔,程序提供包括用户挂失解挂、挂失补证等用户信息的同步更新,同时还可以设定读者类别参数来自动新增读者。在华东理工大学图书馆实际使用中,该接口被设定为开机启动并每5分钟执行一次数据同步这样每隔5分钟系统对交换日志中的未处理记录逐条循环分别处理挂失、解挂、补证时,首先读交换日志获取上次最后修改的记录号,然后处理挂失补证解挂情况并根据情况类别分别记入相应的日志文件同时在相应的文本框中显示出来。对于新增的校园卡用户,接口程序首先检测该用户的部门代码是否在事先所设定的单位代码列表里,如果在列表里则检测该用户的卡号在读者信息表里是否已存在。如果卡号不存在就往读者信息表里添加一条新数据,这样该校园卡用户就作为新读者自动同步到图书馆系统里。在本校的实际应用中相关代码如下:

begin

readinlb();∥读取读者单位类别列表文件

for k:=0 to line-1 do

begin

s:=lb[k].account;

取出第k个单位未处理的新用户信息;

while not adoquery1.Eof do

begin

依次读取每个用户相关字段信息;

if读者信息表里不存在该用户then

插入该用户信息入读者信息表中;

在备注框中显示新增读者的信息;

在日志文件里写新增读者的信息;

end;

Next;

end;

end;

5 结 语

笔者通过分析各种数据同步的模式,开发出适合本校的基于第三方同步的校园“一卡通”与图书馆系统数据的同步程序,实现了不修改图书馆集成系统的情况下与校园“一卡通”数据的同步更新。并提出了设计基于接口参数的通用数据同步程序的设想,这种模式一方面能够保持稳定,另一方面也同样适用于各种异构图书馆与校园“一卡通”的数据同步情况,无论是接口的实现还是硬件设备的投入都是低成本的,具有很强的实用性和通用性。

参考文献

[1]邓尧伟.图书管理系统与校园“一卡通”接口模式研究[J].图书馆论坛,2005,(2):79-81.

[2]刘伟.基于Schema的XML模式与关系模式映射算法的研究[J].计算机应用与软件,2006,(3):113-115.

[3]吉久明,李楠.建立基于知识集成的资源和服务整合与协同机制[J].现代图书情报技术,2006,(9):58-62.

[4]王泽贤.广州大学图书馆与广州大学城一卡通系统应用集成的实现[J].现代图书情报技术,2007,(8):84-88.

猜你喜欢

一卡通
基于“一卡通”开发的员工信息识别系统
公共交通一卡通TSM平台研究
“银医一卡通”在提高医院优质服务中的作用
住建部、交通运输部:“一卡通”互联互通应统—标准