一种基于ocl的配置重用方法及系统的制作方法

文档序号:7970154阅读:178来源:国知局
专利名称:一种基于ocl的配置重用方法及系统的制作方法
技术领域
本发明涉及网络设备配置技术领域,尤其涉及一种基于OCL的配置重用方法及系统。
背景技术
现有技术中,网络设备配置的应用场景主要包括网络设备的初始配置、网络设备的升级和扩容以及网络优化;其中,网络设备的初始配置是用户根据网络规划对网络设备进行初始配置,以保证开局时设备能正常运行;网络设备的升级和扩容需要调整和增加部分数据配置,是升级和扩容成功的必要条件;网络优化是基于实际运行性能分析,调整配置数据,优化网络服务性能。
在实现上述网络设备配置管理功能时,主要需要考虑解决安全性(Security)、数据的有效性检查(Data Validity)、数据的一致性检查(DataConsistency)和资源管理(Resource Administration)等问题。
根据第三代合作伙伴计划(3rd Generation Partnership Project,3GPP)协议,网元管理设备(Element Manager,EM)可以管理多个网络设备单元(Network Element,NE),是多个被管NE的数据配置中心。由于EM和NE之间的传输带宽有限,为避免因连接问题而影响用户的配置操作,EM上需要支持用户进行离线的配置,即在EM和NE断开的情况下仍然能够进行配置数据准备,并在和NE连接正常的情况下再发到NE上生效。这种方式一方面要求EM上能对用户输入的数据的有效性进行完备的检查,保证在NE生效的时候能够成功;另一方面,用户在NE开局时需要使用近端的数据配置工具,以便发现问题时能及时对设备和配置进行调整;这就要求NE上也能进行完备的配置数据有效性检查。
因此,EM和NE上需要实现逻辑基本相同的配置规则,而在一个功能较为复杂的网元上,如基站控制器(Basestation Controller,BSC),规则的数量相当庞大,可能达到2~3万条,如果这种规则检查的实现在EM和NE各自独立,那么就存在很多的重复开发。同时,EM和NE通常是由不同人员开发的,甚至是不同公司开发的,这种规则由NE的开发人员准确地传递给EM的开发人员比较困难,而随着NE的升级和bugfix(错误定位),要保持同步更加困难。
由于现有技术中只考虑设计上的重用,而不是代码上的重用,即将配置规则以文档的形式规范化,达到设计重用的目的;为了避免文字描述可能存在歧义,通过自然语言解释加规则描述语言的方式来描述;可选用的规则描述语言可以是自定义的,也可以是OCL。然而,文档和代码的一致性很难维护;更新规则带来的联动工作量较大,NE侧要写两遍,即更新代码,同时还要更新规则文档,EM侧也要做一遍同步;需要辅助工具自动比较并生成配置规则修改列表,靠人力跟踪几乎不可行。

发明内容
本发明提供一种基于OCL的配置重用方法及系统,以解决现有技术中配置规则重用实现复杂的缺陷。
为了实现以上目的,本发明提供了一种基于OCL的配置重用方法,包括以下步骤根据对象模型建立OCL文本;设置所述对象模型的访问接口,将所述OCL文本转换为目标代码;所述目标代码通过所述访问接口访问对象模型数据,并根据所述对象模型数据调用及检查配置条件,进行配置。
本发明还提供一种基于OCL的配置重用系统,包括OCL建立单元、OCL转换单元及配置单元;所述OCL建立单元,用于根据对象模型建立OCL文本;所述OCL转换单元与所述OCL建立单元连接,用于设置所述对象模型的访问接口,并将所述OCL文本转换为目标代码;所述配置单元与所述OCL转换单元连接,用于利用所述目标代码通过所述访问接口访问对象模型,进行配置。
与现有技术相比,本发明具有以下优点本发明提出的基于OCL的配置重用方法,由NE提供以OCL文本描述的配置规则,而EM无需了解具体的规则,只需通过本发明的方法将NE提供的OCL文本编译成目标代码与系统集成进行配置,从而高效实现配置规则在NE和EM间的重用,避免现有技术中大量的重复工作和一致性难以保证的问题;同时,由于OCL文本的编译可以跨操作系统进行,因此本发明基于OCL的配置重用也不受操作系统的限制,即NE和EM,或者其它可以对NE进行配置数据管理工具的操作系统平台可以不同。


