论文部分内容阅读
〔摘 要〕介绍基于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 需求分析与实现思路
华东理工大学校园卡系统使用的是新开普电子技术有限公司的数字化校园解决方案,图书馆采用的是大连网信软件有限公司的妙思文献管理系统,而图书馆的借书证采用的是校园卡。当学校师生在一卡通中心有新办卡、挂失、
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 BASECUSTOMERS 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.
〔关键词〕第三方同步;一卡通;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 需求分析与实现思路
华东理工大学校园卡系统使用的是新开普电子技术有限公司的数字化校园解决方案,图书馆采用的是大连网信软件有限公司的妙思文献管理系统,而图书馆的借书证采用的是校园卡。当学校师生在一卡通中心有新办卡、挂失、
3.2 系统的实现
3.2.1 基于XML Schema的第三方数据同步接口的实现
由于接口参数是由被同步系统提供的,这种基于接口参数的数据同步程序,一方面能够保持稳定,另一方面也同样适用于各种异构图书馆与校园“一卡通”的数据同步情况,因为图书馆集成系统和校园一卡通所要求的读者信息基本相同,因而系统首次使用时开发人员只需研究如何配置接口参数就行了。配置好后的参数存放在文本文件或XML文件中。例如数据库连接参数配置可以通过图3的界面来设定,配置完成后,形成以下形式的XML配置文件:
<?xml version=′1.0′encoding=′GB2312′?>
进行数据同步时,系统调用数据库连接、同步数据库信息接口、集成系统信息接口等参数配置文件以及最大记录号文件来确定读取和修改的信息。对妙思文献管理系统等对外提供编程接口的图书馆集成系统,系统根据配置文件读取到的接口参数去获取相关信息,并生成系统适用的标准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
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
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 BASECUSTOMERS 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.