一种基于asn类型对象的代码生成方法

文档序号:6563227阅读:234来源:国知局

专利名称::一种基于asn类型对象的代码生成方法
技术领域
:本发明涉及ASN和代码自动生成技术,具体涉及一种基于ASN类型对象结构,
背景技术
抽象文法表示法ASN,是用于描述不同系统之间通讯时所用的数据结构的抽象描述。它是一种用于描述结构化客体的结构和内容的语言,是描述在网络上传输信息格式的标准方法,类似与高级程序设计语言的数据描述部分。在通讯及其相关的行业中,特别是传输网管软件系统的设计多采用软总线方式,如ASN的类型对象结构,来实现各个模块之间的数据通讯,由于数据库模块是整个软件系统ASN对象进行通讯的总集散模块,频繁使用ASN对象,数据库采用的是关系型数据库,将ASN定义的网元类型对象映射到数据库DB的网元表的过程,需要编写大量的数据库出库和入库的代码,时间和人工编写代码,并且编写代码的复杂度增高,映射关系的翻译麻烦复杂且效率低。另一方面,这种映射和数据出库及入库的操作是有共性的,便于采用规则自动实现ASN的对象映射数据库表的结构,还可采用规则利用数据存取对象DAO模式生成ASN对象出/入库的程序源代码。
发明内容本发明需要解决的技术问题是如何提供一种基于ASN类型对象的代码生成方法,克服ASN对象存储到数据库表的实现技术难度,解决现有技术手工编写大量的数据库出库和入库代码和数据库表定义脚本代码费时费力并且开发效率不高的问题。本发明的上述技术问题这样解决,提供一种基亍ASN类型对象的代码生成方法,其特征在于,包括以下具体步骤1.1)根据规范定义ASN对象的类型结构描述,并形成对应的程序源文件;1.2)根据所述结构描述和对应的程序源文件生成代码产生工具;1.3)根据所述ASN对象与对应的关系数据库表之间的映射规则编写对应映射^见则文件;1.4)利用所述代码产生工具并输入所述映射规则文件自动生成被调用的数据库出/入库源代码和被嵌入的数据库脚本代码。按照本发明提供的代码生成方法,所述方法还包括步骤1.5)在数据库模块中集成所述源代码,并在数据库中嵌入所述脚本代码。按照本发明提供的代码生成方法,所述步骤U)中的规范可以是传输网络管理系统的F口规范或软件系统内各个模块之间的通讯规范。按照本发明提供的代码生成方法,所述步骤1.1)中的形成可以是通过SNACC编译器自动生成,也可通过其他编译器。按照本发明提供的代码生成方法,所述步骤1.2)中代码产生工具包括ASN结构定义描述模块,ASN翻译模块,映射文件语法分析器,对象与关系映射定义模块,ASN元数据提供模块和代码生成器。按照本发明提供的代码生成方法,所述对象与关系映射定义模块包括一整套数据出/入库SQL调用方法,这些方法集成到一个sql文件中,存放在自动生成工具使用的参数-script的目录中。按照本发明提供的代码生成方法,所述步骤1.3)具体包括1.3.1)利用所述代码产生工具和ASN对象生成与所述ASN对象对应的供修改的映射规则文件;1.3.2)根据具体的映射规则、个性和需要修改所述供修改的映射规则文件。按照本发明提供的代码生成方法,所迷个性包括接口中个性4吏用的数据出/入库SQL调用方法。按照本发明提供的代码生成方法,所述需要包括软件系统各个模块通讯功能的需要。按照本发明提供的代码生成方法,所述步骤1.4)还包括所述源代码和脚本代码被自动输出至指定的目录中。本发明提供的代码生成方法,由于将自动编码技术应用到具体的ASN对象与数据库映射和出/入库中,同人工编写出库入库代码和设计编写数据库表结构脚本相比,具有以下的几个优点1.极大的提高了开发的效率和节约了开发时间,降低了开发成本;2.提供了一整套数据库出库和入库的方法,同时也可以灵活定制数据库接口的方法,调用的灵活度高;3.降低了数据库模块编写出库和入库方法的复杂度和技术实现难度,模块的封装性好;另外,生成的数据库表的脚本,支持不同的数据库使用;而且整个编译器支持不同的平台使用,适合不同操作系统的开发平台使用;同时,本发明对使用人员有一定的技术要求,需要具有软件开发的基本知识和数据库开发使用的基本知识,是提供给专业开发的人员使用的,使用人员掌握了使用的技能,对开发数据库才莫块的接口程序起到事半功倍的效果。下面结合附图和具体实施例进一步对本发明进行详细说明。图1是一种ASN类型结构与数据库中表结构的具体映射关系示意图。图2是另一种ASN类型结构与数据库中表结构的具体映射关系示意图。图3是利用本发明代码生成工具DAOBuilder开发数据访问功能模块的流程图示意图。具体实施方式首先,说明映射ASN类型的实例是ASN对象,ASN对象映射数据库的表结构就是ASN类型结构映射到数据库中表的结构过程,如图1、2中所描述的,定义了一个ASN的网元类型为ManagedElement-T,它映射到网元表,映射关系图l是l:1的关系、图2是1:N的关系,在1:1的映射关系中,每个网元类型的属性对应一个网元表的字段,对于网元参数的属性,ASN类型采用的是名值对数据列表,映射到网元表中的网元参数字段,字段的值存放形式是采用压缩值的方式将多个网元参数压缩成一个压缩字串进行存放;在1:N中的映射关系中,网元类型ManagedElement-T的网元参数映射到网元主表的方式是建立网元参数从表的网元参数ID,映射到网元参数从表的方式是将网元参数——存入表中,不采用压缩的方式存储。ASN中的SEQUENCE类型在映射的过程中称为Class,是映射的基本单位,class的实例称为对象,通常保存为数据库表中的一条记录。第二步,说明本发明代码生成工具DAOBuilder:该工具用于自动产生数据库的出入库代码,实现ASN类型与数据库表的对象与关系映射。这个工具根据预先编写的ASN结构与数据库表之间的映射XML文件,产生ASN对象的入库、出库代码,并产生相应的数据库脚本。该代码生成工具具体由ASN结构定义描述模块,ASN翻译模块,映射文件语法分析器,对象与关系映射定义模块,ASN元数据提供模块,代码生成器六个部分组成。最后,以自定义ASN的网元类型和设备单板类型利用该代码生成工具DAOBuilder自动编码的方式开发数据库功能模块为例,结合图3,对本发明做进一步描述,包括五个步骤,分别是(-)定义ASN类型结构描述根据传输网络管理系统的F口规范的ASN结构或软件系统各个模块通讯规范的ASN结构,形成需要进行存储tt据到数据库的ASN类型结构描述,生成结构描述的程序源文件;G生成能自动生成代码的工具集成结构描迷的程序源文件,编写生成能被集成的ASN结构描述接口定义代码,集成映射文件语法分析器M,对象与关系映射定义模块32,ASN元数据提供模块33,代码生成器34,利用ASN翻译模块和开发系统编译模块联合生成能自动生成代码的工具;集成结构描述文件的目的是将通过SNACC编译器编译ASN结构描述文件生成的〔++等源文件绑定到自动生成代码的工具中,以编译环境集成的方式实现,比如将网元的ASN文件编译后生成了网元的C+十源文件,然后通过编译文件makefile的方式将其集成到自动生成代码的工具中;编写生成能被集成的ASN结构描述接口定义代码是将生成的ASN结构的描述结构类型定制到自动生成代码的工具的main.cpp的文件中,以结构数组的方式存在,同是将所需要的头文件填写其中;集成映射文件语法分析器是已经开发完毕的ASN语法解析的功能模块,是处理ASN结构映射到表和数据库结构的解析翻译工作;对象与关系映射定义模块是处理映射关系实现的功能模块,实现l:l和l:n的映射关系;ASN元数据提供模块是将解析和映射的ASN关系以元数据的方式提供给自动生成代码的模块,是以数据基础的方式存在;代码生成器是集合上述的功能模块,通过解析和映射的关系和ASN的元数据集合,生成数据库接口的中间源代码和生成数据库表的代码;Q根据ASN类型结构描述编写映射的xml规则文件1.根据ASN类型结构描述,利用生成的这个工具翻译选定的某一个ASN类型,生成映射规则文件中class的结构雏形,存入手工编写的xml规则文件;2.手工^f奮改规则文件中class的结构,按照ASN类型映射到数据库表的映射关系进行设计编写规则class的结构,定义好接口中个性使用的SQL调用方法;这个自定义的sql方式是根据ASN的结构属性,根据业务的需要定义某个或某些属性的数据库操作的方式。3.根据软件系统各个模块通讯功能的需要定义好不同的映射规则,形成设计好的文件,以便:故能自动生成代码的工具4吏用;卿工具采用规则文件作为入口,自动生成源代码和数据库脚本文件编写生成代码使用的配置文件(如makefile文件),或自动生成代码的批处理文件,定制好工具使用自动生成代码的命令格式和输出的路径,使用工具生成程序源代码和数据库脚本,输出到制定的目录中;(S)集成自动生成的源代码到数据库模块中,使用自动生成的数据库脚本到数据库中生成应用表,完成代码的自动生成和使用;其中,每一步的具体实现是(-)自定义网元类型ManagedElement-T和设备单板类型Equipment-T,形成ASN结构描述文件,编译生成ASN类型对应的源代码文件,具体包括步骤(1-1):定义网元类型和单板类型,存入网元的managedElement.asnl和设备单板的equipment.asnl网元类型的结构定义ManagedElement-T::=SEQUENCE{nameNamingAttributes-T,网元名牙尔userLabelGraphicString(80),用户标签meParametersNVSL.ist-T,网元参凄t列表additionallnfoNVSList-T附加属性设备单板类型的结构定义Equipment-TSEQUENCE{nameNamingAttributes-T,单4反名称、userLabelGraphicString(80),用户标签boardParametersNVSList-T单板参数su卯ortOperationsValueNVSList-T单板参数取值范围和缺省值additionallnfoNVSList-T附力口属寸生单板的ASN文件,生成它们对应的源代码文件managedElement.cpp和managedElement.h以及equipment.cpp详口equipment.h。仁)编译生成工具DAOBUILDER,具体包括步骤(2-1):将网元类型的结构描述ManagedElementModuleDesc和设备单4反的结构描述加入工具DAOBuiWer的入口代码里的ASNModuleDesc队列中;constAsnModuleDesc*buidlerAsnModuleDescs[]=&ManagedElementModuleDesc,&EquipmentModuleDesc,NULL(2-2):集成ASN结构描述文件生成的源代码文件,将这些源文件的头文件managedElement.h,equipment.h定制至UDAOBuilder的Main.cpp中,建立起了ASN描述文件同工具DAOBuilder的联系。(2-3):编译已经集成好的DAOBuilder编译器,生成可以执行的文件。曰编写映射规则文件resource.xml,具体包括步骤(3-1):使用工具DAOBuilder,根据命令参数的选择生成ASN结构描述ManagedElement-T和Equipment-T到失见则文件中class的基本映射,也可以采用手工的方式进行编写规则class的定义结构;(3-2):定义映射到数据库表的名称和主键,如网元的数据库表的名称为ME,主键为name.name和name.value,是网元属性中的名值对,定义各个属性映射到表的字段的长度;(3-3):根据数据库的性能和功能设计的需要,设计表中特殊字段的处理^见则。如网元表,确定好网元参数映射到网元表的字段MeParameters是采用压缩的方式存储list形式的值,具体的设计见class的结构说明,如下<classid="ManagedElement—T"name="ManagedElement—T"dao國name-"MEDAO"table="ME"name-strategy="fiiir><propertyname="name.name"column="Name—Name"length="207><propertyname="name.value"column-"Name一Value"length="607><propertyname="userLabel"column="UserLaberlength="80"/>〈arrayname="meParameters"column="MeParameters"length="800"><primarykey><keyname-"name"/></primarykey></array><arrayname="additionalInfo"column="AdditionalInfo"length="500"><primarykey><keyname="name"/></primarykey></array>〈primarykey〉<keyname="name.name"/><keyname="name.value7></primarykey></class>这是网元的ASN结构映射到规则文件中class的结构,内部定义了数据库表的名称ME,ASN的属性对应ME表的字段定义,表的主4走定义。网元参数meParameters,采用的是压缩的形式将网元的参数存入到网元表的MeParameters字段内,网元的附加属性也是采用压缩的方式存储到网元表的字段内;另一方面,可以定义接口中个性使用的SQL调用方法,具体可以是在规则定制的class中,填写<select-sqlname="findByResource"where="%resoiirceObjectlike"/〉<update-sqlname="setActive"set="%ifActive="where="%ruleid.namelikeand%ruleid.valuelike"/><delete-sqlname="deleteByRuleid"where="%ruleid.namelikeand%ruleid.valuelike"/>卿使用工具DAOBuilder自动生成源文件和数据库表脚本文件,具体包括步骤(4-1):编写makefile文件,定义DAOBuilder的输入规则文件resource.xml和输出路径;(4-2):执行工具DAOBuilder,将数据库脚本文件和自动生成的源代码输出到指定的目录,源文件为resource-map.h、resource-map.cpp、resource-map-rdb.h'resource-map-rdb.cpp,凄史才居库脚本为resource.sql;(5)集成自动生成的源文件到系统的数据库功能模块中,使用自动生成的出入库的接口方法,在数据库中生成数据库表ME,Equipment,包括具体步骤(5-1):使用数据库脚本resource.sql,在DBMS类型的数据库中生成表ME和Equipment(5-2):集成自动生成的源文件到数据库模块database中,可以编译使用这些自动生成的源文件(5-3):在数据库模块database内调用网元和i殳备单板的出库和入库的方法,这些方法的调用方式如下声明DAO类工厂的网元DAO,如auto_ptr<MEDAO>pMEDAO(GetDAOFactory()->getMEDAO(GetConnectionO";(a):根据共同父类继承通用入库方法ManagedElement—Tme;pMEDAO-〉insert(me);(b):根据共同父类继承通用出库方法pMEDAO->findAll();pMEDAO->fmdByCriteria(条件);(c):根据需要灵活定制数据库处理的方法。权利要求1、一种基于ASN类型对象的代码生成方法,其特征在于,包括以下具体步骤1.1)根据规范定义ASN对象的类型结构描述,并形成对应的程序源文件;1.2)根据所述结构描述和对应的程序源文件生成代码产生工具;1.3)根据所述ASN对象与对应的关系数据库表之间的映射规则编写对应映射规则文件;1.4)利用所述代码产生工具并输入所述映射规则文件自动生成被调用的数据库出/入库源代码和被嵌入的数据库脚本代码。2、根据权利要求1所述代码生成方法,其特征在于,所述方法还包括步骤1.5)在数据库模块中集成所述源代码,并在数据库中嵌入所述脚本代码。3、根据权利要求1所述代码生成方法,其特征在于,所述步骤1.1)中的规范可以是传输网络管理系统的F口规范或软件系统内各个模块之间的通讯规范。4、根据权利要求1所述代码生成方法,其特征在于,所述步骤l.l)中的形成可以是通过SNACC编译器自动生成。5、根据权利要求1所述代码生成方法,其特征在于,所述步骤1.2)中代码产生工具包括ASN结构定义描述模块,ASN翻译模块,映射文件语法分析器(31),对象与关系映射定义模块(32),ASN元数据提供模块(33)和代码生成器(34)。6、根据权利要求1或5所述代码生成方法,其特征在于,所述对象与关系映射定义模块(32)包括一整套数据出/入库SQL调用方法。7、根据权利要求1所述代码生成方法,其特征在于,所述步骤1.3)具体包括1.3.1)利用所述代码产生工具和ASN对象生成与所述ASN对象对应的供修改的映射规则文件;1.3.2)根据具体的映射规则、个性和需要修改所述供修改的映射规则文件。8、根据权利要求6或7所述代码生成方法,其特征在于,所述个性包括接口中个性使用的数据出/入库SQL调用方法。9、根据权利要求7所述代码生成方法,其特征在于,所述需要包括软件系统各个模块通讯功能的需要。10、根据权利要求1所述代码生成方法,其特征在于,所述步骤1.4)还包括所述源代码和脚本代码被自动输出至指定的目录中。全文摘要本发明涉及一种基于ASN类型对象的代码生成方法,包括定义ASN对象形成对应的程序源文件;生成代码产生工具;编写对应映射规则文件;利用所述代码产生工具并输入所述映射规则文件自动生成被调用的数据库出/入库源代码和被嵌入的数据库脚本代码。这种方法彻底克服ASN对象存储到数据库表的实现技术难度,解决了现有技术手工编写大量的数据库出库和入库代码和数据库表定义脚本代码费时费力并且开发效率不高的问题。文档编号G06F17/30GK101154227SQ20061015234公开日2008年4月2日申请日期2006年9月26日优先权日2006年9月26日发明者崔文生,张立国申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1