(江蘇省無錫市華夏計算機技術有限公司,江蘇 無錫 214000 )
摘要:由于XML自身的特點,它非常適合作為異構數據源之間數據轉換的中介。本系統集成中采用XML作為數據轉換的中介,實現了不同數據庫之間的數據轉換,并且實現了XML文檔與關系數據庫之間數據相互轉換的構件,提高了ERP系統的可擴展性、靈活性和可維護性。該文分析了ERP系統中數據轉換的基本需求,結合面向對象的方法和構件技術,設計并實現了基于XML的通用數據轉換系統。本文總結了在實施ERP系統的實踐中所使用的技術,提出了用標準XML模式作為交換單據的數據標識;詳細描述了關系模式與XML模式之間映射的轉換腳本;討論了XML文檔與關系數據庫之間相互轉換的數據轉換構件的設計和實現接口;并基于DOM解析器,詳細介紹了數據庫轉換構件中的數據轉換的算法。在具體的使用過程中,只要對每種單據都生成一份簡單直觀的轉換腳本,并調用數據轉換構件的接口,就可以非常容易地提取(或存儲)帶有層次關系的XML文檔。
關鍵詞:XML;數據轉換;數據庫;構件;ERP
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2010)03-531-03
Realization and Application of Data Exchange Technology Based on XML in ERP System
WEN Jian
(Huaxia Computer Technology Co. Ltd, Wuxi 214000, China)
Abstract: This article analyses the primary demand of data exchange in ERP, combined with the mothod of object-oriented and component technique, it designs and realizes the system of universal data exchange based on XML. This article summarizes the technologies which are used in the practice of emplifing ERP system, and brings up that use normal XML mode as DID of exchange voucher; and describes the transform script of mapping between relational mode and XML mode in detail; it discusses the design of data exchange component and realizing joint of the exchange between XML document and RDB; and it presents how to count the data exchange in database exchange unit on the base of DOM resolver. As long as creates a simple and visual exchange sript to every kind of voucher and invokes the interface of data exchange unit during use, it will be very easy to extract(or storage) XML document with LEV relation.
Key words: XML; data exchange; database; component; ERP
1 課題的背景
本文的課題是我在公司時負責的一個某工廠項目中實施ERP系統過程中產生的。該工廠是的一個合資型跨國集團,在本土以及海外有多條生產線,因為項目保密條例不能說的更多,所以這里只需闡述下該工廠的生產主要基于ERP管理,從材料的采購、入庫、生產、銷售進行集中管理。本文作者參與了ERP實施中銷售業務的開發。
在實施過程中,我們一方面既要增加系統的功能,另一方面又要集成已有的應用系統。例如,庫存管理系統是在生產線引進時一并引進的,是基于ORACLE數據庫的,我們無法也沒必要另外開發一個庫存管理系統;原有的財務結算系統是基于SQL SERVER數據庫的;銷售系統是重新開發的,基于SQL SERVER數據庫的。銷售系統、庫存管理系統、財務結算系統相對獨立,但也存在相互之間的數據查詢、交換。例如,銷售系統需要查詢庫存產品的規格、數量的信息;財務結算系統需要查詢銷售統計情況,并將查詢到的信息存儲到本系統中。這就向我們提出了不同數據庫之間數據交換的問題。
2 數據轉換系統的分析
該工廠的ERP系統項目中,既要考慮集成現有的系統,又要考慮為未來發展網上電子商務提供擴展。對于前者,現有的系統無法簡單地采用替換的方式。如,引進生產線時就有一套生產的管理系統,包括產品庫存管理,它與生產線不可分離,而且功能完善,不可能也沒必要使用其它系統取而代之,ERP系統要充分利用這些資源。對于后者,廣鋼集團總部已初步建立電子商務平臺,未來集團內部的結算將通過此平臺完成,與外部貿易伙伴的銷售、采購等業務也將逐步移到此平臺上進行。電子商務是廣鋼集團發展的重點戰略之一。
基于此背景,該ERP系統需要一個通用的數據轉換軟件,以實現內部和外部的數據交流。數據轉換系統就是這樣一個軟件,它實現XML和數據庫之間的數據交換,利用它能完成以下任務:1)從數據庫中生成XML文檔。2)將接收到的XML文檔存入關系數據庫中。通過標準格式的XML文檔作為公共的傳輸介質,實現不同數據庫間的數據交互。
系統分析示意圖如圖1。
其中要解決的主要問題:1)定義或生成用于交互的XML表單;2)數據轉換方式的研究和實現(關系模式和XML模式的相互映射)。
2.1 提取用于數據交換的XML標準文檔
通常情況下我們在編寫XML文檔時用到什么標記就創建什么標記,沒有對這種標記和標記間依賴關系進行定義。這樣作為文檔的創作者可能會非常清楚標記的意義和標記間的依賴關系,但作為文檔的使用者或處理該文檔的程序而言就不明其義了。對于數據交換來說,最重要的是數據交換的雙方要有一個統一的數據格式,只有采用統一的數據格式,才能實現數據的自動流轉、處理等功能。其中每一個系統都將其內部的數據轉換成行業標準的基于XML的數據格式,這樣就可以實現不同系統之間的數據交換。
2.2 關系模式與XML模式相互轉換腳本
要在商業MIS之間交換數據,必須先在XML文檔和數據庫之間轉換數據,把XML模式映射到數據庫模式和把數據庫模式映射到XML模式。
解決XML模式和數據庫模式相互映射問題,有兩種途經:基于表格的映射和基于關系-對象的映射(第四章)。這里采用基于表格的映射來解決XML模式和數據庫模式相互映射問題。對于每一個具體的關系模式與XML模式之間的相互轉換,都要編寫一個轉換腳本,對于具體某個關系數據庫,依據表單DTD(或XML Schema),定義從關系模式到XML模式的轉換腳本,和從XML模式到關系模式的轉換腳本。
轉換方法示意圖如圖2。
在轉換腳本中嵌入預定義的查詢語句(基于模板的查詢),由數據轉換構件執行查詢語句得到表格式的數據,然后再使用轉換腳本的轉換規則將表格式的數據轉換為結構化的XML文檔數據。
2.3 基于XML的數據轉換構件
在定義了數據轉換腳本之后,數據轉換構件使用這些轉換腳本在關系數據庫和XML文檔之間相互轉換數據。
在數據交換中使用表單XML文檔的問題并不是簡單地共享一個表單模式,在貿易合作伙伴間按照模式發送表單。貿易合作伙伴間的數據庫是異構的:發送的表單是多樣的,因此有必要定義一個關系模式與一種表單XML文檔之間的轉換腳本,并調用數據轉換構件的相應接口,通過深度遍歷轉換腳本,逐個分枝拓展創建,最終完成整個XML文檔的DOM樹的創建,實現廣度的實體關系到深度的實體關系的映射,能夠從關系數據庫中提取出發送給任何貿易合作伙伴的表單XML文檔。通過使用轉換腳本能實現發送或接收的單據模式本地化。
3 系統實現
3.1 數據轉換構件的實現
對于XML文檔,數據轉換構件是通過DOM(文檔對象模型)讀取XML文檔中的節點。DOM是最基本也是最底層的XML存取技術,它是W3C推薦的一種技術標準,實際上是提供一組API來存取XML數據。在數據轉換構件中,具體的XML模式與關系模式的數據轉換需要涉及較為復雜XML格式分析處理及數據庫操作和有效性的校驗。
數據轉換構件驗證XML數據合法性的過程:在C/S環境中,客戶機和服務器都可以使用Schema來驗證文檔。在客戶機端驗證的主要對象是轉換腳本,在服務器端驗證的主要對象是發來的XML文檔。相對客戶端而言在服務器端驗證的意義更重大,在實際應用中也更為常見。由于連接到服務器上的客戶數是很多的,所以有必要在處理客戶端發送來的數據之前,先檢驗接到的數據是否與預期的結構一致。驗證的步驟如下:將XML文檔載入DOM樹;判斷是否連接DTD(只需驗證根元素是否設置了xmlns屬性);如果沒有連接,服務器就要依據XML文檔類型指定一個DTD進行連接,然后將更新的文檔重新載入到另一個DOM樹中,進行驗證。
3.2 數據類型的轉換
數據轉換構件負責把XML文件中的文本轉換成數據庫中的數據類型,反之亦然。轉換的方法是數據轉換構件根據數據庫模型來確定數據類型。
3.3 空值(1)的轉換
在數據庫中,空值意味著沒有數據,這和值為0的數字或長度為零的字符串區別很大。XML文件中通過可選元素或屬性支持這種空值的概念,如果一個可選元素或屬性的值為空,就不會包含在文件內。將XML文檔的結構映射到數據庫(或反過來)時,可選元素類型或[空值]屬性會被映射到允許空值的字段,如果不是這樣的話,可能會產生插入錯誤(當轉換數據到數據庫時)或非法文件錯誤(從數據庫中取出數據時)。
在集成ERP系統中,數據轉換構件針對的是具體應用的領域,數據庫的數據模式和XML文檔的結構都有清晰的定義,數據類型確定,對于XML文檔中的注釋、處理指令、標記等等采用忽略的方法。
4 結論
本文重點討論了利用XML作為媒介實現異構數據庫數據交換的方法,詳細描述了提取標準表單XML文檔的方法,描述了編寫XML文檔和關系數據庫之間數據轉換的轉換腳本的方法,設計了構件的功能和結構,以及描述關鍵算法的實現。
數據轉換構件和各種轉換的腳本目前在該工廠ERP系統中應用,實現了數據庫與XML文檔之間數據相互轉換的目的,由于轉換腳本是容易編寫和維護的,未來單據的變化通過更改轉換腳本就能適應新的環境,因此提高了整個系統的可維護性。又由于該工廠的ERP系統是基于XML文檔進行數據交換的,未來與外部合作企業之間的交流將更加容易,因此提高了系統的可擴展性。
數據轉換構件的功能是在該工廠的ERP系統環境下實現的,證明了其可行性。為了達到數據轉換構件對不同數據庫的適應性以及提高通用性,計劃進一步研究基于ODBC接口的可擴展的XML數據庫交互構件。
參考文獻:
[1] 雷劼.TPT的ERP系統實施.(內部文件).2004.
[2] 張維明.語義信息模型及應用[M].北京: 電子工業出版社.2002.
[3] xml中國論壇.xml初學進階. http://www.xml.net.cn
[4] 蔡希堯、陳平.面向對象技術[M].西安電子科技出版社.1995.
[5] 張曉東等.Java數據庫高級教程[M].北京:清華大學出版社.2004.
[6] Microsoft.ADO.NET結構. http://www.msdn.Microsoft.com.
[7] Didier Maitin.XML高級編程[M].北京:機械工業出版社.2001.
[8] 朱三元、錢樂秋、宿為民.軟件工程技術概論[J].北京:科學出版社.2002.
[9] David Carson.XML應用的UML建模技術[M].北京: 清華大學出版社.2003.
[10] 阿捷.XML輕松學習手冊(5)XML語法. http://www.pconline.com.cn.
[11] 楊芙清、梅宏、李克勤.軟件復用與軟件構件技術[J].電子學報.1999,27(2).
[12] Ronald Bourret.XML與數據庫. http://www.rpbourret.com.