喬福超
(海軍航空工程學院,山東煙臺 264001)
交互式電子技術手冊(interactive electronic technical manual,IETM)是以數字形式存儲,采用文字、圖形、表格、音頻和視頻等形式,以人機交互方式提供裝備基本原理、操作使用和維修內容的技術出版物[1]。與傳統的電子技術手冊相比,IETM 最顯著的特征是具有交互性,這使得用戶與計算機之間能夠以人機對話的方式獲取信息與知識,極大地提高了裝備維修效率。
IETM 普遍采用過程數據模塊(Data Module)和邏輯引擎(Logic Engine)相互配合的方式來實現人機交互功能。目前,針對歐洲S1000D 標準的IETM 開發平臺已經具有了成熟的邏輯引擎。我國自2009年頒布GJB6600 標準以來,也出現了各型支持該標準的IETM 開發平臺,但由于平臺的側重點不同,目前所接觸的幾款支持GJB6600 標準的開發平臺都暫不提供對過程數據模塊和邏輯引擎的支持。因此,設計一種基于GJB6600 標準的邏輯引擎,為相關的研究與開發提供參考。
IETM 中的技術信息是以數據模塊的形式進行存儲的。數據模塊是描述裝備結構、性能和操作步驟等技術信息的獨立的、完整的數據單元。根據技術信息的用途不同,GJB6600將數據模塊分為8 類,包括描述類、程序類、故障類、維修計劃類、操作類、圖解零件類、連線類、過程類。其中,過程數據模塊是一類特殊的數據模塊,它是具有內在邏輯判斷的腳本流,能夠根據裝備的狀態信息組織其他數據模塊和步驟的顯示順序。
GJB6600 所定義的過程數據模塊包括〈變量聲明〉、〈操作準備〉、〈模塊執行順序〉和〈收尾工作〉子元素,其數據模型如圖1 所示。其中,〈變量聲明〉和〈模塊執行順序〉是實現IETM 交互性的2 個重要元素。下面對過程數據模塊中的主要元素作簡要分析。

圖1 過程數據模塊的數據模型
在裝備維修過程中,IETM 經常需要獲取一些與裝備相關的狀態信息(如溫度、輸出電壓等),以便判斷故障類型,指引用戶維修。〈變量聲明〉元素即是用于對維修過程中所需的所有狀態信息(變量)進行定義和初始化的。在IETM 運行過程中,使用邏輯引擎驅動對話框或調用外部測試程序,以便用戶能夠手動輸入信息或由自動測試設備自行輸入信息。邏輯引擎將所獲取的狀態信息以變量的形式存儲于狀態表中,以供后續的邏輯判斷、數值計算或其他程序使用。
〈模塊執行順序〉元素用于描述多個數據模塊和步驟之間執行的先后順序,形成具有內在判斷邏輯的腳本流。它包括〈順序執行方式〉、〈分支選擇方式〉、〈條件判斷方式〉、〈循環判斷方式〉4 種子元素。其中,〈順序執行方式〉是核心元素,其作用是描述向用戶呈現的信息內容,包括獨立的操作步驟、對話框、消息框、引用的數據模塊、外部請求等內容;〈分支選擇方式〉描述多分支情況下的業務邏輯,邏輯引擎通過判斷其子元素的〈適用性信息〉元素值或〈適用性引用〉屬性值,決定在特定的邏輯條件下所應選擇的分支;〈條件判斷方式〉用于描述一個if-then-else 的業務邏輯,邏輯引擎通過判斷其〈表達式〉元素值決定應選擇的分支;〈循環判斷方式〉描述一個循環邏輯,邏輯引擎通過判斷其〈表達式〉元素值決定是否跳出循環。需要指出的是,上述4 種元素均可在其子元素中繼續套用這4 種結構,以描述任意復雜程度的腳本流。
〈表達式〉是過程數據模塊中極為重要的元素,在腳本流中,所有的邏輯表達式、算術表達式、直接量等都需要使用〈表達式〉進行描述。該元素具體包含4 種結構的子元素,如圖2 所示。
人機對話是IETM 交互功能的基礎。在裝備維修過程中,當邏輯引擎需要獲取或更新某一狀態信息(變量)時,會彈出對話框并要求用戶輸入相應的信息。〈對話框〉元素即用于描述所彈出對話框的內容以及與之相關聯的變量。該元素主要包含5 種類型的子元素,即〈填空〉、〈菜單〉、〈按鈕〉、〈消息框〉、〈對話組合〉子元素,通過搭配使用這5 種子元素可實現簡潔高效的對話框。〈對話框〉元素的數據模型如圖3 所示。

