于曉楠,楊志兵
(北京理工大學(xué) 機(jī)械與車輛學(xué)院工業(yè)工程研究所,北京 100081)
隨著制造業(yè)信息化的發(fā)展,計(jì)算機(jī)輔助設(shè)計(jì)等技術(shù)的廣泛應(yīng)用,數(shù)字化電子圖文檔的數(shù)量與日俱增,然而電子圖文檔管理水平的滯后,卻難以滿足管理的需求[1]。在管理過程中,經(jīng)常出現(xiàn)圖紙與實(shí)際設(shè)計(jì)不符或缺失、圖紙數(shù)據(jù)丟失或不全和新老版本數(shù)據(jù)混淆等現(xiàn)象[2],這種情況在中小型企業(yè)中表現(xiàn)的尤為突出。
中小型企業(yè)信息化水平不高,沒有形成完善的圖紙管理體系。調(diào)研發(fā)現(xiàn),中小型企業(yè)現(xiàn)行的圖紙管理方法極其簡(jiǎn)單,沒有涉及到版本的內(nèi)容。以NIMAK為例,對(duì)已經(jīng)投入使用的圖紙,當(dāng)確定發(fā)生變更時(shí),如果原圖紙不再使用,那么新圖紙將代替原圖紙,原圖紙?zhí)柪^續(xù)沿用;如果原圖紙還繼續(xù)使用,那么變更過的圖紙將被賦予一個(gè)新的圖紙?zhí)?,新的圖紙?zhí)柡驮瓉淼膱D紙?zhí)栔g沒有直接的聯(lián)系。這種方法無法追蹤變更的歷史,給企業(yè)的圖紙管理增加了難度,同時(shí)變更過程中圖紙資料的丟失,對(duì)企業(yè)也是一個(gè)重大損失。為了解決類似于此類問題,本文將從設(shè)計(jì)變更的角度,對(duì)圖紙管理加入版本的概念,研究中小型企業(yè)的圖紙版本管理問題。
目前,版本管理的基本模型有線性版本關(guān)系管理模型、樹狀版本關(guān)系管理模型和有向無循環(huán)圖版本關(guān)系管理模型[3,4]。
線性模型是一種最簡(jiǎn)單的模型,它以版本生成的先后次序進(jìn)行排序,每個(gè)版本最多有一個(gè)父版本和子版本。在這種管理模型中,新產(chǎn)生的版本只能插入版本鏈上最后一個(gè)版本的后面,因此,在版本鏈上的兩個(gè)相鄰版本,不一定是父子關(guān)系。這種模型的缺點(diǎn)是無法反映不同版本之間邏輯上的關(guān)系。
樹狀模型以版本繁衍過程為依據(jù),其版本號(hào)反應(yīng)了各版本之間的從屬、并列或繼承關(guān)系。在這種管理模型中,每個(gè)父版本可能有多個(gè)子版本,但是每個(gè)子版本僅存在唯一的父版本。該模型的缺點(diǎn)是不能表示多個(gè)版本合并成一個(gè)新版本的情況。
有向無循環(huán)圖模型彌補(bǔ)了樹狀模型的缺點(diǎn),即一個(gè)父版本可能有多個(gè)子版本,同時(shí)一個(gè)子版本也可能有多個(gè)父版本。這種模型能夠描述每個(gè)版本的歷史信息,還可以表示多個(gè)版本合并成一個(gè)新版本的過程。在該模型中,只能用版本序號(hào)來描述版本產(chǎn)生的層次和根源。該模型的缺點(diǎn)是無法表示版本之間的關(guān)聯(lián)關(guān)系。
以上三種模型面向的是單一對(duì)象,反映了同一對(duì)象不同版本之間的演化關(guān)系。然而對(duì)于一個(gè)完整的產(chǎn)品來說,我們關(guān)心的不只是某一張零件圖紙的版本,更重要的是一個(gè)產(chǎn)品所包含的所有部件、零件圖紙的版本,這就需要結(jié)合產(chǎn)品結(jié)構(gòu),更深入的討論產(chǎn)品圖紙的版本管理問題。
一般一個(gè)產(chǎn)品都由三級(jí)結(jié)構(gòu)組成,即產(chǎn)品、部件和零件,這種結(jié)構(gòu)關(guān)系同樣反映在產(chǎn)品圖紙上,即產(chǎn)品圖紙也分為產(chǎn)品級(jí)圖紙、部件級(jí)圖紙和零件級(jí)圖紙。產(chǎn)品級(jí)圖紙可以分解形成部件級(jí)圖紙,部件級(jí)圖紙可以分解形成零件級(jí)圖紙,而且各級(jí)圖紙之間存在一定的結(jié)構(gòu)和功能的關(guān)系。面向單一對(duì)象的版本管理模型無法滿足這種復(fù)雜的產(chǎn)品圖紙關(guān)系,因此,本文提出了產(chǎn)品圖紙版本管理的二級(jí)管理模型,該模型主要解決的是產(chǎn)品設(shè)計(jì)開發(fā)完成后,對(duì)已經(jīng)存在的產(chǎn)品結(jié)構(gòu)系統(tǒng)中,由于發(fā)生設(shè)計(jì)變更所引起的圖紙版本變化的問題。
在日益激烈的市場(chǎng)競(jìng)爭(zhēng)中,產(chǎn)品設(shè)計(jì)變更幾乎是無法避免的,會(huì)貫穿于整個(gè)產(chǎn)品生命周期。設(shè)計(jì)變更并非只是作用于單個(gè)零件的設(shè)計(jì)更改,由于產(chǎn)品零部件本身存在的結(jié)構(gòu)與功能上的關(guān)系,在大多數(shù)情況下,會(huì)引發(fā)產(chǎn)品上其他零部件的更改,即設(shè)計(jì)變更的傳播[5]。當(dāng)設(shè)計(jì)變更確認(rèn)發(fā)生時(shí),變更執(zhí)行人員就要更改變更對(duì)象。因此,對(duì)于產(chǎn)品的零部件圖紙來說,也會(huì)相應(yīng)的發(fā)生連鎖式的更改,如何記錄、追蹤、查找和存儲(chǔ)這些圖紙的更改,就涉及到圖紙版本管理的問題。
設(shè)計(jì)變更的原因直接關(guān)系到圖紙版本的變化。從簽訂訂單、需求分析、產(chǎn)品設(shè)計(jì)、工藝編制,直到制造裝配銷售使用維護(hù)和最終產(chǎn)品回收的產(chǎn)品全生命周期中,會(huì)有大量的原因?qū)е略O(shè)計(jì)變更的產(chǎn)生[6]。設(shè)計(jì)變更的原因分為三類:依次是外部原因、內(nèi)部原因和傳播原因。外部原因和內(nèi)部原因是引起變更的觸發(fā)因素,傳播原因是導(dǎo)致關(guān)聯(lián)圖紙發(fā)生變更的主要因素。變更原因分類如表1所示。
外部原因和內(nèi)部原因統(tǒng)稱為觸發(fā)因素,本文定義由一個(gè)觸發(fā)因素引起的一系列變更稱為一次變更。通過這個(gè)定義,就可以劃分出圖紙變更存儲(chǔ)的時(shí)間節(jié)點(diǎn)。當(dāng)一次變更確認(rèn)發(fā)生時(shí),就要對(duì)這次變更的類型進(jìn)行判斷,關(guān)于變更類型的劃分,從對(duì)質(zhì)量的影響程度和是否引起變更的傳播角度給出定義,即把設(shè)計(jì)變更劃分為微小變更、一般變更和重大變更。
微小變更:對(duì)質(zhì)量影響較小的變更。
一般變更:對(duì)質(zhì)量的影響程度一般且會(huì)引起簡(jiǎn)單的變更傳播的變更。
重大變更:對(duì)質(zhì)量有重大影響或者會(huì)引起復(fù)雜的變更傳播的變更。
通過對(duì)變更類型的判斷,決定了零件圖紙的變更方式。微小變更和一般變更為小更改,小更改圖紙進(jìn)行版本升級(jí)存儲(chǔ);重大變更為大更改,大更改圖紙進(jìn)行更改圖紙?zhí)柎鎯?chǔ)。
表1 變更原因分類表
本文的圖紙版本管理采用圖紙?zhí)柤影姹咎?hào)的方法,對(duì)于某一零件圖紙?zhí)柕淖畛醢姹荆鎯?chǔ)的內(nèi)容為該零件的圖紙,而對(duì)同一圖紙?zhí)柕纳?jí)版本,采用存儲(chǔ)原圖加變更通知單的存儲(chǔ)方式,即圖紙內(nèi)容不發(fā)生變化,對(duì)于變化的部分以變更通知單的方式進(jìn)行記錄存儲(chǔ)。采用這種存儲(chǔ)方式最大的優(yōu)勢(shì)就是能簡(jiǎn)化版本存儲(chǔ)的管理模型。
產(chǎn)品結(jié)構(gòu)一般分為三級(jí),產(chǎn)品級(jí)、部件級(jí)和零件級(jí)。所以映射到產(chǎn)品圖紙上應(yīng)該存在的也是三級(jí)結(jié)構(gòu),產(chǎn)品級(jí)圖紙、部件級(jí)圖紙和零件級(jí)圖紙。采用原圖紙加變更通知單的存儲(chǔ)方式,部件級(jí)圖紙將不發(fā)生變化,因此三級(jí)結(jié)構(gòu)將簡(jiǎn)化為產(chǎn)品級(jí)圖紙和零件級(jí)圖紙二級(jí)結(jié)構(gòu),簡(jiǎn)化了結(jié)構(gòu)關(guān)系,便于存儲(chǔ)管理。
每個(gè)產(chǎn)品都是由一系列的零部件按照一定關(guān)系組成的,這種關(guān)系同時(shí)也表現(xiàn)在零部件圖紙上。本文采用版本管理的線性管理模型,結(jié)合產(chǎn)品結(jié)構(gòu)特點(diǎn),提出產(chǎn)品圖紙版本管理的二級(jí)管理模型,即將版本分為兩個(gè)級(jí)別,產(chǎn)品級(jí)版本和零件級(jí)版本,產(chǎn)品級(jí)版本分解形成零件級(jí)版本。產(chǎn)品圖紙版本的二級(jí)管理模型如圖1所示。
圖1 產(chǎn)品圖紙版本的二級(jí)管理模型
產(chǎn)品號(hào)和產(chǎn)品級(jí)版本號(hào)共同決定著一個(gè)產(chǎn)品的所有結(jié)構(gòu)關(guān)系,即所有零部件圖紙。該模型中分別將產(chǎn)品號(hào)和產(chǎn)品版本號(hào)、零件圖紙?zhí)柡土慵?jí)圖紙版本號(hào)分隔開來,構(gòu)成產(chǎn)品圖紙版本管理的二級(jí)結(jié)構(gòu),一級(jí)結(jié)構(gòu)為一個(gè)產(chǎn)品號(hào)可以有多個(gè)產(chǎn)品級(jí)版本號(hào),二級(jí)結(jié)構(gòu)為一個(gè)零件圖紙?zhí)栆部梢杂卸鄠€(gè)零件級(jí)圖紙版本號(hào)。因此,一張具體的圖紙由產(chǎn)品號(hào)、產(chǎn)品版本號(hào)、零件圖紙?zhí)柡土慵D紙版本號(hào)共同決定,其具體的變化流程如圖2所示。
圖2 產(chǎn)品版本管理流程圖
對(duì)于一個(gè)新開發(fā)的產(chǎn)品,首先確定其產(chǎn)品號(hào)和產(chǎn)品版本號(hào),根據(jù)產(chǎn)品結(jié)構(gòu)關(guān)系,輸入各零件圖紙?zhí)柡土慵D紙版本號(hào),這樣依據(jù)產(chǎn)品的BOM結(jié)構(gòu),建立了一個(gè)產(chǎn)品所有圖紙的關(guān)聯(lián)關(guān)系。當(dāng)發(fā)生設(shè)計(jì)變更時(shí),判斷該次變更的類型,以確定零件圖紙發(fā)生升級(jí)圖紙版本號(hào)還是變更圖紙?zhí)?,具體的方法在2.1節(jié)作了詳細(xì)介紹。一次變更中,有可能一張圖紙發(fā)生變化,也有可能幾張圖紙同時(shí)發(fā)生變化,無論幾張圖紙發(fā)生變化,其中只要有零件圖紙發(fā)生變號(hào),那么產(chǎn)品號(hào)就發(fā)生變號(hào);如果所有變化的零件圖紙均發(fā)生升級(jí),那么無論幾張圖紙發(fā)生變化,產(chǎn)品號(hào)都發(fā)生升級(jí);當(dāng)零件圖紙?zhí)柡土慵D紙版本號(hào)都不發(fā)生變化,而產(chǎn)品BOM結(jié)構(gòu)發(fā)生變化時(shí),產(chǎn)品號(hào)發(fā)生變號(hào)。
NIMAK公司為典型的中小型企業(yè),主要以生產(chǎn)電焊鉗為主,有大量的電焊鉗圖紙需要存儲(chǔ)管理。電焊鉗結(jié)構(gòu)極其復(fù)雜,為簡(jiǎn)化敘述,僅以電焊鉗鉛臂結(jié)構(gòu)驗(yàn)證上述理論。
在Windows XP環(huán)境下選用Microsoft Office Access 2010作為開發(fā)工具,ACCESS支持Visual Basic宏語(yǔ)言,它是一個(gè)面向?qū)ο蟮木幊陶Z(yǔ)言,可以引用各種對(duì)象,包括DAO(數(shù)據(jù)訪問對(duì)象)、ActiveX數(shù)據(jù)對(duì)象以及許多其他的ActiveX 組件??梢晫?duì)象用于顯示表和報(bào)表,VBA代碼模塊可以聲明和調(diào)用Windows操作系統(tǒng)函數(shù)。因此,開發(fā)運(yùn)行中小型企業(yè)系統(tǒng)的應(yīng)用程序,ACCESS是一個(gè)較好的平臺(tái)[7]。
實(shí)現(xiàn)該系統(tǒng)的核心的功能就是完成產(chǎn)品號(hào)版本的回溯功能,即查找某一版本的父版本,直到最初版本為止。完成該功能的核心代碼如下:
Function VersionTrace(ByVal VerNo As Long,ByVal UpdateType As String) As Long
Dim rs As ADODB.Recordset
Dim cn As ADODB.Connection
Dim Number As Long
Dim Str As String
Dim tuzhihao As String
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
Set cn = CurrentProject.Connection
rs.ActiveConnection = cn
rs.Open (“Select * from 版本信息 " & _
"WHERE 圖紙?zhí)?'[forms]![版本信息查詢?cè)攩蝅![圖紙?zhí)朷' ")
tuzhihao = [Forms]![版本信息查詢?cè)攩蝅![圖紙?zhí)朷
Number = VerNo
Str = UpdateType
Do While Str = “變更通知單"
Number=DLookup("父版本號(hào)", "版本信息回溯輔助", "版本號(hào) =" & Number)
Str = DLookup("修改類型", "版本信息回溯輔助", "版本號(hào)=" & Number)
Loop
VersionTrace = Number
End Function
該函數(shù)的返回值作為查詢零件圖紙版本號(hào)的條件。實(shí)現(xiàn)版本回溯功能后,關(guān)鍵點(diǎn)為在ACCESS建立一個(gè)存儲(chǔ)產(chǎn)品號(hào)版本關(guān)系的表,作為查詢零件圖紙版本號(hào)的數(shù)據(jù)源,表結(jié)構(gòu)設(shè)計(jì)如表2所示。
表2 產(chǎn)品版本號(hào)關(guān)系表
該表中只存某次變更中,發(fā)生變化的零件圖紙版本號(hào),對(duì)于不發(fā)生變化的不進(jìn)行存儲(chǔ)。然后通過版本回溯的結(jié)果,查詢出所有父版本發(fā)生變化的零件圖紙版本號(hào),更新替換到該產(chǎn)品號(hào)最初的版本號(hào)上,即得到當(dāng)前產(chǎn)品版本號(hào)下所有零件圖紙的版本號(hào)。在ACCESS中設(shè)計(jì)的界面如圖3所示。
在產(chǎn)品號(hào)文本框中輸入產(chǎn)品號(hào),確定查詢后,得到根據(jù)產(chǎn)品BOM結(jié)構(gòu)的零件圖紙關(guān)系。在產(chǎn)品版本號(hào)文本框輸入要查詢的產(chǎn)品版本號(hào),即得到如圖4所示的BOM詳單。
圖3 BOM結(jié)構(gòu)界面
版本管理技術(shù)是工程圖檔管理系統(tǒng)的核心技術(shù)之一,合理有效的版本管理技術(shù)將提高企業(yè)工作效率、降低管理成本、提高制造企業(yè)競(jìng)爭(zhēng)力。
首先,本文對(duì)設(shè)計(jì)變更原因的分類總結(jié),提出了一次變更的概念,解決了版本管理過程中版本存儲(chǔ)的時(shí)間節(jié)點(diǎn)問題。
其次,通過分析三種現(xiàn)存的版本管理的基本模型,結(jié)合產(chǎn)品結(jié)構(gòu)關(guān)系,面向中小型企業(yè),提出了產(chǎn)品圖紙版本的二級(jí)管理模型,解決了面向產(chǎn)品結(jié)構(gòu)的多對(duì)象的版本管理問題。
最后,詳細(xì)闡述了版本管理的流程過程,并結(jié)合NIMAK公司,給出了具體的解決方案,驗(yàn)證了產(chǎn)品圖紙版本的二級(jí)管理模型的可行性與實(shí)用性。
圖4 BOM詳單報(bào)表界面
[1] Lee S,Ahn J,Kim H. A Schema Version Model for Complex Objects in Object-Oriented Databases [J]. Journal of Systems Architecture.2006,52(10):563-577.
[2] Wang F, Zaniolo C. Temporal Queries and Version Management in Xml-Based Document Archives[J].Data &Knowledge Engineering.2008,65(2):304-324.
[3] 馬建其,胡曉兵.工程圖檔管理系統(tǒng)中的版本管理技術(shù)[J].機(jī)械工程與自動(dòng)化.2007(02):48-50.
[4] 謝士杰,馮學(xué)智.規(guī)劃管理信息系統(tǒng)中的版本管理的研究[J]. 遙感信息.2005(02):39-43.
[5] 楊帆,唐曉青.基于特性關(guān)聯(lián)的產(chǎn)品工程更改傳播[J].北京航空航天大學(xué)學(xué)報(bào).2012(08):1032-1039.
[6] 劉曉冰,孟永勝,邢英杰,等.制造領(lǐng)域工程更改管理系統(tǒng)的技術(shù)研究[J].中國(guó)機(jī)械工程.2005(15):1339-1344.
[7] Alison Balter. Access2007開發(fā)指南[M].謝暉,許偉譯.北京:人民郵電出版社,2012.