图1是本发明基于OCL的配置重用方法实施例一的流程图;图2是本发明基于OCL的配置重用方法实施例一中目标代码的OCL集合数据类型示意图一;图3是本发明基于OCL的配置重用方法实施例一中目标代码的OCL集合数据类型示意图二;图4是本发明基于OCL的配置重用方法实施例二的流程图;图5是本发明基于OCL的配置重用方法实施例二中目标代码的OCL基本数据类型示意图;图6是本发明基于OCL的配置重用系统一个实施例图。
具体实施例方式
下面结合具体实施例对本发明进一步加以描述。
对象约束描述语言(Object Constraint Language,OCL)是专门用于描述对象约束规则的语言,已成为业界的标准。OCL是一种形式化语言,没有二义性,通过开发编译器,可以将OCL翻译成JAVA、SQL和C++等代码。
本发明公开了一种基于OCL的配置重用方法,如图1所示,为本发明基于OCL的配置重用方法实施例一的流程图,包括以下步骤
S101、根据对象模型建立OCL文本;S102、设置对象模型的访问接口,将OCL文本转换为目标代码;S103、目标代码通过预设的访问接口访问对象模型数据,并根据对象模型数据调用及检查配置条件,进行配置。
由于OCL是面向对象的,使用OCL的一个前提条件是需要对配置数据进行对象化建模,在3GPP中对建模后形成的模型称为网络资源模型(NetworkResource Model,NRM),每个对象称为被管理对象(Managed Object,MO)。其中,NRM是用于描述被管理网络实体的信息服务,如NodeB(B节点)和无线网络控制器(Radio Network Controller,RNC),其是管理信息模型的一个子集。以下将使用管理信息库(Management Information Base,MIB)来表述实例化的对象模型。
由上所述,应用本发明基于OCL的配置重用方法,关键在于三个方面1、OCL文本的编译;利用标准化的OCL语法规则,将OCL文本解析成OCL抽象语法树,在此基础上将其转换成目标代码。其具体算法并非本发明的必要技术特征所在,故在此不加以赘述。后述本发明基于OCL的配置重用方法实施例二中将提供OCL文本编译的一个简单实现步骤,以示其可行性。
2、目标代码与系统集成;具体要解决访问接口标准化和对象不变式的调用检查两个问题,以下将分别加以详述(1)定义目标代码的对象元数据和对象模型数据访问的接口首先,有些OCL元素转换成目标代码需要访问对象模型的元数据,作为检查对象数据的一个判断条件。
如下面一段OCL语句,context Person inv:gender=Gender::male其中Gender::male是OCL中的Enumeration类型元素。在翻译成目标代码时,就需要能获取Gender::male的取值,从而和gender属性的取值进行比较。图2为本实施例中目标代码的OCL集合数据类型示意图一,如图所示,在对象模型元数据接口ModelItF的定义中,需要一个GetEnumValue的方法,该方法的统一建模语言(Unified Modeling Language,UML)表示原型如下GetEnumValue(enumType:String,enumValue:String):OclInteger这样,OCL的表达式Gender::male翻译成目标代码就是ModelItf::GetEnumValue(“Gender”,“male”)其次,规则检查毕竟是对对象模型的数据进行检查,因此需要根据OCL的元素类型,设置对应的对象数据访问接口。
配置规则需要访问MIB数据,归纳起来访问方式有三种A、从MIB中查找符合条件的某种类型的对象集合如图2所示,ModelItf中的AllInstances就是获取指定类型的所有对象,对应OCL中的allInstances关键字;ModelItf中的Select获取指定类型满足条件的对象集合,和OCL中的select关键字对应;ObjectItf中的GetAssoObject和GetAssoObjects是获取指定对象的关联对象,分别与OCL中的getassoObject和getassoObjects对应,即关联对象的导航。
B、遍历对象集合遍历对象集合的接口和方法由集合数据类型提供。图3为本实施例中目标代码的OCL集合数据类型示意图二,如图所示,CollectionItf对应OCL中基本的集合类型Collection,支持Collection的Select、Collect、Union等方法。
C、从对象中获取对象的属性继续参照图2所示,ObjectItf中的GetAttrValue就是用于获取指定对象的某个属性值。
(2)对象不变式检查的调用时机及实现方法用OCL描述的配置条件可分成三种配置操作的前置条件(Precondition)、配置操作的后置条件(Postcondition)和对象的不变式(Invariant)。对于前后置条件,调用的时机和位置很明确,分别在对象执行指定的操作前和操作后进行。而对于不变式,则应用以下方式进行调用A、在对象的增删改配置操作执行后调用,如果检查不通过,则回退配置操作,保证MIB符合不变式规则;
B、执行某个对象的配置操作后,对每个和该对象之间有直接关系(包括包含关系、关联关系和依赖关系)的对象调用其不变式进行检查,如果有任何一个返回失败,则回退数据配置操作。
3、运行的性能和效率问题。
在实施本发明基于OCL的配置重用方法时,还需要考虑运行性能和效率的问题。如下面一些规则A、inv:self.employee->forAll(p|p.forename=′Jack′)//所有员工的名字都叫JackB、inv:self.employee->select(p|p.age>50)->notEmpty()//员工中至少有一人大于50岁C、context Person inv:
Person.allInstances->forAll(p1,p2|p1<>p2implies p1.name<>p2.name)//任意两个人的姓名不能有重复都牵涉到对大批量数据的遍历,这种遍历如果靠简单的MIB对象遍历,则效率很低。因此需要考虑利用索引机制,比如数据库的索引机制。对类似上述第三条规则那样需要对集合内对象进行两两比较的,需要在写OCL规则时避免使用,考虑采用其他可以替代的写法。比如对规则C,如果换成下面这样的写法context Person::Create Pre:
Person.allInstances->select(p|p.name=self.name)->isEmpty()//当前不存在和本人相同名字的人这种检查效率要高很多,首先是无须在该对象的每个操作和相关联对象的每个操作都被触发,另外也不需要对一个集合的对象进行两两比较。
结合上述内容,本发明基于OCL的配置重用方法可通过下述实施例二加以实施,如图4所示,包括以下步骤S401、对配置数据进行对象化建模,得到对象模型;S402、根据对象模型建立OCL文本;接续将进行OCL文本的编译,具体包括步骤S403~S406。
S403、设置目标代码的OCL数据类型;图5为本实施例中目标代码的OCL基本数据类型示意图,本实施例中以将OCL翻译成C++为例,如图所示,OCL设置该些数据类型和针对某数据类型支持的操作,需要在目标代码中设置这些数据类型对应的类型。其中OclBoolean对应OCL中的基本数据类型Boolean,是C++的一个类的定义,支持Boolean类型的所有方法,包括bool、==、!=、&&、|、~和xor;OclInteger对应OCL中的基本数据类型Integer,支持Integer类型的所有方法,包括*、+、/和abs(取整);OclString对应OCL中的基本数据类型String,支持String类型的所有方法,包括toUpper和contact。
S404、设置对象模型元数据及对象模型数据的访问接口,具体实现方法在上文中有详细描述,此处不再加以赘述;S405、根据OCL文本获得OCL抽象语法树;此步骤可通过OCL解释器来实现,OCL解释器为现有技术提供,可以从互联网下载,如Dresden OCL Toolkit。在使用OCL解释器时可以检查出其语法错误,如果语法没有错误,可以生成一棵抽象语法树。
S406、将OCL抽象语法树转换成目标代码;使用递归下降分析算法,对抽象语法树中的每个语法元素节点,根据其元素类型,找到对应的目标代码表示方法,最终将抽象语法树翻译成目标代码。
S407、目标代码通过预先设置的访问接口访问对象模型数据;其中,访问接口则由上述步骤S404完成预设置的过程。
S408、根据对象模型数据调用及检查配置条件,其调用时机及实现方法已在上文有所详述,此处不再加以赘述。
本发明还公开了一种基于OCL的配置重用系统,如图6所示,为本发明基于OCL的配置重用系统一个实施例图。该系统包括OCL建立单元61、OCL转换单元62及配置单元63。其中,OCL建立单元61用于根据对象模型建立OCL文本;OCL转换单元62与OCL建立单元61连接,用于设置对象模型的访问接口,并将OCL文本转换为目标代码;配置单元63与OCL转换单元62连接,用于利用目标代码访问配置数据,进行配置。
OCL转换单元62进一步包括相互连接的数据类型设置子单元621、接口设置子单元622、OCL编译子单元623和目标代码转换子单元624。其中,数据类型设置子单元621用于设置目标代码的OCL数据类型;接口设置子单元622用于设置对象模型元数据及对象模型数据的访问接口;OCL编译子单元623用于根据OCL文本获得OCL抽象语法树;目标代码转换子单元624用于将OCL抽象语法树转换成目标代码。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
权利要求
1.一种基于OCL的配置重用方法,其特征在于,包括以下步骤根据对象模型建立OCL文本;设置所述对象模型的访问接口,将所述OCL文本转换为目标代码;所述目标代码通过所述访问接口访问对象模型数据,并根据所述对象模型数据调用及检查配置条件,进行配置。
2.如权利要求1所述基于OCL的配置重用方法,其特征在于,所述调用及检查配置条件包括调用及检查对象的不变式,所述调用及检查对象的不变式进一步包括在执行配置操作后,调用配置操作的对象的不变式进行检查,如果检查返回失败,则回退配置操作;对每个与所述配置操作的对象之间有直接关系的对象调用其不变式进行检查,如果有任何一个返回失败,则回退配置操作。
3.如权利要求2所述基于OCL的配置重用方法,其特征在于,所述调用及检查配置条件还包括在执行配置操作前调用及检查配置操作的前置条件;和/或在执行配置操作后调用及检查配置操作的后置条件。
4.如权利要求1所述基于OCL的配置重用方法,其特征在于,所述根据对象模型建立OCL文本之前还包括对配置数据进行对象化建模,得到对象模型。
5.如权利要求1所述基于OCL的配置重用方法,其特征在于,所述将OCL文本转换为目标代码进一步包括设置目标代码的OCL数据类型;设置对象模型元数据及对象模型数据的访问接口;根据OCL文本获得OCL抽象语法树;将所述OCL抽象语法树转换成目标代码。
6.如权利要求1所述基于OCL的配置重用方法,其特征在于,所述访问对象模型数据包括从对象模型数据中查找符合条件的对象集合、遍历对象集合或从对象中获取对象的属性。
7.如权利要求6所述基于OCL的配置重用方法,其特征在于,采用索引方法进行所述从对象模型数据中查找符合条件的对象集合。
8.如权利要求1所述基于OCL的配置重用方法,其特征在于,所述对象模型为管理信息库。
9.一种基于OCL的配置重用系统,其特征在于,包括OCL建立单元、OCL转换单元及配置单元;所述OCL建立单元,用于根据对象模型建立OCL文本;所述OCL转换单元与所述OCL建立单元连接,用于设置所述对象模型的访问接口,并将所述OCL文本转换为目标代码;所述配置单元与所述OCL转换单元连接,用于利用所述目标代码通过所述访问接口访问对象模型,进行配置。
10.如权利要求9所述基于OCL的配置重用系统,其特征在于,所述OCL转换单元进一步包括相互连接的数据类型设置子单元、接口设置子单元、OCL编译子单元和目标代码转换子单元;所述数据类型设置子单元,用于设置目标代码的OCL数据类型;所述接口设置子单元,用于设置对象模型元数据及对象模型数据的访问接口;所述OCL编译子单元,用于根据OCL文本获得OCL抽象语法树;所述目标代码转换子单元,用于将所述OCL抽象语法树转换成目标代码。
全文摘要
本发明公开了一种基于对象约束描述语言(OCL)的配置重用方法,包括首先根据对象模型建立OCL文本;然后设置所述对象模型的访问接口,并将所述OCL文本转换为目标代码;最后,目标代码通过所述访问接口访问对象模型数据,并根据所述对象模型数据调用及检查配置条件,进行配置。本发明还公开了一种基于OCL的配置重用系统,包括OCL建立单元、OCL转换单元及配置单元。应用本发明基于OCL的配置重用方法及系统,可高效实现配置规则的重用,避免现有技术大量的重复工作及一致性难以保证的问题,且配置规则的重用不受操作系统的限制。
文档编号H04Q7/34GK1972208SQ20061014084
公开日2007年5月30日 申请日期2006年10月12日 优先权日2006年10月12日
发明者陈春媛 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1