張運(yùn)森,劉保國
(1.機(jī)械工業(yè)第六設(shè)計研究院有限公司,河南鄭州 450007)
(2.河南工業(yè)大學(xué)機(jī)械電子工程研究所,河南鄭州450052)
STEP與XML轉(zhuǎn)換系統(tǒng)設(shè)計與實(shí)現(xiàn)
張運(yùn)森1,劉保國2
(1.機(jī)械工業(yè)第六設(shè)計研究院有限公司,河南鄭州 450007)
(2.河南工業(yè)大學(xué)機(jī)械電子工程研究所,河南鄭州450052)
通過研究現(xiàn)有STEP格式數(shù)據(jù)與XML文檔轉(zhuǎn)換實(shí)現(xiàn)方法,構(gòu)建了一種STEP與XML格式數(shù)據(jù)之間新的轉(zhuǎn)換系統(tǒng)模型及實(shí)現(xiàn)方案,給出了基于Java早聯(lián)編實(shí)現(xiàn)SDAI,以及后期綁定實(shí)現(xiàn)EXPRESS與XML Schema映射的實(shí)現(xiàn)方法,并設(shè)計了STEP與XML格式數(shù)據(jù)轉(zhuǎn)換系統(tǒng)開發(fā)環(huán)境及具體實(shí)現(xiàn)過程,開發(fā)的針對STEP中性文件的轉(zhuǎn)換程序驗證了轉(zhuǎn)換系統(tǒng)模型和實(shí)現(xiàn)方法的可行性。
STEP;XML;數(shù)據(jù)轉(zhuǎn)換;網(wǎng)絡(luò)制造
STEP格式數(shù)據(jù)向XML文檔轉(zhuǎn)換的轉(zhuǎn)換系統(tǒng)設(shè)計是解決STEP與XML相結(jié)合實(shí)現(xiàn)網(wǎng)絡(luò)制造異構(gòu)平臺間產(chǎn)品數(shù)據(jù)共享和集成的關(guān)鍵技術(shù)之一[1]。目前,國外很多研究機(jī)構(gòu)對STEP格式文件向XML文檔轉(zhuǎn)換的轉(zhuǎn)換系統(tǒng)設(shè)計進(jìn)行了研究,如STEP Tools公司的STEP Developer最新版本中加入了對STEP與XML轉(zhuǎn)換的支持。國內(nèi)用到的STEP與XML轉(zhuǎn)換系統(tǒng)基本是從國外引進(jìn)的研究結(jié)果,現(xiàn)有的轉(zhuǎn)換系統(tǒng)在實(shí)際使用中發(fā)現(xiàn)了許多弊端,這些轉(zhuǎn)換系統(tǒng)都是根據(jù)國外已經(jīng)成熟的網(wǎng)絡(luò)制造模式來設(shè)計的,設(shè)計的適用模式都是以國外企業(yè)操作流程和模式來制定,與國內(nèi)眾多企業(yè)還存在很大的差異,使用起來也不便利。因此,如果國內(nèi)的設(shè)計制造行業(yè)開發(fā)自己的轉(zhuǎn)換系統(tǒng),就有必要在STEP與XML數(shù)據(jù)轉(zhuǎn)換技術(shù)上展開深入研究[2]。
1.1 國內(nèi)現(xiàn)有的一種轉(zhuǎn)換實(shí)現(xiàn)方法
這種轉(zhuǎn)換方法首先通過對CAD軟件(如Pro/E等)生成的一些基本圖形的STEP文件進(jìn)行人工分析,獲得STEP物理文件的結(jié)構(gòu)、格式、語法以及語義的分析結(jié)果,建立STEP語法規(guī)則。然后,應(yīng)用編譯技術(shù)對導(dǎo)入的STEP文件按字符形式進(jìn)行詞法分析、語法分析以及語義分析,獲取STEP數(shù)據(jù)[3]。最后,把實(shí)際分析結(jié)果應(yīng)用到 EXPRESS(ISO10303-11)與XML映射機(jī)制,對XML文檔的結(jié)構(gòu)和語法語義進(jìn)行定義,建立起STEP實(shí)例與XML元素的對應(yīng)關(guān)系,從而生成XML文檔。該轉(zhuǎn)換系統(tǒng)實(shí)現(xiàn)過程如圖1所示。
圖1 STEP/XML轉(zhuǎn)換系統(tǒng)框架
雖說這種方法可以實(shí)現(xiàn)特定應(yīng)用情況下CAD圖形數(shù)據(jù)的STEP格式向XML轉(zhuǎn)換,但是它存在很多缺陷,主要有:(1)只支持STEP中性文件存儲形式的圖形數(shù)據(jù)向XML轉(zhuǎn)換,并且沒辦法擴(kuò)充對其他應(yīng)用協(xié)議和數(shù)據(jù)存儲形式的支持。(2)編譯技術(shù)是用來將高級語言向低級語言轉(zhuǎn)換的,并不適合用來處理標(biāo)記語言之間的轉(zhuǎn)換,編譯程序的處理過程非常復(fù)雜,實(shí)現(xiàn)起來效率非常低。
1.2 STEP與XML轉(zhuǎn)換系統(tǒng)框架模型及實(shí)現(xiàn)方案
在綜合分析實(shí)現(xiàn)STEP和XML轉(zhuǎn)換的基本原理和現(xiàn)有實(shí)現(xiàn)方法的基礎(chǔ)上,本文提出一種針對STEP的應(yīng)用協(xié)議AP203(三維產(chǎn)品形狀表示和配置控制設(shè)計),在基于SDAI實(shí)現(xiàn)對STEP數(shù)據(jù)操作的基礎(chǔ)上,實(shí)現(xiàn)STEP與XML轉(zhuǎn)換的方法。圖2所示為該實(shí)現(xiàn)方案的系統(tǒng)框圖。
圖2 STEP與XML轉(zhuǎn)換系統(tǒng)框架模型
該轉(zhuǎn)換系統(tǒng)的實(shí)現(xiàn)主要分兩大部分:一部分是實(shí)現(xiàn)SDAI,對STEP產(chǎn)品數(shù)據(jù)進(jìn)行相應(yīng)的操作處理,提取STEP實(shí)例數(shù)據(jù);另外一部分是建立特定EXPRESS數(shù)據(jù)模型到XML Schema/DTD(Document Type Definition,即文檔類型定義)的映射,該XML Schema/DTD作為生成XML文檔的文檔結(jié)構(gòu)以及校驗?zāi)P?。在?shí)現(xiàn)映射的基礎(chǔ)上,通過SDAI把STEP文件或數(shù)據(jù)庫中各實(shí)例的相關(guān)產(chǎn)品數(shù)據(jù)(作為XML文檔中的元素)提取出來,賦給中間變量保存;然后,利用XML編程接口(SAX技術(shù)),再根據(jù)定義好的DTD/Schema,結(jié)合提取到的STEP實(shí)例數(shù)據(jù)來創(chuàng)建XML文檔。整個過程建立在相互映射的基礎(chǔ)上,是一個可逆的過程,表達(dá)STEP數(shù)據(jù)的XML文檔也可以轉(zhuǎn)換為STEP格式數(shù)據(jù)存儲。
這種實(shí)現(xiàn)方法的優(yōu)點(diǎn)在于:SDAI能屏蔽產(chǎn)品數(shù)據(jù)的不同物理存儲方式之間的區(qū)別。采用SDAI,應(yīng)用系統(tǒng)的設(shè)計便能獨(dú)立于STEP標(biāo)準(zhǔn)采用的所有數(shù)據(jù)存貯管理系統(tǒng)。這樣,任何符合STEP標(biāo)準(zhǔn)的系統(tǒng)之間都能進(jìn)行數(shù)據(jù)交換,進(jìn)而實(shí)現(xiàn)數(shù)據(jù)共享。通過這種方式,那些基于SDAI的應(yīng)用系統(tǒng)(如CAD、CAM、PDM)的開發(fā)可以不考慮底層的數(shù)據(jù)存儲形式(不論是關(guān)系型數(shù)據(jù)庫、面向?qū)ο髷?shù)據(jù)庫或STEP文件系統(tǒng)),若底層的數(shù)據(jù)存儲形式發(fā)生更換,應(yīng)用系統(tǒng)也無需做大的修改,提高了應(yīng)用系統(tǒng)的可移植性。
2.1 基于某種聯(lián)編語言實(shí)現(xiàn)SDAI
目前有基于C、C++和Java語言的SDAI實(shí)現(xiàn)手段,其中Java語言是網(wǎng)絡(luò)計算時代的程序設(shè)計語言,具有對網(wǎng)絡(luò)更好的支持。本文的研究內(nèi)容基于網(wǎng)絡(luò)制造大環(huán)境下的應(yīng)用,采用Java語言,可以為后續(xù)開發(fā)奠定更好的基礎(chǔ)。根據(jù)標(biāo)準(zhǔn)對SDAI的定義,基于Java的SDAI實(shí)現(xiàn)主要包括三方面的內(nèi)容:EXPRESS語言與Java語言的語言聯(lián)編,SDAI操作的定義,面向支持系統(tǒng)的SDAI操作實(shí)現(xiàn)。
實(shí)現(xiàn)語言聯(lián)編,關(guān)鍵是將EXPRESS模式中的元素(schema、實(shí)體、屬性、簡單數(shù)據(jù)類型、定義數(shù)據(jù)類型、聚合數(shù)據(jù)類型,以及常數(shù)、函數(shù))映射到Java[4]。其中,EXPRESS 實(shí)體映射主要是將 EXPRESS實(shí)體及各自實(shí)體屬性的存取方法映射到相應(yīng)的Java類和接口。下面給出按早聯(lián)編方法定義的EXPRESS主要元素——實(shí)體到Java的映射。
a.實(shí)體映射到Java。
為了支持EXPRESS模型中的多繼承語義,實(shí)現(xiàn)映射時將EXPRESS模型中的每一個Entity映射為一個Java接口和一個對應(yīng)的實(shí)現(xiàn)類,該接口為實(shí)體的每一個顯示屬性產(chǎn)生兩個讀取方法:set<attribute>和get<attribute>。本文將每一個EXPRESS實(shí)體“xxx”映射為一個 Java接口“EXxx”,一個Java類“CXxx”及一個附加的Java類“AXxx”用于包含這個實(shí)體的實(shí)例的集合。
b.實(shí)體數(shù)據(jù)類型到Java的映射。
實(shí)體數(shù)據(jù)類型按如下法則映射到Java:(1)通過帶“E”前綴的Java接口去表達(dá)實(shí)體數(shù)據(jù)類型,例如“EXxx”;(2)通過以“C”前綴開頭的Java類表達(dá)復(fù)合實(shí)體數(shù)據(jù)類型,如“CXxx”;(3)多重實(shí)體數(shù)據(jù)類型用“&”分割;(4)通過帶“A”為前綴的Java類表達(dá)實(shí)體數(shù)據(jù)類型的集合,如“AXxx”。
定義所有EXPRESS元素與Java的映射之后,參考STEP Part22標(biāo)準(zhǔn),將本文創(chuàng)建的EXPRESS模式對應(yīng)類和接口繼承自SDAI基礎(chǔ)類庫——JSDAI的基礎(chǔ)類和接口,并根據(jù)自定義規(guī)則使用JSDAI ExpressCompiler編譯器工具生成,實(shí)現(xiàn)訪問該EXPRESS模式所對應(yīng)STEP文件的SDAI接口,實(shí)現(xiàn)EXPRESS語言與Java語言的語言聯(lián)編。
由于讀寫STEP文件的操作主要針對AP203協(xié)議來實(shí)施,因此在使用JSDAI實(shí)現(xiàn)產(chǎn)品數(shù)據(jù)操作時,導(dǎo)入相應(yīng)的 jsdai.SConfig_control_design包。其中包含了關(guān)于AP203協(xié)議中的各種映射,通過這種映射可以獲取對于產(chǎn)品描述的各個部分的信息。對于STEP中性文件,可以通過打開一個SDAI文件存儲,將 STEP Part21文件讀入,并將 Part21文件中的每一個實(shí)例數(shù)據(jù)映射成一個Java SDAI早聯(lián)編類的實(shí)例。
2.2 實(shí)現(xiàn)EXPRESS與XML的映射
進(jìn)行EXPRESS與XML映射的關(guān)鍵是要確定所要采用的實(shí)現(xiàn)方式。STEP Part28標(biāo)準(zhǔn)推薦了兩種STEP到XML的映射方法:前期綁定和后期綁定[5]。下面通過一個實(shí)例對它們進(jìn)行具體分析。
a.在前期綁定映射中,XML的標(biāo)記與 EXPRESS數(shù)據(jù)模型中的數(shù)據(jù)類型及其屬性直接對應(yīng)。
例如,針對如下的一個矩形(rectangle)的EXPRESS定義,實(shí)體矩形(rectangle)由一個id值和兩個屬性值width/height組成:
b.在后期綁定中,XML的標(biāo)記不直接與EXPRESS數(shù)據(jù)模型中的數(shù)據(jù)類型對應(yīng),而是直接與EXPRESS的元數(shù)據(jù)對象(包括實(shí)體,屬性,數(shù)據(jù)類型)相對應(yīng)[3]。
上述EXPRESS模型若利用后期綁定,生成的XML文檔為:
由以上對比可知,EXPRESS到XML的后期綁定映射更適合應(yīng)用于含多個EXPRESS信息模型的XML交換應(yīng)用中,在這樣的環(huán)境下,如果采用前期綁定策略,就必須為每一個EXPRESS模型設(shè)計不同的XML標(biāo)記集(即要為每個EXPRESS模型設(shè)計不同的DTD/Schema),這會使實(shí)現(xiàn)復(fù)雜化。因此雖然前期綁定比后期綁定表示形式更為精煉,處理更簡單,為了使異構(gòu)平臺之間包含多個EXPRESS模型的產(chǎn)品數(shù)據(jù)交換系統(tǒng)具有很好的通用性和可移植性,應(yīng)當(dāng)采用后期綁定方式。在確定了EXPRESS數(shù)據(jù)模型與XML的綁定方法之后,就可以根據(jù)Part28標(biāo)準(zhǔn)規(guī)定,實(shí)現(xiàn)EXPRESS與XML的映射。
由于XML文檔與EXPRESS數(shù)據(jù)模型在數(shù)據(jù)結(jié)構(gòu)定義方面非常相似,可以利用EXPRESS映射得到標(biāo)記或定義新的標(biāo)記來描述產(chǎn)品數(shù)據(jù),并用相應(yīng)的XML Schema定義產(chǎn)品數(shù)據(jù)文檔,實(shí)現(xiàn)STEP和XML之間的映射[2]。在創(chuàng)建完Schema,成功確定XML文檔的結(jié)構(gòu)后,就可以把提取出來的STEP文件中的實(shí)體數(shù)據(jù)轉(zhuǎn)換成對應(yīng)的XML元素,最后按照Schema確定的XML文檔結(jié)構(gòu)生成XML文件,完成STEP到XML的轉(zhuǎn)換。
3.1 實(shí)現(xiàn)過程
系統(tǒng)實(shí)現(xiàn)選擇在 Eclipse平臺上進(jìn)行,將JSDAI工具包集成到Eclipse,并加入相應(yīng)類用于在SAX(XML簡單API)以及SDAI之間傳遞STEP實(shí)體實(shí)例數(shù)據(jù),整合JSDAI和XML操作,搭建集成開發(fā)環(huán)境。整個實(shí)現(xiàn)流程如圖3所示。
圖3 STEP-XML數(shù)據(jù)轉(zhuǎn)換流程示意圖
首先通過EXPRESS Complier按早聯(lián)編的方法編譯符合AP203協(xié)議的特定STEP中性文件的EXPRESS模式,生成對應(yīng)模式的相關(guān)類和接口;然后編制處理STEP中性文件的處理程序完成對文件的讀取等操作。其中,SDAIModel用于組織基于一個該模式的實(shí)體實(shí)例,以便程序需要時能訪問模型的任何實(shí)體實(shí)例;SDAIRepository用于導(dǎo)入該AP203中性文件,該文件以命令行的形式被指定到一個特定的資源庫[6]。隨后,將讀取的實(shí)例數(shù)據(jù)通過JSDAI與XML連接接口傳遞給SAX。另一方面,根據(jù)后期綁定的映射規(guī)則將EXPRESS模式對應(yīng)生成XML Schema文檔。之后利用SAX生成相應(yīng)的XML文檔。其中虛線部分是逆轉(zhuǎn)換,在此不再贅述。按此過程,本文編制程序?qū)崿F(xiàn)了針對特定EXPRESS模式的STEP中性文件與XML文檔的轉(zhuǎn)換。
3.2 轉(zhuǎn)換實(shí)例
下面結(jié)合實(shí)際工程設(shè)計模型來驗證轉(zhuǎn)換方法和實(shí)現(xiàn)過程。著名CAD軟件Pro/E提供了對AP203應(yīng)用協(xié)議的支持,圖4所示是Pro/E建立的帶階梯孔的四方體模型圖對應(yīng)的STEP中性文件部分代碼。
圖4 Pro/E產(chǎn)生的STEP文件
轉(zhuǎn)換程序?qū)?yīng)生成的XML文檔應(yīng)用IE瀏覽的效果,如圖5和圖6所示。
圖5 XML文檔的頭部段部分顯示
圖6 XML文檔的數(shù)據(jù)段部分顯示
本文給出的轉(zhuǎn)換系統(tǒng)實(shí)現(xiàn)方案通用性強(qiáng),為實(shí)現(xiàn)STEP與XML之間產(chǎn)品數(shù)據(jù)轉(zhuǎn)換提供了一種新的解決方法,為轉(zhuǎn)換系統(tǒng)設(shè)計提供了一定的技術(shù)支持。但是,目前的研究工作僅通過較為簡單的實(shí)例來驗證實(shí)現(xiàn)方案的可行性,要真正在實(shí)踐中體現(xiàn)其價值,還需要進(jìn)行后續(xù)XML數(shù)據(jù)的處理以及進(jìn)一步完善對復(fù)雜數(shù)據(jù)模型的支持,更大范圍地對STEP標(biāo)準(zhǔn)中的相關(guān)協(xié)議進(jìn)行映射。
[1]李玉中,奚建清,陳澤琳.基于STEP與XML相結(jié)合的虛擬制造數(shù)據(jù)模型研究[J].制造業(yè)自動化,2004,26(6):15 -19.
[2]郝永平,謝來勇,邵偉平,等.基于XML的產(chǎn)品信息模型網(wǎng)絡(luò)轉(zhuǎn)換技術(shù)研究[J].計算機(jī)工程與應(yīng)用,2005,41(35):82 -84.
[3]仇嘵黎,易紅,吳錫英.XML在基于STEP的產(chǎn)品數(shù)據(jù)表達(dá)中的應(yīng)用[J].計算機(jī)集成制造系統(tǒng),2003,9(6):489-492.
[4]黃忠東,楊小虎,董金祥.SDAI實(shí)現(xiàn)中若干關(guān)鍵技術(shù)的研究[J].計算機(jī)輔助設(shè)計與圖形學(xué)學(xué)報,2001,13(11):977-982.
[5]張運(yùn)森,劉保國,劉珂.基于XML與STEP的產(chǎn)品數(shù)據(jù)描述及轉(zhuǎn)換技術(shù)研究[J].制造業(yè)自動化,2009,31(3):36 -38.
[6]ISO 10303 Editing Committee.ISO TC184/SC4.10303 -28.Part 28 Implementation methods:XML representations of EXPRESS schemas and data[S],2007.
Design and Implementation of Conversion System for STEP and XML
ZHANG Yunsen1,LIU Baoguo2
(1.SIPPR Engineering Group Co.,Ltd.,Henan Zhengzhou,450052,China)
(2.Henan University of Technology,Henan Zhengzhou,450052,China)
Based on research of the existing realization conversion method between STEP data and XML document,it proposes a new framework for conversion system,shows the realization approaches,which uses early binding to accomplish SDAI based on Java and the late binding to accomplish mapping of EXPRESS and XML Schema.Besides,it designs the development environment and concrete realization process,and develops the conversion process for specific STEP neutral file to verify feasibility of the conversion model and the realization methods.
STEP;XML;Data Exchange;Networked Manufacturing
TH166;TP393
A
2095-509X(2013)11-0026-04
10.3969/j.issn.2095-509X.2013.11.007
2013-07-01
張運(yùn)森(1982—),男,河南駐馬店人,機(jī)械工業(yè)第六設(shè)計研究院有限公司助理工程師,工學(xué)碩士,主要研究方向為數(shù)字化設(shè)計與制造、網(wǎng)絡(luò)化制造等。