Drools在电信网络开通系统中的应用及其改造
- 格式:pdf
- 大小:1.24 MB
- 文档页数:4
6Drools在电信网络开通系统中的应用及其改造
[朱先飞]
电信数字程控交换机网络开通中的指令生成比较复杂,若将生成逻辑硬编码到程序中,会导致程序难以维护,文中介绍了Drools规则引擎的应用和改造并对现有的多种数字程控交换机的指令规则集进行了设计。关键词:
朱先飞 男,1998年毕业于长沙铁道学院计算机系,现工作于中国电信股份有限公司广州研究院,从事软件研发、宽带差异化方面的工作。摘要
数字程控交换机 网络开通 规则引擎 Drools
1 引言电信网络开通系统的核心功能主要是处理指令生成的逻辑,不同交换机、交换机版本、业务、冲突功能、业务组合都会导致指令生成的变化,这些变化产生了一个庞大的规则集,若将这些规则硬编码到程序中,会导致程序难以维护和难以对新业务提供快速支撑。而采用规则引擎来设计、执行这些规则能显著地降低系统的复杂程度,提高系统的灵活性和可维护性。2 Drools规则引擎概述Drools 是Codehaus 的一个开源项目,现已被纳入JBoss并更名为JBoss Rules,成为了JBoss 应用服务器的规则引擎。Drools是用Java语言编写的开源规则引擎,是基于Charles Forgy的RETE算法的实现。Drools允许使用声明方式表达业务逻辑,可以使用Java/XML语法编写规则,Java代码可以直接嵌入规则文件中,功能很强大。Drools还具有如下一些优点:成熟;非常活跃的社区;易用;快速的执行速度;与JSR 94兼容;免费。Drools由Authoring和Runtime组件组成,如图1,2所示,Authoring组件用ANTLR3d语法解析drl或xml规则配置文件,用AST描述规则,PackageBuilder分析AST规则并做代码产生和编译工作,最后产生Package对象,Package对象由一个或多个规则组成。RuleBase则是一个运行时组件,它包含一个或多个Package对象。RuleBase对象可以在任意时候实例化一个或多个Working Memory对象,Working Memeory由Agenda等多个子组件组成。当有对象被assert进Working Memory,可能会导致一个或多个Activation的产生,然后由Agenda负责安排新技术 新业务
2007.11.广东通信技术7这些Activation的执行。
图1 Authoring组件图
图2 Runtime组件图3 Drools的应用与改造Drools 规则文件具有一个名为 rule-set 的根元素,它由一个或多个 rule 元素组成。每个 rule 规则由一个或多个 parameter 元素、一个或多个 condition 元素以及一个 consequence 元素组成。rule-set 元素还可以具有一个或多个 import 元素、一个或多个 application-data 元素以及一个 functions 元素。以下是电信网络开通系统中Drools的一个规则配置文件中示例,对于维护操作人员,系统提供了专用的人机交互配置界面。规则由名称、优先级、条件、动作组成:规则名称: 5ESS交换机指令生成规则1优先级:100条件: 1,交换机型为5ESS 2, 新老新功能位[呼出限制、呼叫等待、来电显示、免打扰、闹钟服务]=存在 3, 产品类型包含(ISDN(2B+D),v5 ISDN(2B+D))动作:1,修改第一条指令为:dldb-isasg:dirnr=%055,bearerservgrp=sp3p1; 规则配置文件:InnWorkOrderInstructionHandlerinnworkorder.getNetElement().getType() == 3 &&(innworkorder.getProductId()==1||innworkorder.getProductId()==2)&& RuleAction.isNewFuncOverOne(new int[]{4,9,17,19,21},innworkorder)instructionhandler.setInstruct(1,0,"dldb-isasg:dirnr=%055,bearerservgrp=sp3p1;"); 由于Drools只采用了Rete算法,考虑到在电信网络开通中指令的一次性施工的特点,需要避免Rete算法中规则执行结果的改变导致条件的改变的现象,因此需要对Drools的源码进行修改,修改时需要注意不能破坏DroolsDrools在电信网络开通系统中的应用及其改造
新技术 新业务
8的结构,同时能保留Rete算法的实现,对Drools的主要修改如下:1,在Drools的Agenda类里添加成员函数List agengdaItems = new ArrayList();//保留最初的agengdapublic void saveItemtoList(){ if(this.agengdaItems.size()>0){ return; } while(!isEmpty( )){this.agengdaItems.add((AgendaItem) this.activationQueue.remove( )); } } public void fireItem(int index){ //如果不执行RETE算法则执行以下代码 try { this.agengdaItems.get(index).fire(this.workingMemory); } catch (ConsequenceException e) { } }public void fireAllItem(){ for(int i=0;i
2007.11.广东通信技术41客户的需求也无止境,大客户项目营销管理的模式有待进一步健全和完善,唯有不断推陈出新,建立与社会经济发展相适应、与客户需求相符合的营销服务新机制,才能真正赢得客户、赢得市场。参考文献1 郝雨风编著.大客户战略与管理[M].北京:中国经济出版社,2005,6:5-62 周伟. 知识管理将成电信行业“助推器”.http://www.cko.com.cn/web/experts/zhouwei/20050807/123,1723,0.html, 20053 陈绿洲.营销知识管理和保障体系初探[J].企业经济, 2003, 7: 107-1094 王娟.企业业务流程中的知识管理[J].图书情报工作, 2003, (9): 57-605 (美)Philip Kotler, Gary Armstrong著,赵平等译.市场营销原理[M]. 北京:清华大学出版社,1999, 9:48-50 6 (加)赫瑞比著,郑晓明等译.管理知识员工:挖掘企业智力资本[M].北京:机械工业出版社,2000,7: 263-264(收稿日期:2007-9-25)
图3 数字程控交换机指令规则集关系图规则集划分后指令生成和施工过程如下:获取环节数据→根据环节和机型映射到相应规则集→匹配相应的规则集并生成指令→调用参数更新规则集更新指令→发送指令到交换机,等待交互机的施工结果→分析交换机的施工结果。5 小结Drools规则引擎在电信网络开通中的应用为系统带来了良好的灵活性,使复杂的指令生成逻辑与系统代码分离,提高了系统的可维护性和代码质量,同时,配置规则的图形配置界面也为运维人员带来了方便,提高了网络开通的统一可管控性。参考文献1 http://labs.jboss.com/drools/documentation.html2 数字程控交换机教材3 电信综合网络开通系统规范(收稿日期:2007-10-10)(上接第8页)知识管理在电信企业大客户项目营销中的应用
经营与管理