用于复杂多业务的动态编译器的构件化实现制造技术

技术编号:3556380 阅读:183 留言:0更新日期:2012-04-11 18:40
复杂多业务的动态编译器的实现方法,采用构件化设计,采用compositor模式进行设计,使用二叉搜索树放置变量列表,快速定位到变量,该方法同时包括编译和解释2个部分,对于一条业务规则只编译一次,在编译之后不再重新解释,变成纯粹的内存操作,即变成对compositor节点树的操作,从而以极快的速度完成业务解析。本发明专利技术的特点是:在电信计费系统的实际使用表明,极大提高的编码的工作量,在设计过程中,只对核心通用业务进行处理,而把各省的特殊业务事先预留接口,由动态解释器完成。

【技术实现步骤摘要】
用于复杂多业务的动态编译器的构件化实现                           
本专利技术属于电信运营商大规模准确数据处理应用技术,尤其是电信运营中用于复杂多业务的动态编译器的构件化实现。                           
技术介绍
随着通信业务的不断迅速发展,各电信运营商推出更多更复杂的业务,并且原有业务规则也在不断变化,电信业务的发展对软件设计和编码提出的更高要求,然而即使使用多种设计模式,也难以适应电信业务不断发展的需求,迫切需要系统有一种通用编码方式,来适应业务的变化和扩展。目前的电信计费系统在对增加和修改业务时,没有一种统一的解决办法,很多时刻是采用硬编码的方式解决,当一种业务发生变化或产生一种新的业务时,往往是找到业务相对应的代码进行修改,也有部分业务会采用配置解决的方式,但配置放置的地点各不相同,有把配置放在数据库中,有放置在文件中,不同的业务有不同的配置文件,不同配置方式,没有固定统一的格式。电信业务系统版本会应用于许多省份,不同的省份有不同的业务,按传统的方法要对不同的业务进行编码形成业务模块,在需要的省份进行增减,不同的省份对相同的业务也可能要求有不同的处理方式,按传统的方案,要为不同的省份做一个版本,在实施时进行增减。传统的做法我们称之为“重新开发系统适应新需求”方式。随着业务的迅速发展,采用传统的方法代码的改写量越来越多,版本也越来越多,但一次改写代码都面临危险,都要重新编译,各省的业务要作不同处理,版本越来越多,系统变得越来越不稳定,越来越难以维护,人员的流动使版本更是雪上加霜,迫切需要一种统一的、有柔韧性的、可扩展解决方案,将变化和改动集中于一点,使设计更容易,维护人员更方便,而且这个方案要尽量减少代码的修改量,最好是由配置解决,从而解决核心代码的稳定性,如前所述,传统的“重新开发系统适用新需求”的解决方案,已经产生系统难以适应电信运营商业务发展,难以适应运营商需求,系统也难以维护的情况。通过多年在电信领域的经验,并通过了解设计模式,我们了解到在诸多模式中有一种叫interpreter模式,该模式核心思想是让程序在运行期间可以解释配置信息,生成机器代码,从而达到不修改代码,由配置来解决问题的目的,由此决定基于解释器模式,并结合其他设计模式,设计一种基于动态编译技术的解决方案,从而彻底解决上述问题。这种技术就是“基于解析器的动态编译技术”。                            
技术实现思路
本专利技术的目的是:复杂多业务的动态编译器的实现采用构件化设计思想进行设计。该方法可以作为独立的可配置的应用模块存在于应用平台,采用compositor-->模式进行设计,使用二叉搜索树放置变量列表,可以快速定位到变量。本专利技术的技术解决方案是:复杂多业务的动态编译器的实现方法,采用构件化设计,采用compositor(编译)模式进行设计,使用二叉搜索树放置变量列表,快速定位到变量,该方法同时包括编译和解释2个部分,对于一条业务规则只编译一次,在编译之后不再重新解释,变成纯粹的内存操作,即变成对compositor节点树的操作,从而以极快的速度完成业务解析。本专利技术将各利配置方式,业务配置集中于一点,在增加修改业务,系统维护时只要找到专门的配置文件,修改特定的配置项或新增配置项即可解决业务修改和新增的业务等问题。本专利技术采用外部的字符串影射系统内存中的变量,通过修改字符串值来修改内部变量,通过预先定义的函数完成业务变换。本专利技术适用于每一种支持标准c/c++的系统都可使用该方法。本专利技术动态编译过程中按如下步骤:编译过程如下:读入规则\\判断操作符号\\根据操作符号进行\\生成解释器语法树:解释过程如下:调用动态编译内存绑定接口绑定内存变量,读入动态编译规则。调用编译过程生成内存语法树;读取话单,把话单变量绑定到动态编译变量内存,调用语法树解析接口生成结果,解析接口调用解析树,反复递归得;系统根据语法树接口的处理进行相应处理。该专利技术同时包括编译和解释2个部分,对于一条业务规则编译只需一次,在编译之后不再重新解释,变成纯粹的内存操作,即变成对compositor节点树的操作,从而以极快的速度完成业务解析。采用解释器方式的优点在于1、由配置解决问题,可无限扩展;2、不需要修改核心代码,核心代码相对稳定;3、不需要重新编译,便于移植;4、可自由增减业务规则,容易维护。本专利技术的特点是:在电信计费系统的实际使用表明,极大提高的编码的工作量,在设计过程中,只对核心通用业务进行处理,而把各省的特殊业务事先预留接口,由动态解释器完成。在项目维护过程中,对各省系统得新增需求首先采用动态编译的思想,配置动态编译规则,不需修改任何代码,完成用户需求。在电信综合结算系统的模块都可以见到动态编译的使用,从预处理,批价,分拣,上传下发都可以自由的调用动态编译接口,无需重编码,重编译,提升了系统的安全性。动态编译经过改造,能以极快的速度运行,做到对程序性能基本没有影响。                             附图说明图1是本专利技术编译过程示意图图2是本专利技术解释过程示意图                           具体实施方式具体实现方案参见附图。动态编译采用构件化设计思想进行设计。该技术可以作为独立的模块可被各需要运用动态编译功能的模块调用,只要配置文件中配置动态编译规则,动态编译规则中的常量应用程序中要有定义,规则中的函数模块已实现即可。-->动态编译的几个关键对象类设计如下:●VariantList类,该类定义变量列表,该类包含一个二叉搜索树,树的节点由一个字符串为查找键和一个内存地址组成,使用二叉搜索树可以在对数时间搜索到变量,从而得到变量的值或进行修改;●Expression(解释)功能类及子类,该类为compositor模式的实现,Expression为纯虚类,表达式类都继承自Expression,包含不可递归节点类(也就是不含一个Expression的一个指针)的常量类和变量类,和其他可递归节点类(包含Expression的一个和多个指针),可递归节点完成与,或,非,和其他自定义函数,最后一个Expression的实例成为语法树;●Interpreter类,该类负责解释动态编译规则字符串,生成语法树;●Compile类,该类为包装类,提供所有的调用接口动态编译的业务规则的配置方式输入项:输入为一个字符串表达式,具体语法规则如下:变量名:变量是以’$’符号开始的,变量名可以为字母,也可以为变量名+字母。表达式:表达式可以是以操作值+操作符+操作值的形式,也可以是表达式+操作符+操作值的形式。操作值:可以是表达式,可以是以单引号”括起来的任意字符,可以是$变量名,可以是函数名(或者函数的参数),也可以是数字。函数参数:可以是任意表达式。操作符:逻辑与’and’符号,或者逻辑或’or’符号,运算符号’+,’-,’*’,’/’。输出项:表达式是否符合语法规则的标识、表达式的运算结果。编译类的结构定义如下:public:Interpreter(){m_SyntaxTree.push_back(NULL);}~Interpreter();bo本文档来自技高网
...

