1 引言
鐵路車站信號計算機聯(lián)鎖系統(tǒng),是鐵路信號的基礎(chǔ)設備,同時也是鐵路運輸領(lǐng)域中重要的控制系統(tǒng),它是以現(xiàn)代計算機技術(shù)、控制技術(shù)和通信技術(shù)為基礎(chǔ)來實現(xiàn)對車站信號設備的聯(lián)鎖控制。計算機聯(lián)鎖軟件成為了計算機聯(lián)鎖系統(tǒng)的核心,因此必須確保它對聯(lián)鎖邏輯的描述和安全控制的實現(xiàn)準確無誤。而隨著我國高速鐵路的快速發(fā)展,對聯(lián)鎖軟件在技術(shù)和功能上提出了新的要求。傳統(tǒng)軟件開發(fā)方法在靈活性、可維護性、軟件安全性以及開發(fā)效率上都顯露出不足。
計算機聯(lián)鎖是以計算機為主要技術(shù)手段實現(xiàn)車站聯(lián)鎖的實時控制系統(tǒng)。其基本任務是對車站值班員的操作命令及現(xiàn)場各種表示信息通過計算機進行邏輯運算,并輔以各種“故障-安全”措施。聯(lián)鎖系統(tǒng)各主要部分的功能和設置地點的劃分層次結(jié)構(gòu),如圖1所示。
圖1 計算機聯(lián)鎖系統(tǒng)
聯(lián)鎖層是聯(lián)鎖控制系統(tǒng)的核心,聯(lián)鎖機構(gòu)除了接收來自人機會話層的操作信息外,還接收i/o接口層的反映信號機、動力轉(zhuǎn)轍機和軌道電路狀態(tài)的信息,即信號控制命令和道岔控制命令。i/o接口層接收來自聯(lián)鎖層的控制命令,經(jīng)過信號機控制電路,改變信號顯示;接收來自聯(lián)鎖層的道岔控制命令,驅(qū)動道岔轉(zhuǎn)換。室外設備是聯(lián)鎖系統(tǒng)的控制對象,它包括信號機、轉(zhuǎn)轍機和軌道電路。
本文針對安全苛求軟件的特點,面向我國高速鐵路計算機聯(lián)鎖軟件的應用需求,基于目前主流的SOA思想的實現(xiàn)規(guī)范,即服務組件體系結(jié)構(gòu)sca,提出并實現(xiàn)了一個完整的服務組件開發(fā)模型,掙脫web service框架對sOA思想的束縛,并能根據(jù)服務組件模型生成代碼框架。
2 soa和sca
面向服務的體系架構(gòu)soa(service oriented architecture)是1996年gartner公司描述實施企業(yè)“v英文”時第一次提出來的。w3c將soa定義為:“一套可以被調(diào)用的組件,用戶可以發(fā)布并發(fā)現(xiàn)其接口!眘oa是一種軟件設計開發(fā)思想,它超越并包含所有的具體技術(shù)和所有的具體架構(gòu)。服務組件框架sca(service component architecture)的java標準來自ibm。sca是一套面向服務的soa編程模型或者說編程架構(gòu),也是一種soa思想的實現(xiàn)方式。sca通過模塊 (composite) 將sca的組件集成在一起的。模型開發(fā)應用中,總是期望能提高軟件開發(fā)效率,增強軟件安全性。因此,本文針對聯(lián)鎖軟件安全性高的特性,提出一種面向聯(lián)鎖的soa服務組件開發(fā)模型。
3 聯(lián)鎖邏輯服務組件的開發(fā)模型
聯(lián)鎖軟件主要由兩大部分構(gòu)成,一是聯(lián)鎖功能程序,二是聯(lián)鎖數(shù)據(jù)。聯(lián)鎖功能程序主要是對聯(lián)鎖數(shù)據(jù)進行邏輯運算以完成聯(lián)鎖功能;聯(lián)鎖數(shù)據(jù)主要用于反映監(jiān)控車站各個設備的區(qū)動采集對象的特征和狀態(tài)。聯(lián)鎖軟件的核心部分是關(guān)于基本進路過程的處理,包括進路選排、進路鎖閉、進路信號開放、進路信號保持和進路解鎖等過程。由此,基本進路可以看成聯(lián)鎖軟件提供的流程服務,對應人機會話層操作員辦理進路的業(yè)務需求。對于操作人員來說,基本進路處理流程作為一個整體服務被調(diào)用。這個流程服務包括以下幾個任務:進路選排、進路鎖閉、進路信號開放、進路信號保持和進路解鎖,每個任務通過調(diào)用相應的服務來完成聯(lián)鎖軟件的功能。在業(yè)務流程進路辦理的過程中,進路選排服務、進路鎖閉服務調(diào)用成功,但是進路信號開放服務因為信號燈故障不能開燈,此時對于聯(lián)鎖系統(tǒng)軟件的人機會話層來說,業(yè)務流程進路辦理調(diào)用已經(jīng)失敗。而進路選排服務、進路鎖閉服務的調(diào)用已經(jīng)成功完成,相關(guān)的驅(qū)動采集對象如信號機、道岔和區(qū)段等設備狀態(tài)和特性已經(jīng)被這些成功調(diào)用的服務修改了。這就有可能導致不可控的命令下發(fā)到室外設備,導致安全隱患。因此,在進路辦理的執(zhí)行過程中出現(xiàn)了業(yè)務流程服務未成功調(diào)用,但卻對設備對象數(shù)據(jù)產(chǎn)生影響的場景。
基于上述問題,本文的服務模塊開發(fā)模型定義了一種被稱為“補償”的服務機制來完善服務的模型,以解決業(yè)務流程服務的執(zhí)行原子性和數(shù)據(jù)一致性的問題。例如流程服務逐個調(diào)用兩個服務,如果只有一個基本服務調(diào)用成功,可以通過適當?shù)氖虑閬硌a償前一個服務調(diào)用成功所產(chǎn)生的影響。每個基本服務都有一個相應的補償處理服務,用于消除對應基本服務的調(diào)用產(chǎn)生的影響。一旦進行補償,流程服務中已經(jīng)運行完成的所有服務都會依照特定的邏輯進行補償。補償服務機制致力于維護業(yè)務流程的執(zhí)行原子性,即業(yè)務流程的執(zhí)行結(jié)果只能是以下兩種情形之一:流程服務執(zhí)行成功或流程服務執(zhí)行失敗但不產(chǎn)生任何影響。當執(zhí)行特定的流程服務時,相關(guān)聯(lián)的用于補償調(diào)用的就是補償服務。補償服務僅在流程服務完成時才能夠被調(diào)用,當流程執(zhí)行過程中出現(xiàn)故障時,執(zhí)行預先關(guān)聯(lián)的補償服務來補償業(yè)務流程服務的行為。在一個業(yè)務流程執(zhí)行過程中,如果定義了關(guān)聯(lián)的補償服務,就應該記錄業(yè)務流程各個服務的執(zhí)行順序,注冊關(guān)聯(lián)的補償服務及輸入數(shù)據(jù)到補償服務處理隊列。如果業(yè)務流程正常完成,則不需要任何補償。因此基于以上補償機制,完善的服務組件補償模型應該滿足這樣的條件:對任意一個業(yè)務流程服務,每次調(diào)用的結(jié)構(gòu)要么是成功執(zhí)行,要么不產(chǎn)生任何影響。即實現(xiàn)了業(yè)務流程的執(zhí)行原子性。基于以上理論,可以得出sca構(gòu)架下補償服務處理機制的通用模型如圖2所示。
圖2 補償服務處理機制模型
如圖2所示,基本服務1和基本服務2屬于同一個組合服務,且都成功的完成了調(diào)用(第1,2步)。而屬于流程服務的基本服務3的調(diào)用(第3步)也成功完成。若此時基本服務4調(diào)用(第4步)失敗,被業(yè)務流程服務關(guān)聯(lián)的補償服務捕捉到,觸發(fā)了補償服務(第5步)。補償服務開始執(zhí)行,通過調(diào)用后進先出的補償服務隊列(與業(yè)務流程完成的次序相反),依次調(diào)用補償處理服務(第6-10步)來補償之前操作產(chǎn)生的影響。
實際的聯(lián)鎖軟件應用中,用戶的需求經(jīng)常是比較復雜的。聯(lián)鎖軟件服務組件除了調(diào)用基本的服務組件之外,也需要調(diào)用一些優(yōu)先級較高的緊急操作服務,而這些服務組件往往是依賴外部設備驅(qū)動采集的狀態(tài)。因此,在服務模型中引入了兩個特殊的端點,一個是“導入”(import),使得模塊中的服務組件可以調(diào)用模塊外部的服務。另一個是“導出”(export),它使得模塊外部的應用可以調(diào)用模塊中的服務組件。導入和導出的引入增加了服務組件的靈活性,使得此模型的服務調(diào)用能夠跨越服務模塊的限制。
4 模型在計算機聯(lián)鎖軟件中的應用
為了驗證和測試上述模型的有效性,基于以上服務模塊模型,在linux平臺上開發(fā)了一個計算機聯(lián)鎖軟件系統(tǒng)。此聯(lián)鎖邏輯補償模型可以獲得計算機聯(lián)鎖軟件系統(tǒng)的服務組件補償模型如圖3所示。
圖3 計算機聯(lián)鎖軟件系統(tǒng)的補償模型
聯(lián)鎖軟件實時監(jiān)測人機交互層操作人員的操作命令,調(diào)用相應的業(yè)務流程服務執(zhí)行相應的軟件功能。在執(zhí)行流程服務的同時,聯(lián)鎖軟件監(jiān)測是否有來自外部的高優(yōu)先級服務調(diào)用,以保證緊急情況下聯(lián)鎖軟件的安全性需求。在以往的聯(lián)鎖軟件進路辦理過程中,進路辦理的進路選排、進路鎖閉、進路信號開放、進路信號關(guān)閉和進路解鎖等過程在程序執(zhí)行時,除了對聯(lián)鎖數(shù)據(jù)進行邏輯運算,還需要檢測各個執(zhí)行過程是否成功完成。這提高了聯(lián)鎖軟件業(yè)務流程各個服務模塊的耦合度。每個服務子模塊都應包含補償處理,以消除業(yè)務流程執(zhí)行過程中當前所有已經(jīng)成功執(zhí)行的子模塊所產(chǎn)生的影響。因此,此服務模型的業(yè)務流程子服務模塊的補償處理只關(guān)心當前子模塊成功調(diào)用產(chǎn)生影響,而不會關(guān)聯(lián)到業(yè)務流程執(zhí)行的上下文環(huán)境。因此,本文提出的服務組件開發(fā)模型能在相當大的程度上減少軟件設計開發(fā)的冗余,提高軟件開發(fā)的效率,同時這也限制了各個子模塊的功能邊界,減少了因為模塊之間高度耦合而帶來的安全性問題。
5 結(jié)束語
本文基于soa思想,針對安全苛求軟件的特點,設計了在sca標準下一種完整的服務組件開發(fā)模型,通過在北京地鐵試驗線計算機聯(lián)鎖系統(tǒng)的應用驗證了該模型的正確性。由此模型驅(qū)動生成服務組件代碼框架,不僅提高了軟件的安全,還大大提高了軟件的開發(fā)效率。此服務組件模型的業(yè)務流程服務依賴補償服務,這種補償服務機制雖然能提高軟件開發(fā)效率,但其與業(yè)務流程關(guān)聯(lián)度還比較高,提高了服務模塊的耦合程度。因此,將來的方向是改進當前補償服務的執(zhí)行機制,降低與具體業(yè)務流程之間的耦合程度。
核心關(guān)注:拓步ERP系統(tǒng)平臺是覆蓋了眾多的業(yè)務領(lǐng)域、行業(yè)應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業(yè)務領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請注明出處:拓步ERP資訊網(wǎng)http://www.oesoe.com/
本文標題:SOA架構(gòu)下補償模型驅(qū)動的安全苛求軟件開發(fā)
本文網(wǎng)址:http://www.oesoe.com/html/consultation/1083963082.html