周霜菊 吉久明
〔摘 要〕介紹基于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
國內高校的圖書管理系統,基本上都是在上世紀九十年代初發(fā)展起來的,大都比校園“一卡通”發(fā)展得早。因此現有的圖書管理系統與校園“一卡通”接口的問題,就凸顯在“一卡通”的建設者與圖書館的技術人員面前[1]。隨著XML技術的發(fā)展及其相關技術體系的日趨完善,XML的可擴展性使得異構的信息系統之間可以整合不同類型的數據源,并且可以利用XML文檔來進行數據的導入、導出和交換。本文結合XML技術,給出了基于XML Schema的第三方數據同步接口的校園“一卡通”與圖書館系統數據同步的實現方案。
1 基于XML的信息交換機制和映射算法
基于XML Schema的信息交換機制是一種采用關系數據庫和XML文檔相結合的數據管理機制,基于這種機制的信息系統體系結構如圖1所示。該機制分析用于交換的信息的數據結構,設計出相應的XML模式,并將模式文檔傳遞給X-RDB功能組件。X-RDB功能組件接收傳遞過來的XML模式文檔和XML文檔,將XML模式影射為數據庫關系模式,采用查詢語言進行關系數據庫的更新、查詢、刪除和插入操作[2]。
與DTD模式相比,Schema模式具有強大的復雜數據類型定義和數據結構描述功能。直接映射算法是一種比較新的映射算法,其主要設計思想是根據一系列規(guī)定的映射法則,將模式中各元素的嵌套關系和層次結構映射成為關系數據庫支持的標準SQL語句,從而在數據庫中建立相應的表結構和約束關系[2]。
2 需求分析與實現思路
華東理工大學校園卡系統使用的是新開普電子技術有限公司的數字化校園解決方案,圖書館采用的是大連網信軟件有限公司的妙思文獻管理系統,而圖書館的借書證采用的是校園卡。當學校師生在一卡通中心有新辦卡、掛失、
解掛等數據變動時,要求圖書館集成系統數據庫進行相應的數據變動。由于兩個系統分屬不同公司開發(fā),沒有統一的接口、標準,新開普的一卡通系統數據庫采用的是Oracle數據庫,而圖書館的妙思文獻管理系統采用SQL Server數據庫,這就造成了系統間不能做到互通、互聯和數據分享與更新。
由于業(yè)界沒有相應的標準來解決圖書館的數據同步問題,當被同步的系統升級時,采用直接訪問被同步系統的數據庫的方法,很容易給圖書館的工作帶來不便。如我校的校園卡系統在2007年9月突然升級,原有的數據結構發(fā)生改變,導致圖書館的數據同步系統不能正常運行,影響了圖書館的正常流通秩序。為了避免此類情況的再次的發(fā)生,我們正研究設計基于接口的通用的數據同步程序。這種通用程序,不再直接訪問被同步數據庫,而是通過在同步程序里增加接口參數配置模塊。由該模塊配置同步程序所需的接口,包括數據庫連接參數(包括服務器名稱、數據庫名稱、數據庫用戶、數據庫口令等)、一卡通數據庫信息接口參數、同步數據庫信息接口參數、集成系統信息接口參數等。這些配置參數將以文本文件或XML文件形式存儲,通用數據同步程序負責制定參數配置文件的XML Schema[3],并提供界面來設定或修改參數XML文件,完成接口參數的修改。
3 基于XML Schema的第三方數據同步接口
3.1 系統功能構架
數據同步系統的功能構架分為新開普同步模塊、接口參數配置模塊、文件模塊、X-RDB功能組件和更新模塊組成,如圖2。通過新開普數據同步模塊將一卡通的Oracle數據庫復制成中間同步數據庫存放在接口服務器中。由于一卡通數據庫沒有用戶信息的更新流水表,因此在中間數據庫增加觸發(fā)器和信息更新流水表,通過觸發(fā)器把卡中心用戶信息變動記錄到信息更新流水表中。當一卡通數據庫有信息更新時,中間同步數據庫信息更新流水表添加一條包含用戶新、舊信息的記錄。第三方同步接口的參數配置模塊用于配置同步程序所需的接口,包括數據庫連接參數(包括服務器名稱、數據庫名稱、數據庫用戶、數據庫口令等)、同步數據庫信息接口參數、集成系統信息接口參數等。文件模塊存放經過參數設置生成的相應參數配置文件、記錄上次處理的最大記錄號的文件和日志文件。X-RDB功能組件接收文件模塊傳遞過來的XML模式文檔和XML文檔,將XML模式影射為數據庫關系模式,輸出查詢語言給更新模塊進行關系數據庫的更新、查詢、刪除和插入操作。更新模塊讀取信息更新流水表,更新相應的圖書館數據信息,從而達到了數據更新的同步。其中基于Schema XML的第三方數據同步接口模塊是系統的關鍵模塊。
3.2 系統的實現
3.2.1 基于XML Schema的第三方數據同步接口的實現
由于接口參數是由被同步系統提供的,這種基于接口參數的數據同步程序,一方面能夠保持穩(wěn)定,另一方面也同樣適用于各種異構圖書館與校園“一卡通”的數據同步情況,因為圖書館集成系統和校園一卡通所要求的讀者信息基本相同,因而系統首次使用時開發(fā)人員只需研究如何配置接口參數就行了。配置好后的參數存放在文本文件或XML文件中。例如數據庫連接參數配置可以通過圖3的界面來設定,配置完成后,形成以下形式的XML配置文件:
xml version=′1.0′encoding=′GB2312′?
進行數據同步時,系統調用數據庫連接、同步數據庫信息接口、集成系統信息接口等參數配置文件以及最大記錄號文件來確定讀取和修改的信息。對妙思文獻管理系統等對外提供編程接口的圖書館集成系統,系統根據配置文件讀取到的接口參數去獲取相關信息,并生成系統適用的標準SQL語句提交給服務器執(zhí)行,從而實現數據的更新同步。對于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 開發(fā)環(huán)境 華東理工大學一卡通中心和圖書館集成系統數據同步系統中,一卡通卡中心與接口服務器之間是新開普電子技術有限公司開發(fā)的新開普第三方數據同步服務,該服務程序采用Visual Studio 2005為開發(fā)工具。接口服務器與圖書館集成系統之間是圖書館自行開發(fā)的第三方同步服務,該服務程序采用Borland Delphi 7為開發(fā)工具。服務程序與數據庫連接采用ADO(ActiveX DATA Object),它是微軟公司提出訪問任何數據源及數據庫的通用數據訪問對象,它用SQL語言代碼對數據庫及數據源進行創(chuàng)建、插入、刪除和修收。 4.2 應用實例和效果 基于XML Schema的第三方通用數據同步系統功能如圖4所示。通過該接口可以設定程序運行時間間隔,程序提供包括用戶掛失解掛、掛失補證等用戶信息的同步更新,同時還可以設定讀者類別參數來自動新增讀者。在華東理工大學圖書館實際使用中,該接口被設定為開機啟動并每5分鐘執(zhí)行一次數據同步這樣每隔5分鐘系統對交換日志中的未處理記錄逐條循環(huán)分別處理掛失、解掛、補證時,首先讀交換日志獲取上次最后修改的記錄號,然后處理掛失補證解掛情況并根據情況類別分別記入相應的日志文件同時在相應的文本框中顯示出來。對于新增的校園卡用戶,接口程序首先檢測該用戶的部門代碼是否在事先所設定的單位代碼列表里,如果在列表里則檢測該用戶的卡號在讀者信息表里是否已存在。如果卡號不存在就往讀者信息表里添加一條新數據,這樣該校園卡用戶就作為新讀者自動同步到圖書館系統里。在本校的實際應用中相關代碼如下: 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 結 語 筆者通過分析各種數據同步的模式,開發(fā)出適合本校的基于第三方同步的校園“一卡通”與圖書館系統數據的同步程序,實現了不修改圖書館集成系統的情況下與校園“一卡通”數據的同步更新。并提出了設計基于接口參數的通用數據同步程序的設想,這種模式一方面能夠保持穩(wěn)定,另一方面也同樣適用于各種異構圖書館與校園“一卡通”的數據同步情況,無論是接口的實現還是硬件設備的投入都是低成本的,具有很強的實用性和通用性。 參考文獻 [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.