【技术保护点】
复杂多业务的动态编译器的实现方法,采用构件化设计,其特征是采用编译模式进行设计,使用二叉搜索树放置变量列表,快速定位到变量,该方法同时包括编译和解释2个部分,对于一条业务规则只编译一次,在编译之后不再重新解释,变成纯粹的内存操作,即变成对编译节点树的操作,从而以极快的速度完成业务解析。

【技术特征摘要】
CN 2006-4-27 200610039945X1、复杂多业务的动态编译器的实现方法,采用构件化设计,其特征是采用编译模式进行设计,使用二叉搜索树放置变量列表,快速定位到变量,该方法同时包括编译和解释2个部分,对于一条业务规则只编译一次,在编译之后不再重新解释,变成纯粹的内存操作,即变成对编译节点树的操作,从而以极快的速度完成业务解析。2、由权利要求1所述的复杂多业务的动态编译器的实现方法,其特征是将各种配置方式,业务配置集中于一点,在增加修改业务,系统维护时只要找到专门的配置文件,修改特定的配置项或新增配置项即可解决业务修改和新增的业务等问题。3、由权利要求1所述的复杂多业务的动态编译器的实现方法,其特征是采用外部的字符串影射系统内存中的变量,通过修改字符串值来修改内部变量,通过预先定义的函数完成业务变换。4、由权利要求1所述的复杂多业务的动态编译器的实现方法,其特征是适用于每一种支持标准c/c++的系统都可使用该方法。5、由权利要求1所述的复杂多业务的动态编译器的实现方法,其特征是动态编译过程中按如下步骤:编译过程如下:读入规则\\判断操作符号\\根据操作符号进行\\生成解释器语法树:解释过程如下:调用动态编译内存绑定接口绑...

【专利技术属性】
技术研发人员:邵九松黄诚王涛俞东纪振华柏松施大伟周仲华欧小祥周连华
申请(专利权)人:南京联创科技股份有限公司
类型:发明
国别省市:84[中国|南京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利