1 引言
可靠性框圖(RBD)是可靠性評估的關鍵功能之一,它反映了各組成部分的故障或它們的組合如何導致產品(系統)故障的邏輯關系,它利用互相連接的方框來顯示系統的失效邏輯,分析系統中每一個成分的失效率對系統的影響,以幫助評估系統的整體可靠性,F階段只考慮邏輯關系為串聯、并聯、判決等或這幾種混聯。
2 系統需求
本系統中RBD主要用來讓用戶進行產品可靠性框圖的編輯以及進行對應產品可靠性評估參考?煽啃钥驁D和產品相關,每個產品可能會有多個可靠性框圖?驁D由用戶和系統交互產生,對框圖的結構化描述信息永久保存在系統中,再次使用時可直接生成?驁D中的元件來自所選產品的下一級產品列表,因此,可靠性框圖中的結點可以向上或向下進行收縮和擴展,以形成框圖的層次結構。
系統允許用戶在B/S結構下繪制產品的結構圖,包括產品結構項、開始點、結束點、并聯關系、判決關系等,提供圖形放大、縮小,圖像重置,元件添加、移動、刪除,元件間連線,路徑查找,拓撲調整等功能,并且能夠將繪制完的結構圖與具體產品相關聯,提供上傳保存,載入重新繪制等功能。
3 關鍵技術
本可靠性框圖管理系統采用的關鍵技術有:
1. SVG標準實現圖形化顯示 SVG(Scalable Vector Graphics,可縮放矢量圖形)是一種基于XML標準,用來描述二維矢量圖形和矢量/點陣混合圖形的標記語言。SVG規范定義了SVG的特征、語法和顯示效果,包括模塊化的XML命名空間(namespace)和SVG文檔對象模型(DOM),實現了圖形、圖像和文字的有機統一。
2. XML文件裝載 SVG文件符合DHTML DOM規范,XML文件客戶端裝載采用微軟控件XMLDOM,服務端XML文件裝載采用W3C標準DOM以及Java所提供的標準解析接口。
3. 事件響應 描述圖形的SVGDocument以及描述拓撲關系的XML文件裝載成功后,通過JavaScript注冊事件響應用戶在SVG界面上的操作過程,并處理DOM文件的內容。
4. B/S通信 文件的上傳保存與下載的過程,采用XMLHTTP為載體,XMLString格式內容為傳輸對象。服務端處理過程由Servlet處理。
5.圖形拓撲描述數據結構 本系統采用鄰接表結構存儲圖形信息,所需的基本數據結構,如Hash,linklist,stack等,由Javascript原形擴展。
4 系統設計
4.1 前臺交互子系統設計
前臺交互子系統主要涉及根據用戶指定的產品,繪制產品的可靠性框圖,同時設置可靠性框圖節點之間的邏輯關系和相關的可靠性指標以及評定方法等。此外,對于創建的RBD圖形用戶在交互過程中對圖形節點可以無極縮放,前臺交互子系統在設計時采用矢量圖形進行存儲,本系統采用內嵌SVG技術實現RBD圖形的交互。其前臺交互邏輯如圖1所示。
圖1 RBD前臺交互過程
在SVG中,允許矢量圖像、點陣圖像和文本三種圖像對象存在。SVG定義了包括直線、圓形、橢圓形、矩形、多邊形和折線在內的六種常用的基本矢量形狀,在此基礎上,利用坐標變換、路徑、動畫、濾鏡等功能擴展,通過多層次組合矢量、點陣以及文本圖,并配以各種屬性,進行矢量繪圖。SVG的XML語法使開發人員能夠使用現有技術并利用現有的基于XML的基礎結構和開發工具?膳c現有的的Web技術集成,并可嵌入到現有基于瀏覽器的應用程序中,從而提供更加豐富的視覺效果。同時提供了豐富的消息觸發及事件相應函數,實現與用戶的交互。前臺設計界面如圖2所示。
圖2 RBD前臺交互頁面
在本系統中,對于實際產品節點采用實節點描述;對于多個節點并聯的方式,系統采用并聯虛節點進行描述,所有并聯節點被此并聯虛節點包含;對于先串聯再并聯的情況,將串聯部分采用串聯虛節點的方式進行描述,所有串聯部分包含在此虛節點中。
圖3 虛框與子節點之間的組合
4.2 后臺邏輯設計
4.2.1 設計思想
本RBD模塊需上層模塊進入,在用戶選中欲查看產品項以后,可選擇是否查看其相應的RBD圖形,確認查看后,若有該項所對應的RBD圖,則裝載界面,然后等候用戶的交互操作。若無,提示用戶該項RBD圖不存在,是否新建。其運行流程如下圖4所示。
圖4 系統運行流程
后臺邏輯類主要用于提供業務邏輯供評估系統以及界面層調用。在對RBD框圖分析之后,根據其特點,設計用實結點與虛結點來表示其中的元件。實結點包括開始節點、結束結點、判決節點、普通結點,是基礎的元件。虛結點包括并聯虛結點和串聯虛結點,用于對混聯等復雜結構進行建模。虛結點中可以包含各種類型的結點,也包括虛結點,所以是一個遞歸的概念。對于遞歸的虛結點設計,正好可以使用Composite設計模式,可以保持各個層次上的結點信息,并且使其他業務模塊的使用邏輯簡化。
在設計中可以看出,并行虛結點和串行虛結點中還可以包含其他類型的結點,所有的結點都派生于結點組件類,所以虛結點中可以包含實結點也可以包含虛結點,形成遞歸的結構。在虛結點中可以得到子結點的Iterator遍歷接口,非常方便地遍歷其子結點,并且可以通過子結點的Iterator遍歷更下層的子結點,從而遍歷所有的產品。利用開始結點和結束結點,可以很容易的獲得圖形的入口和結束點,方便地構造出圖形拓撲。在結點中可以得到該結點產品對應的下一級圖形,可以分層設計可靠性框圖。
一個結點可能對應一個產品或者沒有對應產品,如開始結點就不會對應產品,一個產品則在很多圖上可能有多個結點與之對應。結點中并沒有包含圖形信息,只是管理了串并聯等邏輯信息,因為圖形的顯示以及處理等是在前臺界面中實現的,后臺邏輯類只關心邏輯內容的更改,以簡化設計。
在RBD圖類中的一個重要屬性是“SVG圖”,對應了數據庫中的一個CLOB字段,保存了框圖的SVG文件,該文件描述了SVG框圖的圖形以及邏輯性質,下一節中會對其設計進行詳細描述。這代表了可靠性框圖子系統設計的一個重要方面,即前臺負責交互,生成SVG文件,傳遞給后臺邏輯,保存在數據庫中,后臺從SVG文件中恢復出RBD圖對象結構供評估等模塊調用。這種劃分簡化了客戶端與服務器端之間的通訊,使2者達到松耦合,同時使框圖本身也可以獨立使用。這種設計思想的描述如圖5所示。
圖5 RBD設計邏輯
4.2.2 系統實現
本系統所有關鍵操作都建立在以下5個主要的文件對象上:SVG文件對象:包含圖形信息,從頁面embed元素獲取,符合DHTML DOM規范;NodeTopoDoc對象、LineTopoDoc對象、ParallelTopoDoc對象、NodeAttDoc對象,后面四個拓撲對象分別用來保存結點拓撲關系、線拓撲關系、并聯單元拓撲和結點屬性關系,均由客戶端生成或從服務端裝載,符合XMLDOM規范;以下對系統實現的主要js文件進行說明:
rbdXmlDataManage.js文件中包含SVGDoc文件對象和以上提到的四個拓撲文件對象,其方法包括得到SVGDoc和各個拓撲文件對象、創建4個空的拓撲文件對象、根據用戶要求從服務端裝載4個拓撲文件對象和響應用戶要求保存SVGDoc和4個拓撲文件對象至服務器端。當用戶要對一個產品創建可靠性框圖或對已有的框圖進行編輯時,rbdXmlDataManage.js中的getSvgObj()方法根據用戶所選擇的模式(新建還是加載已有SVGDoc)返回相應的SVGDoc文件對象。如果是新建SVGDoc,createXmlDocuments()方法將創建4個空的拓撲文件對象;否則,loadXmlDocuments()方法從服務端裝載4個拓撲文件對象。saveXmlDocuments()方法保存SVGDoc和拓撲文件對象至服務器端。
rbdTopology.js 是拓撲文件操作函數集,功能包括根據id類型不同選擇不同的獲取、設置、刪除拓撲函數,獲取、設置、添加、刪除各種類型的拓撲結構等。rbdBasicStructs.js對應于4個XMLDOM 文件,實現了拓撲項的數據結構。rbdToolsBasic.js用于設置工作模式。rbdNavigate.js實現了SVG圖象的基本操作功能,包括畫布4個方向的移動函數、畫布放大函數zoomInTool(evt,evtType)、畫布縮小函數zoomOut_2x(evt, evtType)、圖元移動函數panTool(evt, evtType)和線上加圖元函數addNodeOnLine(evt, evtType)。
rbdMouseEntry.js實現了監聽SVG上注冊的事件,包括鼠標按下事件mouseDown(evt)、鼠標移動事件mouseMove(evt)和鼠標抬起事件mouseUp(evt)?梢韵胂,一般用戶的一次操作過程由以上3個過程合并完成。
作者簡介:劉文姣,華中師范大學計算機科學系2006級研究生,研究方向:可靠性框圖