CN108509187B - 一种自动生成软件平台mib功能代码的方法及系统 - Google Patents
一种自动生成软件平台mib功能代码的方法及系统 Download PDFInfo
- Publication number
- CN108509187B CN108509187B CN201810273473.7A CN201810273473A CN108509187B CN 108509187 B CN108509187 B CN 108509187B CN 201810273473 A CN201810273473 A CN 201810273473A CN 108509187 B CN108509187 B CN 108509187B
- Authority
- CN
- China
- Prior art keywords
- mib
- xml file
- data
- control block
- file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/316—Aspect-oriented programming techniques
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种自动生成软件平台MIB功能代码的方法及系统,涉及软件开发技术领域。该方法包括以下步骤:在配置XML文件中设置控制块的MIB生成规则;利用Python脚本解析配置XML文件中指定的软件平台数据结构头文件,并根据设置的MIB生成规则生成MIB表的数据XML文件;利用Python脚本解析数据XML文件,并通过转换数据XML文件中的MIB表数据结构,生成软件平台的MIB功能代码。该系统包括MIB生成规则设置单元、数据XML文件生成单元和MIB功能代码生成单元。本发明不但能满足RFC协议的MIB语法要求,而且极大的减少了手工编码工作量、降低了编码错误引入风险。
Description
技术领域
本发明涉及软件开发技术领域,具体来讲是一种自动生成软件平台MIB(Management Information Base,管理信息库)功能代码的方法及系统。
背景技术
近年来,通信产业市场竞争日趋激烈,各大设备制造商无不加快新产品研发脚步抢占有利市场。在数据通信主控系统软件平台开发中,开发人员可以根据需求自定义扩张MIB表,并实现MIB表相应的回调函数(增、删、查、改),以上扩张的代码在平台中被统称为MIB功能代码。MIB功能代码在软件平台功能开发中起到承上启下的作用,对上提供配置、查询接口,对下将用户输入转换为模块控制块数据,实现配置数据的管理和设备下发。
但实际应用中,MIB功能代码要求研发人员书写的MIB表数据结构必须能满足RFC(Request For Comments,是一系列以编号排定的文件,文件收集了有关互联网相关信息以及UNIX和互联网社区的软件文件)协议中规定的语法要求,因此对人工编码开发的要求严苛。同时,MIB表的增、删、查、改回调函数,各表回调函数功能相似度高,同时代码量大,导致人工编码的出错率高。
由此可见,严格的MIB语法要求以及大量的MIB回调功能代码,提高了研发人员开发的难度和编码的工作量,同样加大了编码错误引入的风险,不利于产品敏捷开发的进行。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种自动生成软件平台MIB功能代码的方法及系统,不但能满足RFC协议的MIB语法要求,而且极大的减少了手工编码工作量、降低了编码错误引入风险。
为达到以上目的,本发明提供一种自动生成软件平台MIB功能代码的方法,包括以下步骤:
A、在配置XML文件中设置控制块的MIB生成规则,该生成规则中包括指定的软件平台数据结构头文件;
B、利用Python脚本解析配置XML文件中指定的软件平台数据结构头文件,并根据设置的MIB生成规则生成MIB表的数据XML文件,所述数据XML文件为XML格式的MIB表数据结构描述文件;
C、利用Python脚本解析数据XML文件,并通过转换数据XML文件中的MIB表数据结构,生成软件平台的MIB功能代码。
在上述技术方案的基础上,步骤A中,设置有MIB生成规则的配置XML文件包括:控制块的归属模块名、模块产品表ID、控制块数据结构所在头文件、MIB功能代码生成的输出文件、控制块名、MIB表名、MIB表查询时关联控制块所挂靠的树、控制块在树上的节点、控制块的关键字数据结构、MIB表数据结构的编号以及MIB表的描述。
在上述技术方案的基础上,步骤A具体包括以下操作:
步骤A1、在配置XML文件中使用<Module name>标签属性定义控制块的归属模块,使用<ProductId>标签属性定义模块产品表ID;
步骤A2、在配置XML文件中使用<Include>标签定义控制块数据结构所在头文件,使用<Output>标签定义MIB功能代码生成的输出文件,当有多个文件时,使用分号隔开;
步骤A3、在配置XML文件中使用<Cb name>标签定义控制块名,使用<mibName>标签定义MIB表名,使用<MibId>标签定义MIB表数据结构的编号,使用<description>标签定义MIB表的描述;还在配置XML文件中使用<cbTree>标签定义MIB表查询时关联控制块所挂靠的树,使用<cbNode>标签定义控制块在树上的节点,使用<key>标签定义控制块的关键字数据结构。
在上述技术方案的基础上,步骤B具体包括以下操作:根据控制块名的内容在控制块数据结构所在头文件中遍历查找到对应的控制块数据结构体;通过深度遍历查找到对应的控制块数据结构体,扩展展开提取出全部属性字段并转换成MIB表的数据XML文件。
在上述技术方案的基础上,该方法的步骤B还包括对数据XML文件进行定制的操作。
在上述技术方案的基础上,所述对数据XML文件进行定制的操作包括:通过设置或修改数据XML文件中各MIB字段的mibShow属性值,来控制数据XML文件中的各MIB字段是否会被解析加入到MIB表定义为属性字段,从而实现对数据XML文件的定制。
在上述技术方案的基础上,步骤C中,生成的MIB功能代码包括MIB表头文件以及MIB表回调函数源文件。
本发明还提供一种基于上述方法的自动生成软件平台MIB功能代码的系统,该系统包括MIB生成规则设置单元、数据XML文件生成单元和MIB功能代码生成单元;
所述MIB生成规则设置单元用于:在配置XML文件中设置控制块的MIB生成规则,该生成规则中包括指定的软件平台数据结构头文件;
所述数据XML文件生成单元用于:利用Python脚本解析配置XML文件中指定的软件平台数据结构头文件,并根据设置的MIB生成规则生成MIB表的数据XML文件,所述数据XML文件为XML格式的MIB表数据结构描述文件;
所述MIB功能代码生成单元用于:利用Python脚本解析数据XML文件,并通过转换数据XML文件中的MIB表数据结构,生成软件平台的MIB功能代码。
在上述技术方案的基础上,设置有MIB生成规则的配置XML文件包括:控制块的归属模块名、模块产品表ID、控制块数据结构所在头文件、MIB功能代码生成的输出文件、控制块名、MIB表名、MIB表查询时关联控制块所挂靠的树、控制块在树上的节点、控制块的关键字数据结构、MIB表数据结构的编号以及MIB表的描述。
在上述技术方案的基础上,所述MIB生成规则设置单元设置MIB生成规则的具体操作包括:在配置XML文件中使用<Modulename>标签属性定义控制块的归属模块,使用<ProductId>标签属性定义模块产品表ID;在配置XML文件中使用<Include>标签定义控制块数据结构所在头文件,使用<Output>标签定义MIB功能代码生成的输出文件,当有多个文件时,使用分号隔开;在配置XML文件中使用<Cb name>标签定义控制块名,使用<mibName>标签定义MIB表名,使用<MibId>标签定义MIB表数据结构的编号,使用<description>标签定义MIB表的描述;还在配置XML文件中使用<cbTree>标签定义MIB表查询时关联控制块所挂靠的树,使用<cbNode>标签定义控制块在树上的节点,使用<key>标签定义控制块的关键字数据结构。
在上述技术方案的基础上,所述数据XML文件生成单元生成数据XML文件的具体操作包括:根据控制块名的内容在控制块数据结构所在头文件中遍历查找到对应的控制块数据结构体;通过深度遍历查找到对应的控制块数据结构体,扩展展开提取出全部属性字段并转换成MIB表的数据XML文件。
在上述技术方案的基础上,所述数据XML文件生成单元中还包括数据XML文件定制子单元,该数据XML文件定制子单元用于:实现对数据XML文件的定制。
在上述技术方案的基础上,所述数据XML文件定制子单元实现对数据XML文件的定制的具体操作包括:通过设置或修改数据XML文件中各MIB字段的mibShow属性值,来控制数据XML文件中的各MIB字段是否会被解析加入到MIB表定义为属性字段,从而实现对数据XML文件的定制。
本发明的有益效果在于:
(1)本发明创造性的将XML标准的数据描述和Python齐备强大的XML解析库配合使用,实现了一种软件平台MIB功能代码自动生成的方案。研发人员只需要在配置XML文件中定制少量MIB生成规则,并自动生成对应的数据XML文件,再运行Python脚本解析数据XML就可以自动生成MIB功能代码;以往手动书写的MIB功能代码几乎可以全部由Python脚本代替,极大的降低手工编码工作量,使得手工编码量至少可以减少80%。
(2)利用本发明生成的MIB功能代码无需任何改动就可满足编译运行需求。自动生成的MIB头文件中表的定义完全符合RFC的MIB语法要求,MIB源文件中回调函数编译运行后可以满足MIB增、删、查、改的基本功能需求。
(3)本发明可以实现对数据XML文件的定制功能,使得数据XML文件能提供灵活的字段定制属性,可根据需要提取并配置想要生成的MIB表各字段,不但满足了开发人员的各种使用需求,而且适用性、灵活性更强。
附图说明
图1为本发明实施例中自动生成软件平台MIB功能代码的方法流程图;
图2为本发明另一实施例中自动生成软件平台MIB功能代码的方法的时序图;
图3为本发明实施例中自动生成软件平台MIB功能代码的系统的结构框图;
图4为本发明另一实施例中自动生成软件平台MIB功能代码的系统的结构框图。
具体实施方式
本发明的设计思路是提供一种自动生成软件平台MIB功能代码的方法及系统,不但能满足RFC协议的MIB语法要求,而且极大的减少了手工编码工作量、降低了编码错误引入风险。
目前,Python是一种面向对象的解释型计算机程序设计语言,继承了传统编译语言的强大性和通用性,同时也借鉴了简单脚本和解释语言的易用性。Python既支持面向过程的编程也支持面向对象的编程,在“面向过程”的语言中,程序是由过程或仅仅是可重用代码的函数构成。在“面向对象”的语言中,程序是由数据和功能组合而成的对象构成。依托Python丰富且强大的库,组合使用可以完成各种工作,包括正则表达式、文档生成、单元测试等。
而XML(eXtensible Markup Language,简称XML)即可扩展标记语言,是一种简单的数据储存语言,使用一系列的标记描述数据。XML语法的出现,使得标记语言得以标准化,可以通过相同的XML解析器进行解析,然后根据不同的XML标记,对数据的不同部分进行区分处理,使得文件内容传达的数据讯息能更容易的传递于各平台间,有助于数据处理。
本发明则创造性的将XML标准的数据描述和Python齐备强大的XML解析库配合使用,实现了一种软件平台MIB功能代码自动生成的方案,能为软件平台的开发工作带来事半功倍的效果,使软件开发效率得到大幅提升;不但能满足RFC协议的MIB语法要求,而且极大的减少了手工编码工作量、降低了编码错误引入风险。
为了更好的理解本发明的技术方案,下面将结合说明书附图以及具体的实施例对本发明的技术方案进行详细的说明。
实施例一
参见图1、图2所示,本实施例提供了一种自动生成软件平台MIB功能代码的方法,该方法包括以下步骤:
A、设置MIB生成规则:在配置XML文件中设置控制块的MIB生成规则,该生成规则中包括指定的软件平台数据结构头文件。本实施例中,配置XML文件的文件名命名为cfg.xml;在实际实施过程中,该配置XML文件的文件名可根据需要由开发人员自行设置,本实施例不做具体限定。
B、生成数据XML文件:利用Python脚本解析配置XML文件中指定的软件平台数据结构头文件,并根据设置的MIB生成规则生成MIB表的数据XML文件,所述数据XML文件为XML格式的MIB表数据结构描述文件。本实施例中,数据XML文件的文件名命名为mibdata.xml;用于解析配置XML文件并生成数据XML文件的Python脚本为名称为datacrt.py的自定义Python脚本。在实际实施过程中,该数据XML文件的文件名、实现上述功能的Python脚本的名称及实现功能代码,均可根据需要由开发人员自行设置,本实施例不做具体限定。
C、生成MIB功能代码:利用Python脚本解析数据XML文件,并通过转换数据XML文件中的MIB表数据结构,生成软件平台需要的可执行的MIB功能代码。生成的MIB功能代码包括MIB表头文件(*.h)以及MIB表回调函数源文件(*.c)。本实施例中,用于解析数据XML文件并生成MIB功能代码的Python脚本为名称为mibcrt.py的自定义Python脚本。在实际实施过程中,实现上述功能的Python脚本的名称及实现功能代码,均可根据需要由开发人员自行设置;并且,在实际应用中还可将用于解析配置XML文件并生成数据XML文件的Python脚本与用于解析数据XML文件并生成MIB功能代码的Python脚本,合并在一个Python脚本中以实现上述功能,本实施例不做具体限定。
实施例二
本实施例提供的一种自动生成软件平台MIB功能代码的方法,其基本步骤与实施例一相同,不同之处在于:步骤A中,设置有MIB生成规则的配置XML文件包括以下内容:
控制块的归属模块名、模块产品表ID、控制块数据结构所在头文件(即指定的软件平台数据结构头文件)、MIB功能代码生成的输出文件(该输出文件包括MIB表头文件以及MIB表回调函数源文件)、控制块名、MIB表名、MIB表查询时关联控制块所挂靠的树(通过获取定位到树上的控制块,将控制块中数据以MIB表的数据格式返回给MIB查询接口)、控制块在树上的节点、控制块的关键字数据结构(即MIB表Key的数据来源)、MIB表数据结构的编号以及MIB表的描述。
举例来说,假定在一种实例应用中需要基于DCL(Data Connection Limited,数据连接有限公司)软件平台RLDF(Router Label Data Forwarder,路由器标签数据转发)模块的ftn_pw_data_cb控制块,生成对应的FTN_PW_DATA表MIB功能代码。并且,ftn_pw_data_cb控制块的结构体定义如下:
则与之对应的设置有MIB生成规则的配置XML文件的代码内容可如下:
上述配置XML文件是一个标准的xml数据结构描述,以Module为根节点,对该Module下的控制块节点(CBs)扩展MIB属性。其中,<Module name>为控制块的归属模块名;<ProductId>为模块产品表ID;<Include>为控制块数据结构所在头文件,Python脚本通过解析控制块数据结构生成MIB表的数据字段;<Output>为MIB功能代码生成的输出文件,其中*func.h为函数声明头文件,*ambl.h为将MIB表与回调函数关联的头文件;*mib.h为MIB表数据结构定义的头文件;MIB表回调函数实现的源文件根据不同MIB名称生成;以上属性,同一模块在扩展控制块MIB属性时通用。
另外,<Cbs>节点中描述的是各<Cb>节点扩展的MIB属性。<Cbname>为控制块名;<mibName>为扩展MIB表名;<cbTree>为MIB表查询时关联控制块所挂靠的树,通过获取定位到树上的控制块,将控制块中数据以MIB表的数据格式返回给MIB查询接口;<cbNode>为控制块在树上的节点;<key>为控制块的关键字数据结构,也是MIB表Key的数据来源;<MibId>为MIB表数据结构的编号;<discription>为MIB表的描述。由上述实例可看出,配置XML文件(如cfg.xml)作为Python脚本(如datacrt.py)的输入,为了便于Python脚本解析,需要结合控制块的实际信息进行设置。
实施例三
本实施例提供的一种自动生成软件平台MIB功能代码的方法,其基本步骤与实施例二相同,不同之处在于:该方法的步骤A具体包括以下操作:
步骤A1、在配置XML文件中使用<Module name>标签属性定义控制块的归属模块(如“rldf”);使用<ProductId>标签属性定义模块产品表ID(如“LOCAL.lsr_index”);
步骤A2、在配置XML文件中使用<Include>标签定义控制块数据结构所在头文件,(例如,rldf_ftn_pw_data_cb控制块的结构体定义在rldf.h文件中,因此<Include>标签的路径内容为“../rldf.h”);使用<Output>标签定义MIB功能代码生成的输出文件,当有多个文件时,使用分号隔开(例如,在实施例二的实例中,<Output>标签输出多个文件,则<Output>标签的内容为“../rldffunc.h;../rldfambl.h;../../../../../src/inc/mpls/rldfmib.h;”)。
步骤A3、由于最终生成的MIB功能代码的输出文件中,MIB回调函数需要包括数据创建函数、数据销毁函数、数据存储函数、查询函数、数据获取函数,其中,除了数据获取函数用作回显外,其余四个回调函数分别对应控制块二叉树上节点的增、删、改、查。
因此,为了定义被解析对象以及待生成对象,需要在配置XML文件中使用<Cb name>标签定义控制块名(例如控制块名为“rldf_ftn_pw_data_cb”,datacrt.py脚本将根据该控制块名在<Include>标签定义的路径文件中遍历查询找到对应的结构体进行内容解析生成MIB定义);还需在配置XML文件中使用<mibName>标签定义MIB表名(如“FTN_PW_DATA”),使用<MibId>标签定义MIB表数据结构的编号,使用<description>标签定义MIB表的描述。
另外,为了定义功能函数的操作逻辑,需要指明被操作的树,以及被操作的控制块对应的树节点(一个控制块可能有多个树节点用于不同的树的挂靠),同时还需要指明操作节点所使用的索引。即,在配置XML文件中使用<cbTree>标签定义MIB表查询时关联控制块所挂靠的树,也就是操作的树(如“LOCAL.ftn_pw_data_tree”);使用<cbNode>标签定义控制块在树上的节点(如“ftn_pw_data_tree_node”);使用<key>标签定义控制块的关键字数据结构,也就是索引(如“pw_id”)。
实施例四
本实施例提供的一种自动生成软件平台MIB功能代码的方法,其基本步骤与实施例二相同,不同之处在于:该方法的启动测试的步骤B具体包括以下操作:根据控制块名的内容在控制块数据结构所在头文件(即指定的软件平台数据结构头文件)中遍历查找到对应的控制块数据结构体;通过深度遍历查找到对应的控制块数据结构体,扩展展开提取出全部属性字段并转换成MIB表的数据XML文件,所述数据XML文件为XML格式的MIB表数据结构描述文件,如mibdata.xml。
举例来说,还是以基于DCL软件平台RLDF(模块的ftn_pw_data_cb控制块,最终生成对应的FTN_PW_DATA表MIB功能代码为例,则按照上述步骤B的操作,生成的FTN_PW_DATA表对应的数据XML文件(mibdata.xml)的代码内容可如下:
上述数据XML文件以<families>为根节点,扩展<family>子节点,通过定制<family>中的域标签<field>标签,在域标签范围内,描述的是MIB表字段数据结构。<family>的<name>属性就是MIB表名称;<field>标签的id属性为MIB字段编号,name属性为MIB字段名称,type属性为MIB表字段类型,isKey属性为MIB表字段关键字,descript属性为字段说明,access属性为MIB表字段读写属性,fmt属性为MIB表显示格式,默认是整形。例如,pw_status字段的类型为无符号长整型,非关键字,可读写,显示格式为默认整形无需显式。
进一步地,可以理解的是,按照上述步骤B操作生成数据XML文件(mibdata.xml)后,执行步骤C运行Python脚本(mibcrt.py)解析数据XML文件(mibdata.xml),并通过转换数据XML文件(mibdata.xml)中的MIB表数据结构,生成的MIB功能代码可如下(自动生成的注释字符省略):
同理,生成的MIB回调函数的实现代码包括:
lmgr_ldf_mib_ftn_pw_data_lookup | 查询函数 |
lmgr_ldf_mib_ftn_pw_data_get | 数据获取函数 |
lmgr_ldf_mib_ftn_pw_data_destroy | 数据销毁函数 |
lmgr_ldf_mib_ftn_pw_data_store_set | 数据存储函数 |
lmgr_ldf_mib_ftn_pw_data_create_row | 数据创建函数 |
实施例五
参见图1、图2所示,本实施例提供的一种自动生成软件平台MIB功能代码的方法,其基本步骤与实施例一相同,不同之处在于:在该方法中还可以实现数据XML文件的定制功能,即定制数据XML文件(mibdata.xml)的MIB表数据结构属性,从而生成自定义的MIB功能代码。具体来说,本实施例中,步骤B还包括数据XML文件的定制操作:通过设置或修改数据XML文件中各MIB字段的mibShow属性值,来控制数据XML文件中的各MIB字段是否会被解析加入到MIB表定义为属性字段。举例来说,默认情况下,数据XML文件(mibdata.xml)中的各MIB字段的mibShow属性值均是“yes”(如实施例五的实例中数据XML文件的代码内容),因此该数据XML文件(mibdata.xml)中的所有MIB字段都会被解析加入到MIB表定义为属性字段;而当有些MIB字段不被功能需要时,可以把不需要的MIB字段的mibShow的属性值修改为“no”,将这些字段过滤掉,从而实现了对数据XML文件的定制操作。本实施例中,通过数据XML文件的定制操作,可对MIB表数据结构属性进行定制,从而生成自定义的MIB功能代码,满足了开发人员的各种使用需求,使得本方法的适用性、灵活性更强。
实施例六
基于同一发明构思,参见图3所示,本发明实施例还提供了一种基于上述方法的自动生成软件平台MIB功能代码的系统。该系统包括MIB生成规则设置单元、数据XML文件生成单元和MIB功能代码生成单元。
其中,MIB生成规则设置单元用于:在配置XML文件中设置控制块的MIB生成规则,该生成规则中包括指定的软件平台数据结构头文件;数据XML文件生成单元用于:利用Python脚本解析配置XML文件中指定的软件平台数据结构头文件,并根据设置的MIB生成规则生成MIB表的数据XML文件,所述数据XML文件为XML格式的MIB表数据结构描述文件;MIB功能代码生成单元用于:利用Python脚本解析数据XML文件,并通过转换数据XML文件中的MIB表数据结构,生成软件平台的MIB功能代码。
进一步地,所述MIB生成规则设置单元设置MIB生成规则的具体操作包括:在配置XML文件中使用<Module name>标签属性定义控制块的归属模块,使用<ProductId>标签属性定义模块产品表ID;在配置XML文件中使用<Include>标签定义控制块数据结构所在头文件,使用<Output>标签定义MIB功能代码生成的输出文件,当有多个文件时,使用分号隔开;在配置XML文件中使用<Cb name>标签定义控制块名,使用<mibName>标签定义MIB表名,使用<MibId>标签定义MIB表数据结构的编号,使用<description>标签定义MIB表的描述;还在配置XML文件中使用<cbTree>标签定义MIB表查询时关联控制块所挂靠的树,使用<cbNode>标签定义控制块在树上的节点,使用<key>标签定义控制块的关键字数据结构。
更进一步地,所述数据XML文件生成单元生成数据XML文件的具体操作包括:根据控制块名的内容在控制块数据结构所在头文件中遍历查找到对应的控制块数据结构体;通过深度遍历查找到对应的控制块数据结构体,扩展展开提取出全部属性字段并转换成MIB表的数据XML文件。
实施例七
参加图4所示,本实施例提供的自动生成软件平台MIB功能代码的系统,其基本结构与实施例六相同,不同之处在于:该系统的数据XML文件生成单元中包括有数据XML文件定制子单元,该数据XML文件定制子单元用于:实现对数据XML文件的定制。其具体的实现流程包括:通过设置或修改数据XML文件中各MIB字段的mibShow属性值,来控制数据XML文件中的各MIB字段是否会被解析加入到MIB表定义为属性字段,从而实现对数据XML文件的定制。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
Claims (13)
1.一种自动生成软件平台MIB功能代码的方法,其特征在于,该方法包括以下步骤:
A、在配置XML文件中设置控制块的MIB生成规则,该生成规则中包括指定的软件平台数据结构头文件;
B、利用Python脚本解析配置XML文件中指定的软件平台数据结构头文件,并根据设置的MIB生成规则生成MIB表的数据XML文件,所述数据XML文件为XML格式的MIB表数据结构描述文件;
C、利用Python脚本解析数据XML文件,并通过转换数据XML文件中的MIB表数据结构,生成软件平台的MIB功能代码。
2.如权利要求1所述的自动生成软件平台MIB功能代码的方法,其特征在于,步骤A中,设置有MIB生成规则的配置XML文件包括:
控制块的归属模块名、模块产品表ID、软件平台数据结构头文件、MIB功能代码生成的输出文件、控制块名、MIB表名、MIB表查询时关联控制块所挂靠的树、控制块在树上的节点、控制块的关键字数据结构、MIB表数据结构的编号以及MIB表的描述。
3.如权利要求2所述的自动生成软件平台MIB功能代码的方法,其特征在于,步骤A具体包括以下操作:
步骤A1、在配置XML文件中使用<Module name>标签属性定义控制块的归属模块,使用<ProductId>标签属性定义模块产品表ID;
步骤A2、在配置XML文件中使用<Include>标签定义软件平台数据结构头文件,使用<Output>标签定义MIB功能代码生成的输出文件,当有多个文件时,使用分号隔开;
步骤A3、在配置XML文件中使用<Cb name>标签定义控制块名,使用<mibName>标签定义MIB表名,使用<MibId>标签定义MIB表数据结构的编号,使用<description>标签定义MIB表的描述;还在配置XML文件中使用<cbTree>标签定义MIB表查询时关联控制块所挂靠的树,使用<cbNode>标签定义控制块在树上的节点,使用<key>标签定义控制块的关键字数据结构。
4.如权利要求2所述的自动生成软件平台MIB功能代码的方法,其特征在于,步骤B具体包括以下操作:
根据控制块名的内容在软件平台数据结构头文件中遍历查找到对应的控制块数据结构体;通过深度遍历查找到对应的控制块数据结构体,扩展展开提取出全部属性字段并转换成MIB表的数据XML文件。
5.如权利要求1所述的自动生成软件平台MIB功能代码的方法,其特征在于,该方法的步骤B还包括对数据XML文件进行定制的操作。
6.如权利要求5所述的自动生成软件平台MIB功能代码的方法,其特征在于,所述对数据XML文件进行定制的操作包括:通过设置或修改数据XML文件中各MIB字段的mibShow属性值,来控制数据XML文件中的各MIB字段是否会被解析加入到MIB表定义为属性字段,从而实现对数据XML文件的定制。
7.如权利要求1至6中任一项所述的自动生成软件平台MIB功能代码的方法,其特征在于:步骤C中,生成的MIB功能代码包括MIB表头文件以及MIB表回调函数源文件。
8.一种基于权利要求1所述方法的自动生成软件平台MIB功能代码的系统,其特征在于:该系统包括MIB生成规则设置单元、数据XML文件生成单元和MIB功能代码生成单元;
所述MIB生成规则设置单元用于:在配置XML文件中设置控制块的MIB生成规则,该生成规则中包括指定的软件平台数据结构头文件;
所述数据XML文件生成单元用于:利用Python脚本解析配置XML文件中指定的软件平台数据结构头文件,并根据设置的MIB生成规则生成MIB表的数据XML文件,所述数据XML文件为XML格式的MIB表数据结构描述文件;
所述MIB功能代码生成单元用于:利用Python脚本解析数据XML文件,并通过转换数据XML文件中的MIB表数据结构,生成软件平台的MIB功能代码。
9.如权利要求8所述的自动生成软件平台MIB功能代码的系统,其特征在于,设置有MIB生成规则的配置XML文件包括:控制块的归属模块名、模块产品表ID、软件平台数据结构头文件、MIB功能代码生成的输出文件、控制块名、MIB表名、MIB表查询时关联控制块所挂靠的树、控制块在树上的节点、控制块的关键字数据结构、MIB表数据结构的编号以及MIB表的描述。
10.如权利要求9所述的自动生成软件平台MIB功能代码的系统,其特征在于,所述MIB生成规则设置单元设置MIB生成规则的具体操作包括:
在配置XML文件中使用<Module name>标签属性定义控制块的归属模块,使用<ProductId>标签属性定义模块产品表ID;
在配置XML文件中使用<Include>标签定义软件平台数据结构头文件,使用<Output>标签定义MIB功能代码生成的输出文件,当有多个文件时,使用分号隔开;
在配置XML文件中使用<Cb name>标签定义控制块名,使用<mibName>标签定义MIB表名,使用<MibId>标签定义MIB表数据结构的编号,使用<description>标签定义MIB表的描述;还在配置XML文件中使用<cbTree>标签定义MIB表查询时关联控制块所挂靠的树,使用<cbNode>标签定义控制块在树上的节点,使用<key>标签定义控制块的关键字数据结构。
11.如权利要求9所述的自动生成软件平台MIB功能代码的系统,其特征在于,所述数据XML文件生成单元生成数据XML文件的具体操作包括:根据控制块名的内容在软件平台数据结构头文件中遍历查找到对应的控制块数据结构体;通过深度遍历查找到对应的控制块数据结构体,扩展展开提取出全部属性字段并转换成MIB表的数据XML文件。
12.如权利要求8所述的自动生成软件平台MIB功能代码的系统,其特征在于:所述数据XML文件生成单元中还包括数据XML文件定制子单元,该数据XML文件定制子单元用于:实现对数据XML文件的定制。
13.如权利要求12所述的自动生成软件平台MIB功能代码的系统,其特征在于,所述数据XML文件定制子单元实现对数据XML文件的定制的具体操作包括:通过设置或修改数据XML文件中各MIB字段的mibShow属性值,来控制数据XML文件中的各MIB字段是否会被解析加入到MIB表定义为属性字段,从而实现对数据XML文件的定制。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810273473.7A CN108509187B (zh) | 2018-03-29 | 2018-03-29 | 一种自动生成软件平台mib功能代码的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810273473.7A CN108509187B (zh) | 2018-03-29 | 2018-03-29 | 一种自动生成软件平台mib功能代码的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108509187A CN108509187A (zh) | 2018-09-07 |
CN108509187B true CN108509187B (zh) | 2021-05-18 |
Family
ID=63377929
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810273473.7A Active CN108509187B (zh) | 2018-03-29 | 2018-03-29 | 一种自动生成软件平台mib功能代码的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108509187B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109510728B (zh) * | 2018-12-24 | 2022-02-22 | 成都天奥电子股份有限公司 | 一种网管信息库mib文件自动转换成xml文件的方法 |
CN110311819B (zh) * | 2019-07-03 | 2022-06-07 | 广州鲁邦通物联网科技股份有限公司 | 基于页面配置文件的页面自动生成和MIBs表生成方法、管理方法、设备端和管理系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7454743B2 (en) * | 2001-12-28 | 2008-11-18 | Sun Microsystems, Inc. | Java to SNMP MIB mapping |
CN101335756A (zh) * | 2007-06-29 | 2008-12-31 | 凹凸电子(武汉)有限公司 | 计算机实现的snmp访问方法及系统 |
CN102185703A (zh) * | 2010-07-29 | 2011-09-14 | 艾默生网络能源有限公司 | 一种基于snmp协议的网络设备管理方法及主设备 |
CN102571420A (zh) * | 2011-12-20 | 2012-07-11 | 深圳市同洲视讯传媒有限公司 | 一种网元数据管理方法及系统 |
CN103902269A (zh) * | 2012-12-27 | 2014-07-02 | 中国科学院声学研究所 | 一种通过xml文件生成mib文件的系统及方法 |
CN104468232A (zh) * | 2014-12-22 | 2015-03-25 | 武汉烽火网络有限责任公司 | 使用xml文件和mib来完成网络设备配置的方法及系统 |
CN105786526A (zh) * | 2016-03-24 | 2016-07-20 | 江苏大学 | 一种基于Web的高效流程图绘制系统及方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060168229A1 (en) * | 2004-12-29 | 2006-07-27 | Shim Choon B | System and method for network management using extensible markup language |
WO2017040145A1 (en) * | 2015-08-28 | 2017-03-09 | Turck Holding Gmbh | Web-based programming environment for embedded devices |
-
2018
- 2018-03-29 CN CN201810273473.7A patent/CN108509187B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7454743B2 (en) * | 2001-12-28 | 2008-11-18 | Sun Microsystems, Inc. | Java to SNMP MIB mapping |
CN101335756A (zh) * | 2007-06-29 | 2008-12-31 | 凹凸电子(武汉)有限公司 | 计算机实现的snmp访问方法及系统 |
CN102185703A (zh) * | 2010-07-29 | 2011-09-14 | 艾默生网络能源有限公司 | 一种基于snmp协议的网络设备管理方法及主设备 |
CN102571420A (zh) * | 2011-12-20 | 2012-07-11 | 深圳市同洲视讯传媒有限公司 | 一种网元数据管理方法及系统 |
CN103902269A (zh) * | 2012-12-27 | 2014-07-02 | 中国科学院声学研究所 | 一种通过xml文件生成mib文件的系统及方法 |
CN104468232A (zh) * | 2014-12-22 | 2015-03-25 | 武汉烽火网络有限责任公司 | 使用xml文件和mib来完成网络设备配置的方法及系统 |
CN105786526A (zh) * | 2016-03-24 | 2016-07-20 | 江苏大学 | 一种基于Web的高效流程图绘制系统及方法 |
Non-Patent Citations (1)
Title |
---|
基于YANG语言的NETCONF网络管理数据建模的研究与实现;常亚楠;《中国优秀硕士学位论文全文数据库 信息科辑》;20091115;第I139-107页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108509187A (zh) | 2018-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106934062B (zh) | 一种查询elasticsearch的实现方法及系统 | |
US10698682B1 (en) | Computerized software development environment with a software database containing atomic expressions | |
US7941461B2 (en) | System and method for developing and enabling model-driven XML transformation framework for e-business | |
US8286132B2 (en) | Comparing and merging structured documents syntactically and semantically | |
US9058360B2 (en) | Extensible language framework using data cartridges | |
US10614126B2 (en) | Textual query editor for graph databases that performs semantic analysis using extracted information | |
US8103705B2 (en) | System and method for storing text annotations with associated type information in a structured data store | |
US7698694B2 (en) | Methods and systems for transforming an AND/OR command tree into a command data model | |
US20110202331A1 (en) | Method and software for extracting chemical data | |
US7784036B2 (en) | Methods and systems for transforming a parse graph into an and/or command tree | |
CN112235311B (zh) | Ovsdb客户端代码自动生成方法、系统、设备及介质 | |
Greifenberg et al. | Engineering tagging languages for DSLs | |
US20080092034A1 (en) | Identifying and annotating shared hierarchical markup document trees | |
US8635242B2 (en) | Processing queries on hierarchical markup data using shared hierarchical markup trees | |
CN112363694A (zh) | Fmu文件及求解器运行环境与工业软件的集成方法 | |
CN117033348B (zh) | Sql转换方法、装置、计算机设备和存储介质 | |
CN108509187B (zh) | 一种自动生成软件平台mib功能代码的方法及系统 | |
CN113704575A (zh) | 解析XML与Java文件的SQL方法、装置、设备及存储介质 | |
CN115080011B (zh) | 基于抽象语法树的代码生成方法及系统 | |
CN113343036B (zh) | 基于关键拓扑结构分析的数据血缘关系解析方法和系统 | |
CN112799638B (zh) | 无侵入式快速开发方法、平台、终端及存储介质 | |
CN112486990B (zh) | 一种根据模型描述同步数据库表结构的方法及设备 | |
KR100691261B1 (ko) | 확장성 생성 언어 변경 처리 시스템 및 그 방법 | |
CN111831288A (zh) | 一种自动生成Thrift IDL数据结构及自动转换函数的方法及系统 | |
Chaochaisit et al. | CSV-X: A Linked Data Enabled Schema Language, Model, and Processing Engine for Non-Uniform CSV |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |