甘 屹,張雪梅
(上海理工大學 機械工程學院,上海 200093)
產(chǎn)品在網(wǎng)絡化制造的生產(chǎn)、管理、銷售等過程中產(chǎn)生的數(shù)據(jù)信息,以多種格式存儲在數(shù)據(jù)庫中。關(guān)系數(shù)據(jù)庫(Relational Database,RDB)具有諸多的優(yōu)點,比如對數(shù)據(jù)操作速度快、并發(fā)訪問控制好、安全性好等。因此,RDB在網(wǎng)絡化制造的信息管理中占有很重要的位置。但是,基于RDB的應用系統(tǒng)之間進行相互訪問時,需要復雜的專用數(shù)據(jù)訪問接口,并且RDB中的數(shù)據(jù)不能直接應用到Internet環(huán)境中。隨著Internet技術(shù)的高速發(fā)展,在數(shù)據(jù)交換方面,可擴展標記語言 (Extensible Markup Language,XML)[1]具有自描述性、可擴展性等優(yōu)勢,適合作為在Internet環(huán)境下的數(shù)據(jù)描述標準與異構(gòu)應用之間的數(shù)據(jù)交換載體的角色。但是XML缺乏類似于RDB的有效數(shù)據(jù)管理手段,并且存在著數(shù)據(jù)管理困難、操作效率低、安全性差等隱患??梢钥闯觯琗ML和RDB在數(shù)據(jù)應用和數(shù)據(jù)管理方面具有相輔相成、優(yōu)勢互補的關(guān)系[2~4]。因此,以RDB作為企業(yè)制造信息的存儲手段,用XML作為數(shù)據(jù)管理方式的交換載體就成為一種趨勢。
一般來說,以RDB儲存的網(wǎng)絡化制造信息要滿足各種業(yè)務處理的需求,并不是特地為XML的應用所設計的。RDB的數(shù)據(jù)結(jié)構(gòu)相對比較固定,不會有經(jīng)常性的調(diào)整。而XML作為數(shù)據(jù)發(fā)布的一種手段,其擴展性很強,數(shù)據(jù)組織的變化也相對比較頻繁。因此,XML和RDB的集成也存在著一定的復雜性。對于網(wǎng)絡化制造中產(chǎn)品設計數(shù)據(jù),本文研究基于XML實現(xiàn)異構(gòu)RDB數(shù)據(jù)格式的轉(zhuǎn)換,并保持轉(zhuǎn)換前后數(shù)據(jù)的語義約束。
XML主要關(guān)注數(shù)據(jù)的傳輸和存儲,對數(shù)據(jù)如何顯示卻沒有限制。本文采用XML數(shù)據(jù)描述方式對一款家用舉升裝置產(chǎn)品的設計數(shù)據(jù)傳遞和轉(zhuǎn)換過程進行描述。其中,舉升裝置設計模型的XML文檔第一部分主要描述產(chǎn)品的設計參數(shù),如舉升裝置的工作原理、功能、性能和外觀等。舉升裝置設計模型的XML文檔第二部分則描述了舉升裝置的結(jié)構(gòu),如關(guān)鍵的裝配件、零件、裝配關(guān)系等。舉升裝置設計模型的XML文檔第三部分體現(xiàn)產(chǎn)品開發(fā)與使用的環(huán)境約束,以及舉升裝置材料等。舉升裝置設計模型的XML信息描述要素如下所示:
在需求分析基礎上,通過概念設計、詳細設計,該舉升裝置的詳細設計采用螺旋式舉升結(jié)構(gòu),其裝配爆炸圖如圖1所示。
圖1 舉升裝置爆炸圖
由于XML具有自定義性和可擴展性,可根據(jù)需求由企業(yè)自由定制,形成針對各行業(yè)特點的不同標記集。在基于XML的RDB數(shù)據(jù)交互過程中,首先定義相應的XML元素及它們的屬性,然后根據(jù)這些元素和屬性制定一份XML接口規(guī)范,并向外界公布。外界根據(jù)這個預先定義好的規(guī)范,組織相應的XML文檔實現(xiàn)對RDB信息的訪問。由于XML文檔和RDB的表達方式不相同,需要利用XML轉(zhuǎn)換器實現(xiàn)兩個RDB之間的信息交換。首先將信息從源RDB轉(zhuǎn)移到XML文檔,再將信息從XML文檔轉(zhuǎn)移到目的RDB。XML數(shù)據(jù)信息的交互過程如圖2所示。為了使信息能夠順利地在RDB和XML文檔之間轉(zhuǎn)移,需要將RDB數(shù)據(jù)結(jié)構(gòu)與XML文檔之間相互映射。
RDB數(shù)據(jù)到XML文檔的映射是指將用戶從RDB中所提取的數(shù)據(jù)信息轉(zhuǎn)換成XML文檔的結(jié)構(gòu)形式保存在XML的文檔中。通常,RDB的數(shù)據(jù)到XML文檔的映射規(guī)則為:表→元素,列→屬性。通過使用元素標記與屬性標記,使得XML文檔的內(nèi)容具有可識別性。元素標記與屬性標記是用戶自定義的,對它們的描述都存放在XML Schema模式文件[5]中,以定義XML文檔的結(jié)構(gòu),還可以規(guī)范文檔的內(nèi)容。元素標記與屬性標記在XML文檔中成對出現(xiàn)。屬性標記嵌套在元素標記中,標明從關(guān)系表中獲得的字段信息。例如,從RDB中查詢關(guān)于舉升裝置的各部件基本數(shù)據(jù)信息,并把數(shù)據(jù)信息映射到XML文檔中,描述要素如下:
圖2 XML數(shù)據(jù)信息交互過程圖
XML文檔到RDB數(shù)據(jù)的映射是指根據(jù)XML文檔的結(jié)構(gòu)形式,提取其中數(shù)據(jù)信息存儲到RDB中。在此過程中,需要采用XML 文檔對象模型(XML Document Object ModelXML,DOM)[6]對XML文檔進行解析和定位。XML DOM能使用戶把文檔看作是一個有結(jié)構(gòu)的信息樹,而并不是簡簡單單的文本流。例如,在XML文檔里提取舉升裝置各零件的基本數(shù)據(jù)信息,XML DOM將該XML文檔轉(zhuǎn)換成DOM樹,如圖3所示。這樣,對信息的檢索就變成了對信息樹的遍歷。當RDB接收到XML文檔后,它會根據(jù)XML Schema文件的定義以信息樹的結(jié)構(gòu)形式對XML文檔進行遍歷,并將XML文檔中的內(nèi)容更新到關(guān)系數(shù)據(jù)庫中。
圖3 XML文檔轉(zhuǎn)換的DOM樹
在網(wǎng)絡化制造中,時常會碰到RDB中存在數(shù)據(jù)表達方面的差異,例如一些關(guān)系表中字段的命名,數(shù)據(jù)類型等。這些差異將會對RDB之間進行數(shù)據(jù)信息共享和交互造成困難。采用XML轉(zhuǎn)換器可以解決數(shù)據(jù)庫之間數(shù)據(jù)信息交互的問題。因為每個XML文檔的Schema定義了相對應XML文檔的結(jié)構(gòu)、元素、標記和屬性等信息,這些差異在XML文檔中就體現(xiàn)了XML與Schema的不同。通過在Schema之間建立 則,使得XML文檔之間數(shù)據(jù)信息交互更 快速。例如,在舉升裝置中有A、B兩個XML文檔中對螺旋螺絲的某個屬性有不同的名稱,如表1所示。
圖5 舉升裝置需求信息XML結(jié)構(gòu)圖
表1 A、B文檔中屬性名稱的差異
可以看出,它們之間的結(jié)構(gòu)存在著一定的差異。設置A文檔定義的“內(nèi)直徑”與B文檔定義的“內(nèi)孔直徑”存在著映射關(guān)系,那么這兩個文檔之間的信息就會變得相互透明。
本文開發(fā)了基于B/S三層架構(gòu)的、采用JSP和SQL Server技術(shù)、通過網(wǎng)絡動態(tài)實現(xiàn)產(chǎn)品設計數(shù)據(jù)轉(zhuǎn)換應用系統(tǒng)。系統(tǒng)通過網(wǎng)頁添加產(chǎn)品設計信息,生成數(shù)據(jù)集成規(guī)范定義下的XML數(shù)據(jù)格式文檔,以便于各異構(gòu)數(shù)據(jù)源之間進行數(shù)據(jù)共享。圖4為客戶端的用戶需求信息(Customer Requirement Information, CRI)調(diào)查界面,用于收集到某一產(chǎn)品全面的CRI。
網(wǎng)頁上的信息通過后臺程序處理,轉(zhuǎn)化為XML數(shù)據(jù)格式類型,需要有相應的級聯(lián)樣式表(Cascading Style Sheet,CSS)來對輸出的格式進行約束。但是,在動態(tài)生成XML文檔的過程中,根元素標記是系統(tǒng)固定的,而CSS具有子元素自動繼承父元素屬性的特性,那么只要定義了根元素的顯示格式,就不必再考慮每一個標記的具體定義,只要在生成的XML文檔開頭部分包含CSS聯(lián)接聲明就可以了。舉升裝置的需求信息XML Schema文件對應的結(jié)構(gòu)圖如圖5所示。將圖5中XML信息通過后臺處理,提取相關(guān)的屬性信息,存入RDB中,其數(shù)據(jù)形式如圖6所示。
圖4 系統(tǒng)客戶端CRI調(diào)查界面
圖6 數(shù)據(jù)庫中產(chǎn)品需求信息
網(wǎng)絡化制造信息管理中RDB占有很重要的位置。但是異構(gòu)RDB的應用系統(tǒng)之間需要復雜的專用數(shù)據(jù)訪問接口,以RDB儲存的網(wǎng)絡化制造信息在異構(gòu)系統(tǒng)之間難以進行數(shù)據(jù)交換。XML適合完成在Internet環(huán)境下的數(shù)據(jù)描述標準與異構(gòu)應用之間的數(shù)據(jù)交換的工作。XML和RDB在數(shù)據(jù)應用和數(shù)據(jù)管理方面具有相輔相成、優(yōu)勢互補的關(guān)系。
對于網(wǎng)絡化制造中產(chǎn)品設計數(shù)據(jù),本文采用元素標記與屬性標記,使得XML文檔的內(nèi)容具有可識別性,實現(xiàn)RDB數(shù)據(jù)到XML文檔的映射;采用XML DOM技術(shù)將XML文檔轉(zhuǎn)換成DOM樹,實現(xiàn)XML文檔到RDB數(shù)據(jù)的映射;設置XML文檔間的映射關(guān)系,實現(xiàn)兩個XML文檔間數(shù)據(jù)信息的交互。本文設計開發(fā)了產(chǎn)品設計數(shù)據(jù)轉(zhuǎn)換應用系統(tǒng),通過網(wǎng)絡實現(xiàn)產(chǎn)品設計數(shù)據(jù)集成規(guī)范定義下的XML數(shù)據(jù)格式文檔,以及異構(gòu)RDB數(shù)據(jù)格式的轉(zhuǎn)換。
[1] T Bray.J Paoli.C MSperberg.Mcqueen.eXtensible Markup Language(XML)1.O[EB/OL].http://www.w3.orgmg/REC-XML.
[2] 王巍.基于XML的制造信息格式轉(zhuǎn)換技術(shù)研究[D].武漢理工大學, 2009.
[3] 胡萍.基于XML的產(chǎn)品數(shù)據(jù)集成研究[J].煤礦機械.2008, 29(11): 211-212.
[4] 唐紅杰.基于XML異構(gòu)數(shù)據(jù)集成的研究與實現(xiàn)[D].大連交通大學, 2007.
[5] 林楠, 孟飚, 范玉青, 等.XML在企業(yè)制造過程信息集成中的應用[J].制造業(yè)自動化.2007, 29(4): 11-15, 51.
[6] 顧韻華, 田偉.基于DOM模型擴展的Web信息提取[J].計算機科學.2009, 36(11): 235-237, 289.