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