【摘要】本文針對校園網應用系統,異構數據庫信息交換與共享困難的問題,較詳細的介紹了基于XML的數據交換中心原型系統的設計與實現。系統利用XML具有良好的擴展性、自描述性、形式與內容分離等特性,較好的解決了校園網應用系統間的數據交換與信息共享問題。
【關鍵詞】校園網,異構數據,XML數據,數據交換
【中圖分類號】G40-052.4【文獻標識碼】B【論文編號】1009—8097(2006)01—0056—04
一、數字化校園建設中存在的問題
隨著信息技術的發展,校園內各管理部門根據自己的部門的需求逐步建立了信息管理系統。比較常見的有:教務管理系統、學院辦公自動化系統、學院人力資源管理系統、學院后勤管理系統等。然而許多學校普遍存在這樣一個現象,由于這些信息管理系統可能在不同的時期,由不同的軟件公司,在不同平臺上根據不同的組件模型和編程語言開發的,這樣常常造成系統之間不能進行有效的實時通信、共享信息,在校園內形成了一個個的“信息孤島”,不利于數字化校園建設工作的開展。
分析其原因,主要是各個部門在進行信息系統建設時創建了大量的數據庫,這些數據庫被獨立地創建和管理,物理上和邏輯上都存在異構。每個獨立的數據庫有自己的模式、數據模型、數據調用語言。
數據庫的異構性主要體現在以下幾個方面[1]:
1、由計算機體系結構造成的異構。數據庫可能運行于大型機、小型機、工作站、PC等系統中。
2、操作系統的差異造成的異構。數據庫系統可能安裝于U n ix 、W indow N T 、L inux等操作系統上。
3、數據庫結構及語義異構。數據庫應用系統采用不同的數據結構和語義表達方式。
由此產生的信息交流屏障使得校園網各應用管理系統無法充分發揮各自的效能。甚至出現財務數據與學籍管理數據不一致的現象,給校園信息化管理帶來一定的混亂。
二、數據交換中心的架構設計
由于數字化校園應是一種全新的、開放的、擁有豐富信息和良好服務能力的資源共享環境。如何較好地解決校園網各應用系統間異構數據的交換與信息共享已經成為數字化校園建設中迫切需要解決的問題。我們常見的校園信息管理系統多采用B/S(Brower/Server)或C/S模式開發。后臺數據庫則多采用關系型數據庫如:SQL SERVER、oracle、sybase等。
基于此類以關系型數據庫為后臺的校園網應用系統,我們設計了基于XML技術的第三方數據交換中心平臺。
數據交換平臺是基于XML(eXtensible Markup Language)[2]技術的軟件平臺。平臺利用“可擴展標記語言”XML具有的將數據與顯示分離的特性和XSLT(eXtensible Stylesheet Language Transformation) [2]擴展風格表單語言的映射功能,可將一種格式的XML源文件轉換為另一種格式的XML輸出文件,從而實現數據的交換與信息共享[3]。且XML 是一種簡單、與平臺無關并被廣泛采用的標準。它具有的可擴展特性和自描述性克服了傳統標準缺乏靈活性和可擴展性的弱點,使系統表現出較好的開放性與可擴展性[4]。
假設校園網存在兩個異構數據格式的應用系統:教務管理系統A與辦公自動化系統B,兩系統均使用關系型數據庫作為后臺數據庫。教務管理系統A有格式為DATA(A,A)的數據集,辦公自動化系統B有格式為DATA(B,B)的數據集,由于A系統與B系統數據格式的不一致,因此我們將無法實現系統數據的交換與共享。為此我們采用如下機制實現數據轉換:
1、以教育部《教育管理信息化標準》[5]為依據,并根據學院自身的具體情況,確定一個具有普遍代表性的XML數據標準,即School_Template_Data(D,D),在此數據標準中主要確定學院最為基本,最為常用的相關數據和數據結構,如學生信息可參照表1[5]進行設置。以此作為數據轉換中的標準XML數據格式。
2、將需轉換的異構數據映射為XML文檔。為通過數據引擎實現數據的轉換作準備。
3、使用XSLT 擴展風格表單語言編寫XSLT(A->D)、XSLT(D->A)及XSLT(B->D)、XSLT(D->B)轉換模板文檔,并建立對應的格式說明文檔集Des_Data_A和Des_Data_B。
4、數據引擎首先利用與之對應的XSLT(A->D)模板將DATA(A,A)數據轉換為School_Template_Data(D,D)格式的標準XML數據。
5、隨后數據引擎再利用XSLT(D->B)將School_Template
_Data(D,D)數據轉換成符合B格式的數據DATA(B,B),從而實現數據A到數據B的轉換;反之亦然。
系統架構如圖1所示:
三、數據交換中心建設中的幾個關鍵問題
1、XML數據交換引擎的設計與實現
XML數據交換引擎是數據交換系統的核心部分。XML數據交換引擎。主要負責異構數據信息的轉換,在數據轉換過程中引擎根據系統中已注冊的傳入源文件與輸出目標文件,從XLST映射文件庫中調用與之對應轉換映射文件XLST(Sourse
->D)將源文件轉換為系統標準XML文檔。隨后,引擎再次調用XLST(D->Destination)文件,將系統標準XML文檔轉換為目標文件,完成一次轉換過程,引擎采用多線程處理機制。它主要由數據轉換模塊與XSLT數據轉換映射文件庫組成。
在這里我們選用Microsoft公司.NET平臺的C#語言來實現數據交換系統的開發。數據引擎的部分實現代碼如下所示:
……
public class Transition_Engine{
public void Xml_Transition(string inputXmlName,sring xlst_Exchange,
out string outputXmlName) {
//定義輸入文件
private const String input_filename= inputXmlName;
//定義映射文件XSLT
private const String xstl_stylesheet= xlst_Exchange;
//定義輸出文件
private const String output_filename= outputXmlName;
//創建XslTransform 對象
XslTransform xslt = new XslTransform();
//加載 XSLT 映射文件
xslt.Load(xstl_stylesheet);
//創建一個XPathDocument 對象實例并加載被轉換文件
XPathDocument xpathdocument = new XPathDocument(input_filename);
//為輸出文件創建一個XmlTextWriter 對象實例
XmlTextWriter writer = new XmlTextWriter(output_filename, 1);
//利用Transform 實現數據的轉換
xslt.Transform(mydata,1,writer, 1);
}
……
}
public class Exchang_Engine{
public static int Main(){
……
//創建一個Transition_Engine類實例
Transition_Engine ex_XML_engine = new Transition_Engine ();
//創建一個線程
Thread ex_XML_engine = new Thread(new ThreadStart(ex_XML_engine. Xml_Transition));
//調用Start方法啟動線程
ex_XML_engine.Start();
……
}
}
2、XML數據交換接口的設計與實現
數據交換接口主要實現兩個方面的功能。其一,將待交換數據映射為XML文檔,即數據的輸出;其二,對轉換后的輸入XML文檔進行合法性檢查,通過檢查的數據被讀入數據庫實現數據的更新,即數據的輸入。
(1)數據輸出主要執行下列步驟:
#61548;根據各系統后臺數據庫的具體情況與其建立連接
#61548;從數據庫中獲取需要轉換的數據
#61548;生成DataSet數據集,并將數據轉換為XML文檔
#61548;完成轉換后關閉與數據庫的連接
相關數據輸出實現代碼如下所示:
……
private void Write_Data(String XMLOutDoucument) {
try{
// 將DataSet數據寫入到指定XML文檔中
stringData_xmlFilename = XMLOutDoucument;
//創建一個文件流
System.IO.FileStreamData _fsWriteXml = new System.IO.FileStream
(Data _xmlFilename, System.IO.FileMode.Create);
// 創建一個XmlTextWriter 對象實例 Data _xmlWriter
System.Xml.XmlTextWriterData _xmlWriter = newSystem.Xml.XmlTextWriter
(Data _fsWriteXml, System.Text.Encoding.Unicode);
// 將數據寫入到XML文檔中
ds.WriteXml(Data _xmlWriter);
// 關閉文件流
Data _fsWriteXml.Close();
}
catch (Exception) {
return 1;
}
}
……
(2)數據輸入主要由下列操作組成:
#61548;輸入數據的身份驗證。此步驟主要驗證傳入數據是否為系統的合法數據。數據的來源及目標是否有效。
#61548;進一步對轉換后的XML輸入數據進行結構及合法性檢查,確保輸入數據的完整性及正確性。
此處我們利用XSD (XML Schema Definition)[6]架構定義語言對數據進行合法性檢查。相關代碼如下所示:
……
//創建一個驗證XML文件流
FileStreamData_stream = new FileStream(\"input_XML.xml\", FileMode.Open);
//創建一XmlValidatingReader對象
XmlValidatingReader Data_vr = new XmlValidatingReader(Data_stream, XmlNodeType.Element, 1);
//導入XSD架構驗證文件
Data_vr.Schemas.Add(1, \"OA_Schema_Definition.xsd\");
Data_vr.ValidationType = ValidationType.Schema;
//當事件觸發時指定事件處理程序
Data_vr.ValidationEventHandler += new ValidationEventHandler (ValidationHandler);
……
//定義事件的處理方法
public void ValidationHandler(object sender, ValidationEventArgs args) {
Console.WriteLine(\"-----Validation error-----\");
……
}
……
#61548;建立與數據庫的連接。
#61548;將數據讀入系統,并對數據庫進行更新。
數據輸入流程如圖2所示。
四、結論與展望
數據交換中心在構建數字化校園建設中占有十分重要的地位。本文探討了數字化校園建設中存在的問題及異構數據形成的原因。并對如何構建異構信息交換平臺提出了具體的解決方案,給出了實現代碼。通過實踐表明,此方案是一種切實可行的解決方案。它具有簡單、靈活、開放和可擴展等優點,能夠有效的實現異構數據的交換與信息共享。由于數據交換中心主要針對后臺使用關系型數據庫的校園應用系統,對于非關系型數據庫的系統如基于Lotus開發的辦公自動化系統,系統無法直接進行數據交換,為此我們需要進一步對其進行研究與改進。
參考文獻
[1] 何東隆,李美真. 精通XML與網頁設計高級教程[M] .中國青年出版社,2001:3-4
[2] http :/ / www.w3. com/ xml . 2000, (7)
[3] Charles F. Goldfarb. XML實用技術[M] . 北京:清華大學出版社,1999
[4] Didier Martin. XML高級編程[M].北京:機械工業出版社,2000,(1):2- 4
[5] 中國人民共和國教育部編. 教育管理信息化標準第1部分:學校管理信息標準[M]. 人民郵電出版社, 2002, (10):309-310
[6] MSxmlSDK, http :/ / msdn. microsoft . com/ xml [ EB/ OL ]. 2000,(7)
*本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文