圖2 〈表達式〉元素的數據模型

圖3 〈對話框〉元素的數據模型
過程數據模塊是靜態的腳本,其本身無法實現人機交互。邏輯引擎是解析執行靜態腳本的一個軟件,是腳本流的解釋器[2]。在IETM 中,過程數據模塊必須借助邏輯引擎的支持才能完成人機交互功能。
本節以一段維修流程為例,對過程數據模塊和邏輯引擎的作用進行說明,如圖4 所示。首先,數據模塊編制人員將由廠商提供的設備維修流程按照一定的IETM 標準編制成過程數據模塊(該項工作通常是借助IETM 開發平臺完成的,優秀的開發平臺能夠使用圖形界面來構建維修流程,并自動生成基于IETM 標準的過程數據模塊)。在數據模塊編制完成后,邏輯引擎對過程數據模塊中的靜態腳本進行解析并處理。邏輯引擎的運行涉及2 方面內容:解析器和處理器。其中,解析器負責對XML 文檔中的節點進行遍歷,并根據節點的類型調用相應的處理器;處理器則根據當前所遍歷的節點類型及內容執行相應的處理,如顯示數據模塊內容、彈出對話框等。

圖4 過程數據模塊和邏輯引擎的作用示意圖
解析器與處理器有多種實現方式,本研究提出2 種可行的方案。
1)解釋型邏輯引擎
該型邏輯引擎的運行機理類似于程序設計語言中解釋型語言的翻譯過程。它首先加載過程數據模塊,然后由解析器逐個節點地進行遍歷,每當遍歷到一個節點,便調用處理器執行相應的操作。解析器會根據用戶的操作和文檔內在的邏輯有選擇性地遍歷XML 文檔,是一種動態的翻譯方式。
2)編譯型邏輯引擎
該型邏輯引擎的運行機理類似于程序設計語言中編譯型語言的翻譯過程。它是將整個過程數據模塊直接翻譯成完整的可執行的程序代碼。它首先加載過程數據模塊,并對文檔中的節點進行遍歷。每當遍歷到一個節點,即調用相應的翻譯函數,將該節點的內容翻譯成可執行代碼,并以字符串的形式存儲該代碼。在遍歷完成后,將所得到的所有節點的代碼拼接形成完整的程序代碼,并調用執行。
本研究使用JavaScript 語言設計了一款基于GJB6600 的編譯型邏輯引擎。下面對引擎實現的關鍵環節和程序流程設計進行詳細說明。
3.1.1 XML 解析
XML 文檔的解析通常需要借助XML 解析器來完成,本文即采用了基于DOM 規范的解析器。DOM 規范為解析XML 文檔定義了一組標準接口。DOM 解析器首先讀入整個文檔,然后將該文檔轉換成常駐內存的樹狀結構,即DOM樹。程序代碼可以通過節點之間的關系、標簽名、屬性等訪問DOM 樹中的節點,并獲取每個節點所包含的數據。
3.1.2 翻譯函數
編譯型邏輯引擎的處理器的主要工作是將節點內容翻譯成程序代碼。因此,應依據GJB6600 過程數據模塊的數據模型,為每一種類型的元素設計相應的翻譯函數。翻譯函數將所要翻譯的節點作為參數傳入,將節點內容翻譯成程序代碼,并存入一個字符串變量作為函數返回值。以〈表達式〉節點為例,其對應的翻譯函數代碼如下所示:


