王曉晗,肖鵬安,宋達,李晨威,姚素新
(中國艦船研究設(shè)計中心,武漢 430064)
目前,在船舶行業(yè),國內(nèi)主要的研究所、造船廠嚴(yán)重依賴國外工業(yè)軟件,卡脖子問題十分突出。在船舶產(chǎn)品數(shù)據(jù)管理(Product Data Management,PDM)領(lǐng)域,國外美國PTC公司的Windchill、法國達索公司的Enovia、德國西門子公司的Teamcenter等產(chǎn)品占據(jù)壟斷地位,為了實現(xiàn)船舶核心設(shè)計數(shù)據(jù)自主可控,國內(nèi)多家企業(yè)研發(fā)了自主化的船舶工業(yè)軟件。在國家政策的引導(dǎo)下,國內(nèi)自主化船舶工業(yè)軟件迎來發(fā)展機遇期。為滿足自身的船舶設(shè)計產(chǎn)品數(shù)據(jù)管理需要,中國艦船研究設(shè)計中心研發(fā)了完全自主化的國產(chǎn)PDM軟件海云PDM。
PDM軟件主要用于管理產(chǎn)品設(shè)計過程中產(chǎn)生的大量設(shè)計、制造數(shù)據(jù),通常需要用數(shù)據(jù)建模工具對這些數(shù)據(jù)進行建模,實現(xiàn)數(shù)據(jù)的抽象管理。國外一般用獨立建模工具進行數(shù)據(jù)建模,海云PDM中集成了完全自主化的圖形化建模工具,支持統(tǒng)一建模語言UML(Unified Modeling Language)類圖建模、BPMN(Business Process Model and Notation)工作流建模等多種模型,實現(xiàn)了從圖形化建模到邏輯代碼生成的一體化流程。同時,海云PDM與國產(chǎn)三維設(shè)計軟件SPD進行了數(shù)據(jù)集成,實現(xiàn)了三維模型數(shù)據(jù)的存儲與管理。本文對海云PDM中的數(shù)據(jù)建模與三維數(shù)據(jù)集成管理的實現(xiàn)過程及功能進行了深入研究。
目前,國外主流的UML建模工具Visio、Enterprise Architect、Rational Rose等都是基于圖表類型從用戶的角度去定義和作業(yè)的。建模工具一般從最基礎(chǔ)的符號甚至一個簡單的圖形開始定義,并根據(jù)定義好的基礎(chǔ)符號向上縱向、橫向擴展,不斷增加符號的復(fù)雜度,并通過不同符號的組合提高符號的表達能力[1]。
在傳統(tǒng)的方法中,主流圖形化建模工具通過可擴展標(biāo)記語言(Extensible Markup Language,XML)或JavaScript對象簡譜(JavaScript Object Notation,JSON)格式的數(shù)據(jù)存儲整個圖表。在本文的方法中,通過數(shù)據(jù)庫對象化地存儲單個圖形元素,再關(guān)聯(lián)到圖表對象,實現(xiàn)對單一圖形元素的實時調(diào)控。單獨定義的圖形元素支持橫向擴展,可以實現(xiàn)多種圖形化建模功能,例如UML類圖建模、BPMN工作流建模、SQL語法器建模等。
符號分類庫用于定義符號,對符號進行分類管理,確定符號在畫布展示的樣式。首先,完成符號管理的建模,按照目錄、符號類別、符號組件的結(jié)構(gòu)對符號進行分類管理;其次,完成符號定義,支持對符號的注冊及樣式屬性配置,使符號分類庫具備定義、擴展領(lǐng)域模型的能力;最后,通過mxGraph插件支持符號的可視化展示及符號樣式的管理。
定義符號的過程 如 下:1)在符號類別下新增符號;2)判斷新增的符號圖形是否是mxGraph中已有的圖形,若有則是直接使用mxGraph中的圖形,否則需畫矢量圖注冊圖形,確定符號的形狀;3)定義符號樣式,確定圖形樣式信息;4)確定符號名稱、寬、高、圖標(biāo)等基本信息;5)將完成定義的圖形符號拖動到畫布上進行展示。
在符號定義完成后,需要在符號目錄下按規(guī)范定義圖表類型。例如UML下有類圖、用例圖,BPMN下有業(yè)務(wù)流程圖等,不同的圖表所包含的符號各不相同。符號配置庫用于定義圖表類型,在圖表與符號之間建立關(guān)聯(lián),動態(tài)配置圖表所需的符號組件,其功能主要包括定義圖表類型和動態(tài)配置符號兩部分內(nèi)容:1)定義圖表類型。對圖表建模,在圖表目錄下關(guān)聯(lián)新的圖表,按照圖表目錄、圖表類型的結(jié)構(gòu)對圖進行管理。2)動態(tài)配置符號。根據(jù)圖表所屬的目錄,篩選該目錄下所有的符號組件,可任意選擇符號組件,為新增的圖表配置所需的符號。
符號配置庫實現(xiàn)了自定義圖表及圖表中符號的動態(tài)配置。如圖2所示,在海云PDM的圖形化建模工具中配置符號過程如下:1)選中需要配置的圖表類型,并選擇符號;2)在該目錄下所有的符號組件中,選擇需要配置的符號。
結(jié)合符號分類庫與配置庫,圖形化工具支持在創(chuàng)建不同類型圖表時,獲取不同圖表所關(guān)聯(lián)的符號組件,生成不同環(huán)境的畫布,拖動符號組件進行畫圖。
圖形化工具的模型涉及點、線與圖,線代表點與點之間的連接關(guān)系,圖是點和線的集合,這三者都屬于符號。點和點之間的關(guān)聯(lián)記錄了點的父子關(guān)系,父節(jié)點可以包含多個子節(jié)點;點與線之間的關(guān)聯(lián)記錄了線的源頂點和目標(biāo)頂點;圖與符號之間的關(guān)聯(lián)記錄了圖中包含的所有符號。
圖形化工具支持對圖的保存和解析功能。保存功能不使用傳統(tǒng)的XML格式文件存儲,而是將圖形存儲至數(shù)據(jù)庫中管理,實現(xiàn)對單一圖形元素的實時修改與調(diào)整。解析功能是將圖形化元素模型轉(zhuǎn)換為對應(yīng)業(yè)務(wù)應(yīng)用模型,實現(xiàn)語義的轉(zhuǎn)換功能。
圖形化工具利用JS庫中的mxGraph插件將符號分類庫和符號配置庫圖形化地表達出來,具體操作過程如下:1)選中不同類型圖表進行創(chuàng)建;2)根據(jù)配置庫中的數(shù)據(jù),獲取圖表關(guān)聯(lián)的符號組件,并生成對應(yīng)的畫布環(huán)境;3)拖動符號組件到畫布中進行畫圖,不同組件根據(jù)符號分類庫中定義的樣式進行展示;4)將圖形信息保存到數(shù)據(jù)庫中;5)解析圖形,將圖形信息轉(zhuǎn)化為業(yè)務(wù)模型,如工作流模板、類實體等。
圖3展示了按上述操作所畫的工作流兩級審簽?zāi)0濉?/p>
Rational Rose是目前使用廣泛的專業(yè)UML建模工具之一,也是UML標(biāo)準(zhǔn)制定者開發(fā)的軟件,其完全符合OMG(Object Management Group)組織提出的UML建模規(guī)范[2]。同時,Rational Rose還支持UML模型校驗功能,可以自動檢查出模型的邏輯錯誤。
本文將圖形化建模工具導(dǎo)出的XML模型文件導(dǎo)入Rational Rose中,如果導(dǎo)入的模型能被Rational Rose正確解析,就證明海云PDM原生的建模工具同樣符合UML標(biāo)準(zhǔn)建模規(guī)范,這對于海云PDM建模器的標(biāo)準(zhǔn)化和后續(xù)集成擴展具有重要意義。
將海云PDM系統(tǒng)與Rational Rose集成時,需要將海云PDM系統(tǒng)中的模型數(shù)據(jù)以XML格式文件的形式傳入到Rational Rose中進行處理。使用圖形化建模管理工具建立的模型包括域、實體和實體之間的關(guān)系等類型,分別與標(biāo)準(zhǔn)UML模型中的包圖、類圖和類之間的關(guān)系相對應(yīng)[3-5]。
海云PDM提供一個接口,可將上述的模型數(shù)據(jù)以域為單位,通過XML的形式導(dǎo)出。XML是一種優(yōu)秀的結(jié)構(gòu)化語言,能夠清晰地表達UML模型屬性和關(guān)系[9]。導(dǎo)出的模型數(shù)據(jù)信息包括域名、域與域之間的層級關(guān)系、域下的所有實體、實體包含的屬性與方法,以及實體與實體之間的關(guān)系(包括繼承關(guān)系與關(guān)聯(lián)關(guān)系)。
圖4中展示了接口導(dǎo)出的XML信息,其中:root是根節(jié)點;domains為所有域的集合;domain記錄了域的全部屬性信息,包括名稱(name)、內(nèi)容(content)、描述(description)、路徑(path)、識別碼(sn)、類型(type)等;combineTag屬性記錄了domain的層級結(jié)構(gòu);concepts為所有實體的集合;concept記錄了實體類的信息,實體下的屬性信息與domain基本相同;combineTag記錄了實體下的屬性的詳細信息;linkTag屬性記錄了實體之間的繼承與關(guān)聯(lián)關(guān)系。
Rational Rose提供一套API,可以使用Visual Basic語言新建類圖、包結(jié)構(gòu)、類結(jié)構(gòu)、類屬性及類之間的關(guān)系等。通過Visual Basic語言在Rational Rose中編寫腳本插件,訪問海云PDM的導(dǎo)出接口,獲得XML結(jié)構(gòu)數(shù)據(jù)。在Rational Rose內(nèi)部解析數(shù)據(jù),將獲得的模型信息按照UML標(biāo)準(zhǔn)對應(yīng)生成Rational Rose中的包結(jié)構(gòu)、類結(jié)構(gòu)、包圖、類圖等,實現(xiàn)了在Rational Rose中對海云PDM系統(tǒng)模型的瀏覽查看。
調(diào)用海云PDM系統(tǒng)的接口,將生成的XML文件以responseXML類型接收,獲得XML格式數(shù)據(jù)的腳本,如圖5所示。
以系統(tǒng)中的Thing、GraphType、Component類為例,這3個模型在海云PDM中建立的類圖、類屬性、類之間的關(guān)系如圖6所示,Rational Rose解析導(dǎo)入的XML文件后自動建立的模型如圖7所示。對比兩者后可以發(fā)現(xiàn),包圖、類圖、類屬性及類間關(guān)系基本一致,證明系統(tǒng)中建立的模型符合UML標(biāo)準(zhǔn)規(guī)范。
船舶行業(yè)是一個涉及眾多專業(yè)的龐大系統(tǒng),設(shè)計建造過程中生成的零部件數(shù)目眾多且復(fù)雜性高。同時,不同專業(yè)的船舶設(shè)計研究所和造船廠所使用的船舶設(shè)計建造軟件往往是不同的,這大大增加了船舶在設(shè)計建造過程中信息交互的難度,無法做到設(shè)計生產(chǎn)之間的協(xié)同[10]。
因此,在當(dāng)前船舶設(shè)計研究所與造船廠分離的研制模式下,PDM和CAD的信息交換和數(shù)據(jù)共享是十分必要的,本文重點討論海云PDM與滬東中華造船(集團)有限公司研發(fā)的三維CAD軟件船舶產(chǎn)品設(shè)計(Ship Product Design,SPD)系統(tǒng)的數(shù)據(jù)集成[7-8,16]。首先,本文通過分析SPD的三維模型數(shù)據(jù)結(jié)構(gòu)和模型數(shù)據(jù)之間的關(guān)聯(lián)關(guān)系,得到抽象化的UML模型視圖。其次,根據(jù)分析結(jié)果在海云PDM中建立SPD模型數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)模型,實現(xiàn)三維模型數(shù)據(jù)的持久化存儲。最后,基于海云PDM開發(fā)出三維模型數(shù)據(jù)的瀏覽界面。
SPD三維模型數(shù)據(jù)抽象分為基礎(chǔ)庫、標(biāo)準(zhǔn)部件、零部件(包括管系、鐵舾、風(fēng)管、電纜專業(yè))3部分內(nèi)容,根據(jù)抽象分析結(jié)果,用UML模型表示每塊內(nèi)容中的SPD數(shù)據(jù)層次結(jié)構(gòu)及數(shù)據(jù)關(guān)系,采用此類方法對SPD各個專業(yè)模型的數(shù)據(jù)進行持久化集成。
典型的基礎(chǔ)庫表數(shù)據(jù)結(jié)構(gòu)如表1所示。
表1 典型基礎(chǔ)庫表數(shù)據(jù)格式
基礎(chǔ)庫包括區(qū)域、艙室、托盤、涂裝、表面處理、電纜標(biāo)準(zhǔn)、管路系統(tǒng)等,涵蓋船舶各個專業(yè)的基礎(chǔ)數(shù)據(jù)。
標(biāo)準(zhǔn)部件按照系統(tǒng)內(nèi)碼表進行分類劃分,所有標(biāo)準(zhǔn)部件從部件基類擴展劃分,部件基類具備專業(yè)、來源、船級社定義表、表面處理定義等屬性。以管系標(biāo)準(zhǔn)部件中的管子為例,管子由部件基類擴展,下面劃分為其它(PVC,玻璃鋼)、船用無縫鋼管、黃銅紫銅管、耐熱鋼管、不銹鋼管、銅鎳鐵管、簿壁管、鋁合金管等標(biāo)準(zhǔn)部件。
零部件數(shù)據(jù)中含標(biāo)準(zhǔn)部件內(nèi)碼表示屬于標(biāo)準(zhǔn)部件的裝配,各專業(yè)零部件由零部件類型擴展,本文中解析的零部件專業(yè)包括管系、鐵舾、風(fēng)管、電纜,其中管系零部件有管零件、設(shè)備、管部件、管附件、緊固件等類型。
根據(jù)SPD三維數(shù)據(jù)模型的分析結(jié)果,用UML模型圖表示基礎(chǔ)庫、標(biāo)準(zhǔn)部件、零部件的數(shù)據(jù)層次結(jié)構(gòu)及數(shù)據(jù)關(guān)系。如圖8所示,基礎(chǔ)庫表以船舶專業(yè)為分類標(biāo)準(zhǔn),分別梳理了各專業(yè)類型及關(guān)聯(lián)關(guān)系,基礎(chǔ)庫表BasicType的子類有專業(yè)、來源、船級社定義表、涂裝、表面處理、區(qū)域、艙室、托盤、甲板、螺栓螺母標(biāo)準(zhǔn)定義表、管路系統(tǒng)定義表、電氣系統(tǒng)、電纜類別、電纜原理、電纜標(biāo)準(zhǔn)、材質(zhì),其中電氣系統(tǒng)和電氣子系統(tǒng)之間有關(guān)聯(lián)關(guān)系,托盤和圖號之間有關(guān)聯(lián)關(guān)系。
根據(jù)已梳理的UML模型圖,試用海云PDM中的圖形化建模工具建立基礎(chǔ)庫表的實際數(shù)據(jù)模型。圖9中基礎(chǔ)庫表BasicType和其子類的繼承關(guān)系,其中還包含托盤和圖號之間的關(guān)聯(lián)關(guān)系;圖10中新建了范圍(Range)類、位置(Position)類,主要用于體現(xiàn)Block類、Zone類、Pallet類和Range類的關(guān)聯(lián)關(guān)系,Pallet類和Block類有關(guān)聯(lián)關(guān)系,Cabin類和Position類也有關(guān)聯(lián)關(guān)系。
圖1 定義符號流程圖
圖2 配置庫界面
圖3 工作流模板
圖4 導(dǎo)出的XML格式數(shù)據(jù)
圖5 VB語言調(diào)用接口獲取XML數(shù)據(jù)
圖6 海云PDM中的模型
圖7 Rational Rose中的模型
圖8 基礎(chǔ)庫表關(guān)系圖
圖9 基礎(chǔ)庫表建模一
圖10 基礎(chǔ)庫表建模二
數(shù)據(jù)持久化技術(shù)是將應(yīng)用系統(tǒng)中的對象數(shù)據(jù)通過ORM(Object Relation Mapping,對象關(guān)系映射)映射到關(guān)系數(shù)據(jù)庫中,使應(yīng)用系統(tǒng)中的數(shù)據(jù)對象與關(guān)系數(shù)據(jù)庫中的記錄建立一一對應(yīng)關(guān)系。
對象關(guān)系映射一般包括屬性映射和關(guān)系映射兩方面內(nèi)容。屬性映射是根據(jù)應(yīng)用系統(tǒng)中對象屬性的類型在數(shù)據(jù)庫中將其實現(xiàn)為一個物理屬性或虛擬屬性(不在數(shù)據(jù)庫中存儲,通過應(yīng)用程序操作返回具體值),本文采取的方法是將一個類中的所有屬性映射到數(shù)據(jù)庫中的一張表中。關(guān)系映射是指將應(yīng)用程序中類與類之間的關(guān)系持久化到數(shù)據(jù)庫中,其中類與類之間的關(guān)系包括繼承關(guān)系、聚合關(guān)系和關(guān)聯(lián)關(guān)系[6]。
以結(jié)構(gòu)專業(yè)為例,SPD三維模型數(shù)據(jù)的持久化首先需要定義抽象類SPDObject數(shù)據(jù)模型,其屬性包括唯一表示符oid,海云PDM中的其他SPD模型都需要繼承該抽象類,共同擁有SPD對象屬性。根據(jù)專業(yè)需要分別單獨定義總段、分段、船型基本信息、區(qū)域、船體裝配件、船體零部件等結(jié)構(gòu)專業(yè)數(shù)據(jù)模型的特有屬性。在完成結(jié)構(gòu)專業(yè)數(shù)據(jù)模型的定義后,為數(shù)據(jù)模型和屬性添加保存、修改、刪除的操作方法,實現(xiàn)數(shù)據(jù)模型的動態(tài)操作。
在三維模型數(shù)據(jù)持久化的基礎(chǔ)上,通過海云PDM的MDA(Model Driven Architecture)架構(gòu)可以實現(xiàn)結(jié)構(gòu)專業(yè)信息瀏覽、零部件關(guān)聯(lián)關(guān)系瀏覽、模型詳細信息瀏覽等頂層功能。海云PDM中還集成了基礎(chǔ)庫的數(shù)據(jù)展示界面,用于展示基礎(chǔ)庫表BasicType下所有子類的數(shù)據(jù)。如圖11所示,用戶通過XML文件導(dǎo)入基礎(chǔ)數(shù)據(jù),界面左側(cè)樹結(jié)構(gòu)展示了所有的基礎(chǔ)庫表類型,點擊某個類型,右邊會顯示表格,展示選中類型的所有數(shù)據(jù)。
圖11 基礎(chǔ)庫表數(shù)據(jù)瀏覽界面
本文研究了PDM數(shù)據(jù)建模和PDM與CAD集成等內(nèi)容。在海云PDM中實現(xiàn)了完全自主化的圖形化數(shù)據(jù)建模工具,并且與主流UML 建模工具Rational Rose集成,使自主化建模工具符合UML標(biāo)準(zhǔn)規(guī)范,提高了建模工具的通用性。通過分析SPD的三維模型數(shù)據(jù)結(jié)構(gòu),實現(xiàn)了海云PDM與國產(chǎn)三維CAD的數(shù)據(jù)集成,將SPD三維模型的專業(yè)數(shù)據(jù)持久化地存儲到海云PDM中,實現(xiàn)在PDM中管理三維CAD數(shù)據(jù)。