基于规则引擎的列控维护系统自动化报警研究
2018-03-07王建雄
王建雄
(1.北京全路通信信号研究设计院集团有限公司,北京 100070;
2.北京市高速铁路运行控制系统工程技术研究中心,北京 100070)
1 规则引擎的工作原理
规则引擎[1,2]是用来管理和自动实现业务规则的组件,其主要实现的功能是对规则进行抽取、判定及管理,并提供规则调度和策略管理[3]。首先需对频繁变化的业务流程进行规则抽象,将提取出来的规则放进规则知识库中进行管理。其基本过程是将加载到规则引擎中的业务规则与提交给规则引擎的数据对象进行匹配,判定是否激活相应的业务规则,触发相应的状态变更,达到系统自动处理的目的。
2 基于规则引擎的自动化报警框架
列控维护系统自动化报警框如图1所示。该报警框架创新性的引入规则引擎技术,将代码与实现分离出来,不需要研发人员的参与即可配置报警规则文件,提供操作指导,提高核心引擎的适应性和系统的可维护性,缩短报警管理的周期。
图1 列控维护系统自动化报警框架示意图
该报警管理系统能够实时接收各监测设备的状态信息,按照既定的规则对实时信息进行分析,当规则满足时,自动执行预定义处理动作,如通过界面展示等方式向电务维修人员告警,并存储在数据库中供事后分析。
3 报警规则库的设计
规则库是将系统工作原理及专家知识转换为规则文件,形成规则库,供匹配器和报警信息进行匹配,将规则以XML文件形式来实现规则库;本文设计的规则模板如下所示。
规则模板节点设计报警规则序号no,规则描述及报警优先级。Condition节点设置alarmobject,代表报警对象;alarmlogic代表该对象产生报警逻辑, 包 括(>,>=,<,<=,!=,and,or,! ,+,-,*,/)等操作属性;repeat代表该报警对象是否重复报警;action中的alarmstatus代表执行动作为报警或恢复。
规则模板设计完成后,操作员可直接将报警树的逻辑写入规则文件中,只需设置对象名,报警逻辑,是否发生等属性,无需关注报警管理本身的逻辑。根据设计的规则模板属性可知,通过报警树的层级关系可显示出报警的依赖关系。
4 报警规则引擎匹配器的实现
本文的规则引擎采用数据驱动的正向推理法,根据正向推理法的算法描述和基于规则的专家系统[4,5]结构,可以得出规则引擎的推理步骤[6]:
1) 将列控维护系统采集到的数据进行转换后,输入到工作存储器中;
2) 使用匹配器将规则库中的规则和相应的数据进行比较;
3) 如果执行规则存在冲突,即同时激活多条规则,将冲突的规则放入冲突集合;
4) 将激活的规则按顺序放入议程;
5) 重复步骤2)和3),直至议程中的所有规则执行完毕。
根据规则引擎推理原理,可以得出规则与事实匹配过程流程图,如图2所示[7,8]。
图2 模式匹配规则和事实流程图
5 结束语
文中提出的基于规则引擎的开发模式紧密地与规则引擎思想相结合,提出的步骤和方法能够很好地帮助开发人员在开发过程中分离业务流程和业务规则,明确业务规则,并使这些业务规则具有可描述化、可用化的性质,最终得以在列控维护系统中实现。在实际应用开发过程中,引入基于规则引擎的开发模式使应用开发具有更高的可维护性和灵活性,具有推广使用的价值。
[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.