圖5 所示的是一個表達式節點的XML 樹形圖,該節點描述了一個邏輯表達式,值為:(V_Min >11)&& (V_Max <13)&&(V_Ripple <0.5)。使用上述翻譯函數對其進行翻譯,將其最頂層表達式節點作為參數輸入該函數,所返回的字符串值為:(((V_Min)>(11))&&((V_Max)<(13)))&&((V_Ripple)<(0.5)),即完成了對該節點內容的翻譯。

圖5 表達式節點樹形結構
3.1.3 遍歷順序
編譯型邏輯引擎最終將所有節點的翻譯代碼拼接形成完整的程序代碼。代碼的拼接順序受節點的遍歷順序影響,因此必須選擇合適的遍歷方式。采用類似二叉樹中先序遍歷的方式,按自頂向下、自左向右的順序,先遍歷節點本身及其子節點,再遍歷兄弟節點。
3.1.4 無限嵌套
在過程數據模塊中,經常出現元素之間相互嵌套或元素嵌套其本身的情況,如圖5 中的<表達式>元素。在XML文檔中,這種類型的節點可以具有任意多層次的子節點,其結構無法預測。因此,對這種可無限嵌套的元素設計翻譯函數時,可使用遞歸調用的方法,如上述<表達式>元素的翻譯函數所示。
基于GJB6600 的編譯型邏輯引擎的程序流程圖如圖6所示。該程序首先加載XML 文檔,并將其轉化為DOM 樹,聲明全局字符串變量Str 以存儲整個模塊翻譯完成的代碼。然后對文檔節點進行遍歷,每當遍歷到一個節點,即調用相應的翻譯函數,將該節點的內容翻譯成可執行代碼,并以字符串的形式存儲。當文檔全部遍歷完成后,Str 變量值即為完整的程序代碼,調用eval()函數即可執行字符串中的代碼。
論述了GJB6600 標準中過程數據模塊的結構和作用,分析了IETM 邏輯引擎的運行機理,提出了邏輯引擎的2 種實現方案,即解釋型邏輯引擎和編譯型邏輯引擎。使用JavaScript 語言設計實現了基于GJB6600 標準的編譯型邏輯引擎。研究成果對IETM 邏輯引擎的設計與開發具有一定的參考價值。

圖6 邏輯引擎程序流程
[1]GJB6600,裝備交互式電子技術手冊[S].
[2]寇建華,左洪福,蘇艷.交互式電子技術手冊解析關鍵技術研究[J].電腦知識與技術,2009,5(28):7941-7942.
[3]劉雙雙,葉曉慧,王紅霞.嵌入故障診斷策略的IETM 的研究與實現[J].計算機測量與控制,2010,18(9):1964-1966.
[4]朱興動.武器裝備交互式電子技術手冊—IETM[M].北京:國防工業出版社,2009.
[5]張麗麗,暢峰.基于S1000D 的空空導彈系統IETM 的制作[J].四川兵工學報,2014,35(5):58- 61.
[6]徐宗昌,雷育生.裝備IETM 研制工程總論[M].北京:國防工業出版社.2012.1-44.
[7]徐宗昌,孫寒冰,朱偉成,等.基于IETM 的交互式故障診斷模式研究[J].計算機測量與控制,2013,21(10):2651- 2654.
[8]于大海,劉浩.基于故障模式的交互式電子手冊的設計與實現[J].四川兵工學報,2010,31(6):28- 30.
[9]崔建鋒.交互式電子技術手冊—IETM 綜述[J].航空制造技術,2011(12):105-107.
[10]劉松風,林志文,楊士元.基于IETM 驅動的智能化便攜診斷設備[J]. 計算機測量與控制,2009,17(6):1030- 1032.
[11]ASD S1000D,International Specification for Technical Publications Utilizing A Common Source DataBase,Issue 4. 0[S].