王建雄
(1.北京全路通信信號研究設計院集團有限公司,北京 100070;
2.北京市高速鐵路運行控制系統工程技術研究中心,北京 100070)
規則引擎[1,2]是用來管理和自動實現業務規則的組件,其主要實現的功能是對規則進行抽取、判定及管理,并提供規則調度和策略管理[3]。首先需對頻繁變化的業務流程進行規則抽象,將提取出來的規則放進規則知識庫中進行管理。其基本過程是將加載到規則引擎中的業務規則與提交給規則引擎的數據對象進行匹配,判定是否激活相應的業務規則,觸發相應的狀態變更,達到系統自動處理的目的。
列控維護系統自動化報警框如圖1所示。該報警框架創新性的引入規則引擎技術,將代碼與實現分離出來,不需要研發人員的參與即可配置報警規則文件,提供操作指導,提高核心引擎的適應性和系統的可維護性,縮短報警管理的周期。

圖1 列控維護系統自動化報警框架示意圖
該報警管理系統能夠實時接收各監測設備的狀態信息,按照既定的規則對實時信息進行分析,當規則滿足時,自動執行預定義處理動作,如通過界面展示等方式向電務維修人員告警,并存儲在數據庫中供事后分析。
規則庫是將系統工作原理及專家知識轉換為規則文件,形成規則庫,供匹配器和報警信息進行匹配,將規則以XML文件形式來實現規則庫;本文設計的規則模板如下所示。


規則模板節點設計報警規則序號no,規則描述及報警優先級。Condition節點設置alarmobject,代表報警對象;alarmlogic代表該對象產生報警邏輯, 包 括(>,>=,<,<=,!=,and,or,! ,+,-,*,/)等操作屬性;repeat代表該報警對象是否重復報警;action中的alarmstatus代表執行動作為報警或恢復。
規則模板設計完成后,操作員可直接將報警樹的邏輯寫入規則文件中,只需設置對象名,報警邏輯,是否發生等屬性,無需關注報警管理本身的邏輯。根據設計的規則模板屬性可知,通過報警樹的層級關系可顯示出報警的依賴關系。
本文的規則引擎采用數據驅動的正向推理法,根據正向推理法的算法描述和基于規則的專家系統[4,5]結構,可以得出規則引擎的推理步驟[6]:
1) 將列控維護系統采集到的數據進行轉換后,輸入到工作存儲器中;
2) 使用匹配器將規則庫中的規則和相應的數據進行比較;
3) 如果執行規則存在沖突,即同時激活多條規則,將沖突的規則放入沖突集合;
4) 將激活的規則按順序放入議程;
5) 重復步驟2)和3),直至議程中的所有規則執行完畢。
根據規則引擎推理原理,可以得出規則與事實匹配過程流程圖,如圖2所示[7,8]。

圖2 模式匹配規則和事實流程圖
文中提出的基于規則引擎的開發模式緊密地與規則引擎思想相結合,提出的步驟和方法能夠很好地幫助開發人員在開發過程中分離業務流程和業務規則,明確業務規則,并使這些業務規則具有可描述化、可用化的性質,最終得以在列控維護系統中實現。在實際應用開發過程中,引入基于規則引擎的開發模式使應用開發具有更高的可維護性和靈活性,具有推廣使用的價值。
[1]羅松.CTCS2+ATO城際鐵路列控系統總體技術研究[J].鐵路通信信號工程技術,2015,12 (3) :1-5.
[2]ChishoIm M.How To Build a Business Rules Engine[M].San Francisco:Morgan Kaufmann,2003.
[3]Graham I.Business Rules Management and Service OrientedArchhecmre[M].New Jersey:Wiley,2007.
[4]彭磊.規則引擎原理分析[J].福建電腦,2006(9):42.
[5]尹朝慶.人工智能與專家系統[M].2版.北京:水利水電出版社,2009.
[6]蔡自興,徐光佑.人工智能及應用[M].北京:清華大學出版社,2004.
[7]何仁杰,梁冰.用規則引擎替換代碼[EB/OL].2005-02-02[2017-07-04].http://blog.csdn.net/csdnloading/article/details/277276.
[8]吉奧克.專家系統原理與編程[M].北京:機械工業出版社,2006.
[9]郭芳,白建軍.基于Rete算法的規則引擎JBoss Rules[J]. 計算機時代,2008 (1) :12-14.