于 淳 陳 明 李 巖
大連理工大學(xué)船舶CAD工程中心,遼寧大連 116024
面向船舶維護(hù)保養(yǎng)的分布數(shù)據(jù)同步
于 淳 陳 明 李 巖
大連理工大學(xué)船舶CAD工程中心,遼寧大連 116024
分布數(shù)據(jù)的同步是船舶維護(hù)保養(yǎng)工作中的重要內(nèi)容,是船舶營(yíng)運(yùn)公司及時(shí)掌控船舶營(yíng)運(yùn)情況的重要手段。面向船舶營(yíng)運(yùn)公司分布數(shù)據(jù)庫(kù)(船端數(shù)據(jù)庫(kù)與岸端數(shù)據(jù)庫(kù)),建立了一種船舶維護(hù)保養(yǎng)過程中的數(shù)據(jù)同步方案,說明了現(xiàn)有的數(shù)據(jù)同步方案不能針對(duì)船體結(jié)構(gòu)保養(yǎng)、格式表達(dá)擴(kuò)展性差,附件不能進(jìn)行傳輸,安全處理機(jī)制不夠完善等情況,論述了在維護(hù)保養(yǎng)流程中,同步數(shù)據(jù)的具體流向。同時(shí),對(duì)數(shù)據(jù)同步過程中的主要技術(shù)問題,包括基于ADO.NET的XML同步文件表達(dá)、增量同步文件處理、同步附件壓縮處理、并發(fā)及死鎖的安全處理等進(jìn)行了說明。
船舶;維護(hù)保養(yǎng);分布數(shù)據(jù);XML;數(shù)據(jù)同步
船舶產(chǎn)品是包含船體和各類舾裝、動(dòng)力、電氣設(shè)備在內(nèi)的復(fù)合集成產(chǎn)品[1],其數(shù)據(jù)本身是復(fù)雜而龐大的。船舶生命周期的不同階段,特別是對(duì)于船舶營(yíng)運(yùn)階段,對(duì)數(shù)據(jù)量有著極大的需求。營(yíng)運(yùn)船舶的維護(hù)保養(yǎng)工作中,對(duì)船體結(jié)構(gòu)及機(jī)電等設(shè)備的數(shù)據(jù)處理是重中之重,是船舶公司實(shí)時(shí)掌握船舶營(yíng)運(yùn)狀態(tài),做出保養(yǎng)決策的重要內(nèi)容。這些數(shù)據(jù)只有及時(shí)、可靠的在船岸間同步,才能使船舶狀態(tài)的監(jiān)控更為準(zhǔn)確,維護(hù)保養(yǎng)工作更為高效,才能為船舶性能狀態(tài)的評(píng)估、營(yíng)運(yùn)工作的決策提供有效的信息資源。
現(xiàn)有的維護(hù)保養(yǎng)工作,僅針對(duì)船舶舾裝、電氣等設(shè)備有了數(shù)據(jù)管理方法及其軟件系統(tǒng),并有了相應(yīng)的數(shù)據(jù)同步解決方案,且相關(guān)的軟件已投入使用。而對(duì)于船體結(jié)構(gòu)的維護(hù)保養(yǎng),數(shù)據(jù)處理仍舊停留在紙質(zhì)文檔和人工操作的階段,其相關(guān)數(shù)據(jù)還不能在船岸間同步,導(dǎo)致了這一過程中人工干預(yù)性強(qiáng)、數(shù)據(jù)時(shí)效性差、完整可靠性差、傳輸過程繁瑣,直接影響船體結(jié)構(gòu)維護(hù)保養(yǎng)工作的效率。
現(xiàn)有的數(shù)據(jù)同步方案,如圖1所示。該方案中,多個(gè)營(yíng)運(yùn)船舶與岸端通過衛(wèi)星連線的方式發(fā)送同步郵件。同步郵件中,以附件的方式記錄了需同步數(shù)據(jù)的內(nèi)容。船端向岸端發(fā)送維護(hù)保養(yǎng)情況的記錄,岸端向船端下達(dá)保養(yǎng)計(jì)劃指令的同時(shí),對(duì)船端提交的記錄進(jìn)行審核,岸端為多個(gè)客戶端并發(fā)程序,經(jīng)由公司服務(wù)器進(jìn)行同步。船端與岸端的數(shù)據(jù)庫(kù)為分布式。
現(xiàn)有的數(shù)據(jù)同步方案僅用于船舶設(shè)備管理體系下,同時(shí)僅作用于以文字形式記錄保養(yǎng)情況的系統(tǒng),針對(duì)保養(yǎng)過程中的圖片、文檔、圖紙等,并不能進(jìn)行同步;為節(jié)省帶寬,同步文件的提取格式多采用TXT文檔的形式傳輸,擴(kuò)展性較差;對(duì)于同步過程中所可能出現(xiàn)的并發(fā)、死鎖等現(xiàn)象沒有相應(yīng)的措施避免,使得在同步過程中,存在一定的安全隱患。
數(shù)據(jù)同步方案是針對(duì)船舶維護(hù)保養(yǎng)流程制定的,在此流程的基礎(chǔ)上,確定不同類別數(shù)據(jù)的具體流向。
本船舶維護(hù)保養(yǎng)體系如圖2所示。船端系統(tǒng)依照岸端制定規(guī)則進(jìn)行維護(hù)保養(yǎng)。岸端制定維護(hù)保養(yǎng)清單,列出參與維護(hù)保養(yǎng)設(shè)備(包含船體結(jié)構(gòu)單元及其他設(shè)備),將保養(yǎng)對(duì)象的基本屬性(位置,材料,重量等)導(dǎo)入設(shè)備卡后,在工作卡中為每個(gè)對(duì)象制定檢查的周期間隔,即保養(yǎng)級(jí)別。經(jīng)由數(shù)據(jù)同步至船端后,船端依此進(jìn)行維護(hù)保養(yǎng),保養(yǎng)類型有月度、定期、航態(tài)等。船端可將保養(yǎng)情況經(jīng)數(shù)據(jù)同步導(dǎo)入岸端數(shù)據(jù)庫(kù),供岸端機(jī)務(wù)人員審核。
圖2 船舶維護(hù)保養(yǎng)流程
保養(yǎng)記錄填寫及審核時(shí),可為其添加附件,同步時(shí)與數(shù)據(jù)文件一起,以XML格式發(fā)送出去。
從系統(tǒng)架構(gòu)上來看,如圖3所示,保養(yǎng)內(nèi)容精確到板、梁,記錄了構(gòu)件損壞及修理情況,記錄了艙室檢查情況,同時(shí)也包括了船舶涂層狀態(tài)的記錄,以及船舶機(jī)電設(shè)備的記錄等。
基于系統(tǒng)工作流程及其架構(gòu),確定數(shù)據(jù)同步的流向,如圖4所示。設(shè)備卡為船岸兩端共用內(nèi)容,兩端均可修改后同步;定期、月度、航態(tài)、特殊指令等保養(yǎng)記錄均由岸端制定規(guī)則后,在船端生成,進(jìn)行填寫;缺陷記錄為對(duì)于維護(hù)保養(yǎng)過程中發(fā)現(xiàn)的損壞情況的描述;涂層記錄、艙室評(píng)價(jià)記錄等均由船端填寫,單向同步至岸端。
本數(shù)據(jù)同步系統(tǒng)以CATIA平臺(tái)下的三維船體結(jié)構(gòu)模型為對(duì)象,以MS-VS2005為編程工具,在系統(tǒng)中使用Dassault公司提供的免費(fèi)3D模型瀏覽器3DXML Player進(jìn)行模型的控制和選取,該瀏覽器以組件的形式嵌套在本系統(tǒng)中,并以MSSQLSERVER2005為數(shù)據(jù)庫(kù)工具進(jìn)行架構(gòu),對(duì)現(xiàn)有的船岸數(shù)據(jù)同步方法進(jìn)行了改進(jìn)。在本系統(tǒng)中,CATIA建立的船舶結(jié)構(gòu)模型輕量化存儲(chǔ)在每個(gè)軟件客戶端上,船岸兩端均具有各自的數(shù)據(jù)庫(kù)服務(wù)器。其中,船端為單機(jī)獨(dú)立訪問程序,岸端為多機(jī)并發(fā)訪問程序。在整個(gè)工作流程中,船舶3D模型不做修改,故不將其作為同步對(duì)象。
XML格式適用于存儲(chǔ)半結(jié)構(gòu)化的數(shù)據(jù),其可擴(kuò)展性即表現(xiàn)在元素和屬性是可以根據(jù)需要任意指定的。XML的這種可擴(kuò)展性使得XML文檔是自描述的,且便于編程處理,因此可作為異構(gòu)環(huán)境和網(wǎng)絡(luò)環(huán)境中的數(shù)據(jù)同步載體。XML格式文件需要有一種模式文件來對(duì)其進(jìn)行定義、規(guī)定其內(nèi)容及語義, 常見的用 DTD、Schema 和 Relax NG 3 種[2]。Schema具有相對(duì)較強(qiáng)的描述能力,且其本身也為XML文檔,故用其作為本系統(tǒng)中XML格式文件的模式文件,且在船岸兩端客戶端分別利用DES加密解密算法對(duì)XML文件進(jìn)行了安全處理。
本文利用ADO.NET技術(shù),在VB2005下編寫接口程序,提?。瘜?dǎo)入數(shù)據(jù)同步文件,提取流程如圖5所示,導(dǎo)入過程為其逆過程。
傳統(tǒng)的數(shù)據(jù)同步方式中,船岸兩端多以.txt文檔的形式描述同步數(shù)據(jù),這種方式不能滿足船體保養(yǎng)中附件傳輸?shù)男枰?,同時(shí),接口程序編寫較為復(fù)雜,文件可擴(kuò)展性差。利用XML文件進(jìn)行數(shù)據(jù)同步,可將同步記錄涉及的附件文件封裝進(jìn)來,同時(shí)接口程序易于編寫,有利于數(shù)據(jù)庫(kù)擴(kuò)展。
船岸服務(wù)器端均編寫了SYN類作為數(shù)據(jù)同步的接口類,同時(shí)依托于其他數(shù)據(jù)庫(kù)基本操作、保養(yǎng)記錄更新等基本類,通過Adapter對(duì)象,將SQL操作作用于數(shù)據(jù)庫(kù),將查詢結(jié)果提取至DataSet對(duì)象中。DataSet對(duì)象內(nèi)包含若干個(gè)DataTable對(duì)象,記錄了同步數(shù)據(jù)對(duì)應(yīng)表,表中內(nèi)容僅為需同步數(shù)據(jù)的子集。DataSet對(duì)象進(jìn)行轉(zhuǎn)換后,導(dǎo)出為XML文件及其Schema架構(gòu)文件的形式。最后將二者封裝入RAR文檔內(nèi),作為電子郵件附件發(fā)送。接收端下載并對(duì)該XML及其架構(gòu)文件進(jìn)行讀取,轉(zhuǎn)換為一個(gè)DataSet對(duì)象,將其解析,也通過Adapter對(duì)象導(dǎo)入本地?cái)?shù)據(jù)庫(kù)。
船岸數(shù)據(jù)同步通過E-Mail鏈路進(jìn)行,兩端接口程序應(yīng)用POP3、SMTP協(xié)議連接郵件服務(wù)器進(jìn)行數(shù)據(jù)同步。同步方式為增量同步,即每條待同步記錄只包含于一個(gè)同步文件內(nèi)。同時(shí)為每個(gè)同步文件以特定編碼形式進(jìn)行唯一命名,圖4為同步文件命名示例。
SHIP用以唯一標(biāo)識(shí)船舶名稱;第二位用CREW或COMPANY標(biāo)識(shí)該文件來自船端還是岸端;SN標(biāo)識(shí)該同步文件為該船所有同步文件中的第幾個(gè);RN標(biāo)識(shí)該文件屬于SN序列中的第幾個(gè)版本的文件,即某同步文件重發(fā)后,重發(fā)的文件RN自動(dòng)加1,以進(jìn)行唯一標(biāo)識(shí);DATE標(biāo)識(shí)文件發(fā)送日期;最后一位用SEND或RECIEVE標(biāo)識(shí)該郵件是同步郵件還是回執(zhí)郵件。
回執(zhí)機(jī)制借鑒于TCP/IP協(xié)議握手原理,接收端向發(fā)送端發(fā)送回執(zhí)后,發(fā)送端只有接收到對(duì)應(yīng)回執(zhí)后,方可認(rèn)為該文件同步成功。對(duì)于未收到回執(zhí)文件的情況,發(fā)送端設(shè)立回執(zhí)等待時(shí)限,若超時(shí)未收到,則自動(dòng)重發(fā),直至正確接收回執(zhí)為止。
增量同步過程中,同步發(fā)送端對(duì)每一項(xiàng)同步記錄也以上述編碼在數(shù)據(jù)庫(kù)中進(jìn)行標(biāo)識(shí),接口程序每次同步文件發(fā)送成功后,將該編碼賦予每一行同步記錄項(xiàng),收到回執(zhí)后,將該編碼清空。而在未收到回執(zhí)的情況下,同步記錄項(xiàng)不允許修改。這一方式基于時(shí)間戳的概念,避免了不同同步文件對(duì)同一記錄的重復(fù)發(fā)送問題,同時(shí)也限制了數(shù)據(jù)同步時(shí)用戶并發(fā)修改的可能。
針對(duì)每一項(xiàng)維護(hù)保養(yǎng)記錄,均可對(duì)其添加附件(照片、文檔、圖紙),并在數(shù)據(jù)同步中進(jìn)行發(fā)送。受船岸通信帶寬大小的限制,本系統(tǒng)中同步記錄對(duì)應(yīng)附件可提取單獨(dú)發(fā)送,與同步記錄一同發(fā)送時(shí),對(duì)于圖片附件的尺寸大小進(jìn)行壓縮。圖片附件壓縮采用JEPG標(biāo)準(zhǔn),用戶可通過對(duì)圖片質(zhì)量參數(shù)進(jìn)行設(shè)定,來達(dá)到壓縮圖片的目的。其算法流程如圖7所示。
首先,設(shè)定圖片質(zhì)量為80%,得到圖片壓縮上限尺寸sizeMax。如果小于設(shè)定的圖片最小尺寸intMaxPicSize,則跳出循環(huán)。如不滿足要求,進(jìn)行進(jìn)一步壓縮。
設(shè)定圖片質(zhì)量為0%,得到圖片壓縮下限尺寸sizeMin。如果壓縮后值大于設(shè)定的圖片最小尺寸intMaxPicSize,說明JPEG無法對(duì)圖片進(jìn)行繼續(xù)壓縮,則跳出循環(huán),完成壓縮。
JPEG對(duì)圖像進(jìn)行壓縮時(shí),當(dāng)圖片質(zhì)量在0%~80%時(shí),壓縮尺寸與壓縮大小近似滿足線性規(guī)律,因此進(jìn)行線性插值循環(huán),進(jìn)行壓縮。根據(jù)上限sizeMax(0),下限 sizeMin(0)和標(biāo)準(zhǔn) intMaxPic-Size,進(jìn)行線性插值,得出圖片質(zhì)量i。如得出的附件滿足要求,退出循環(huán)。不滿足要求,得到新的sizeMax(1)和 sizeMin(1),繼續(xù)進(jìn)行線性插值。 直到得到滿足要求的附件。
由于岸端程序?yàn)槎鄠€(gè)用戶并發(fā)操作,在數(shù)據(jù)同步過程中,有沖突發(fā)生的可能,導(dǎo)致同步數(shù)據(jù)的不真實(shí)性,為此必須采取相應(yīng)的隔離技術(shù)來避免這一情況。SQL SERVER2005中的隔離級(jí)別(未提交讀、已提交讀、可重復(fù)讀、可序列化、快照)針對(duì)的是提交的數(shù)據(jù)庫(kù)事務(wù)請(qǐng)求。然而,由于同步數(shù)據(jù)涉及內(nèi)容較復(fù)雜,不適用于事務(wù)操作,故采用單用戶同步的方式,即僅對(duì)管理員用戶開放數(shù)據(jù)同步權(quán)限。管理員一經(jīng)請(qǐng)求同步,客戶端調(diào)用數(shù)據(jù)庫(kù)存儲(chǔ)過程,自動(dòng)將其他權(quán)限用戶暫時(shí)屏蔽且為避免同步錯(cuò)誤的出現(xiàn),數(shù)據(jù)同步前,通過調(diào)用存儲(chǔ)過程,先將數(shù)據(jù)庫(kù)增量文件備份至數(shù)據(jù)庫(kù)服務(wù)器。一旦同步過程失敗,可將數(shù)據(jù)庫(kù)還原。同步完成后,自動(dòng)恢復(fù)非管理員用戶的進(jìn)程。
死鎖的產(chǎn)生,是由于資源占用的互斥情況,使資源的申請(qǐng)方永遠(yuǎn)分配不到必需的資源而無法繼續(xù)進(jìn)行工作。本數(shù)據(jù)同步體系下,可能在多用戶對(duì)同一記錄進(jìn)行請(qǐng)求時(shí)發(fā)生死鎖。數(shù)據(jù)的增量同步解決了同步文件的重復(fù)修改問題。然而,若同步雙方恰好修改同樣的數(shù)據(jù)項(xiàng),同時(shí)同步該內(nèi)容,則導(dǎo)致互相鎖定數(shù)據(jù),不能進(jìn)行修改,無法正確導(dǎo)入同步文件,同步不能正確進(jìn)行,進(jìn)入死鎖狀態(tài)。系統(tǒng)設(shè)定岸端優(yōu)先級(jí)大于船端;即船端無條件接受來自岸端的同步文件,即使待修改記錄標(biāo)識(shí)為屬于某同步文件,也將其更新。
系統(tǒng)分為船端、岸端兩部分,在CATIA建立船舶模型的基礎(chǔ)上,通過CATIA瀏覽器3DXML Player開放的VB編程接口,將船舶3D輕量化模型與使用VB.NET編制程序的數(shù)據(jù)表進(jìn)行交互操作,模型中構(gòu)件或設(shè)備與數(shù)據(jù)表項(xiàng)唯一對(duì)應(yīng)。數(shù)據(jù)項(xiàng)來源于系統(tǒng)SQL-Server數(shù)據(jù)庫(kù)。
船端系統(tǒng)中(圖8),船員選擇數(shù)據(jù)表記錄或模型中構(gòu)件,填寫維護(hù)保養(yǎng)情況,通過數(shù)據(jù)同步(圖9),設(shè)置相應(yīng)選項(xiàng)后,進(jìn)行同步。
岸端系統(tǒng)中(圖10),岸端機(jī)務(wù)讀取船端維護(hù)保養(yǎng)內(nèi)容,選擇數(shù)據(jù)表記錄或模型中構(gòu)件,對(duì)船員維護(hù)保養(yǎng)情況進(jìn)行審核,也通過數(shù)據(jù)同步,反饋給船員。
數(shù)據(jù)如何同步,同步過程如何保證準(zhǔn)確、及時(shí),是船舶維護(hù)保養(yǎng)信息處理的關(guān)鍵問題。本文針對(duì)這一過程中的不同部門需求,提出了一種面向船舶維護(hù)保養(yǎng)的數(shù)據(jù)同步方案。針對(duì)船體結(jié)構(gòu)的日常維護(hù)保養(yǎng)要求,為船岸兩端編寫了軟件客戶端,同時(shí)提出了船舶數(shù)據(jù)同步過程中可能涉及問題的解決方案,如采用XML格式的同步文件表達(dá)、增量同步機(jī)制、同步文件壓縮處理、并發(fā)及死鎖的安全處理等。
在船舶生命周期管理過程中,涉及到的部門還有許多,這種數(shù)據(jù)同步方案使船舶營(yíng)運(yùn)公司高效進(jìn)行維護(hù)保養(yǎng)的同時(shí),全面、詳細(xì)的對(duì)船體結(jié)構(gòu)狀態(tài)、設(shè)備狀態(tài)信息進(jìn)行掌控,為船舶營(yíng)運(yùn)公司、船級(jí)社等部門可能進(jìn)一步進(jìn)行的結(jié)構(gòu)計(jì)算、評(píng)估、決策等提供了必要的數(shù)據(jù)基礎(chǔ)。
[1]張俊,余劍峰.船舶異地協(xié)同設(shè)計(jì)設(shè)備資源庫(kù)設(shè)計(jì)[J].船舶工程,2006(1):50-53.
[2]李玉剛,紀(jì)卓尚,林焰.基于XML的船舶型值表表達(dá)標(biāo)準(zhǔn)化[J].中國(guó)造船,2008(3):79-86.
[3]賀澤.船舶協(xié)同設(shè)計(jì)及智力資源配置方法研究 [D].哈爾濱:哈爾濱工程大學(xué),2006.
[4]邱長(zhǎng)華,楊靜通,史東巖,等.基于STEP的船舶產(chǎn)品數(shù)據(jù)交換技術(shù)[J].船舶工程,2003(3):26-31.
[5]劉福順,唐寧九.利用Web服務(wù)和XML實(shí)現(xiàn)數(shù)據(jù)庫(kù)同步[J].計(jì)算機(jī)應(yīng)用研究,2005(2):51-56.
[6]萬歷,吳麗琴,王啟付.PLM中產(chǎn)品數(shù)據(jù)的建模及其過程狀態(tài)的管理[J].微計(jì)算機(jī)信息,2007(11):4-6.
[7]張國(guó)華.船舶產(chǎn)品數(shù)據(jù)管理中BOM信息的研究[D].哈爾濱:哈爾濱工程大學(xué),2004.
[8]景旭文,易紅,趙良才.船舶全壽期動(dòng)態(tài)建模及其應(yīng)用[J].中國(guó)造船,2006(2):59-62.
[9]Solid Quality Learning.SQL Server 2005 實(shí)現(xiàn)與維護(hù)[M].施平安,譯.北京:清華大學(xué)出版社,2007.
A Design Solution of Ship Maintenance-Oriented Distributed Data Synchronization
Yu Chun Chen Ming Li Yan
Ship CAD Engineering Center, Dalian University of Technology, Dalian 116024, China
Synchronization of distributed data is of importance to ship maintenance, which is an efficient means required for ship operating company to access real-time information of ship operation status.This paper is to give a kind of data synchronization solution for ship maintenance based on the distributed database (both ship-based database and shore-based database) of ship operating company.The disadvantages of existing data synchronization such as failure of addressing the hull structure maintenance,poor extension of format expression,untransmittability of attachment and insufficient security handling mechanism are presented.The flows of synchronized data specific for maintenance process are also examined.In addition, the main technical issues with regard to the existing data synchronization are investigated, including expression of ADO.NET-based XML synchronization files, processing of incremental synchronization documents, synchronization attachments compression, security handling of concurrent and deadlock, etc.
ship; maintenance;distributed data;XML;data synchronization
U672.7
A
1673-3185(2010)06-78-06
10.3969/j.issn.1673-3185.2010.06.016
2009-09-16
于 淳(1984-),男,碩士研究生。研究方向:智能船舶CAD及可視化、集成信息系統(tǒng)。E-mail:dayuchun@sina.com
陳 明(1972-),男,教授。研究方向:智能船舶CAD與集成信息系統(tǒng)。E-mail:chenming@dlut.edu.cn