CN101776996A - 通信系统中基于对象的配置管理系统的构建实现方法 - Google Patents
通信系统中基于对象的配置管理系统的构建实现方法 Download PDFInfo
- Publication number
- CN101776996A CN101776996A CN201010100798A CN201010100798A CN101776996A CN 101776996 A CN101776996 A CN 101776996A CN 201010100798 A CN201010100798 A CN 201010100798A CN 201010100798 A CN201010100798 A CN 201010100798A CN 101776996 A CN101776996 A CN 101776996A
- Authority
- CN
- China
- Prior art keywords
- class
- method function
- function
- management system
- communication system
- 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.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明涉及一种通信系统中基于对象的配置管理系统的构建实现方法,包括将被管理的通信设备上的系统资源抽象成为管理对象、对管理对象构建接口类信息、对管理对象构建实现类信息、构建相应的组类信息、构建功能模块的根类信息、构建功能模块中各个类间的关联关系、构建配置管理系统的公共支持类信息。采用该种通信系统中基于对象的配置管理系统的构建实现方法,提供的是一种以类的形式的API接口,同时对系统资源进行了抽象并构建了信息模型,基于该种配置管理系统进行高层管理软件开发,显著减少了开发的难度和工作量,屏蔽了实现各种管理功能的细节,降低了研发成本,缩短了产品开发周期,提高了企业的效益,不仅工作性能稳定可靠,而且适用范围较为广泛。
Description
技术领域
本发明涉及通信系统领域,特别涉及通信系统中的嵌入式软件技术领域,具体是指一种通信系统中基于对象的配置管理系统的构建实现方法。
背景技术
随着通信业和信息技术的发展,计算机网络的规模越来越大,网络结构也越来越复杂。在这种情况下,网络管理是计算机网络能够可靠而稳定运行的保证,如果没有一个高效的管理系统对网络进行管理,就很难保证向用户提供令人满意的服务,所以网络管理越来越体现出它的重要性,并成为计算机网络发展中的关键技术。组成计算机网络的基本要素是通信设备,因此,设备管理是网络管理的基础。通常,通信设备都会提供三种管理软件:命令行接口(Command Line Interface)管理、WEB管理和基于SNMP协议的管理。根据设备在网络中的位置,还有其他专有管理软件,比如ADSL终端设备上使用的TR069管理,EPON终端设备上使用的OAM管理等。这些网管软件各有侧重,往往在设备上并存同时运行,以提供多样化的管理手段。
多种管理软件并存增加了设备软件系统构建的复杂性。在软件架构设计上,有必要引入配置管理系统。如图1所示,配置管理系统处在高层管理软件和底层功能模块的中间,高层管理软件通过配置管理系统管理系统资源和业务功能。底层的各功能模块往往具有自己的配置文件和管理方法,这样整个系统各模块管理具有分散性,每个配置文件都是孤立的,当整个系统庞大的时候,过多的配置文件会给系统的管理带来很大的不便,因此需要设计一层配置管理系统软件,使得管理软件的开发无需关注各自的配置方法细节。配置管理系统为高层的各种管理软件提供统一的应用程序接口(API),使得后者的开发建立在一致的基础上。当管理软件基于统一的配置管理系统来开发,由于管理接口API具有一致性,开发和维护多个管理软件也将变得容易实现,并且当底层软件模块实现发生变化时,管理软件则无需做变化。
尽管现在的通信设备大多支持多种管理软件,但管理软件开发多是基于各功能模块自身导出的API接口,这些接口互不统一,与各自功能模块内部实现方法密切相关。分散的API接口也导致编译出来的管理软件规模变大,占用较多嵌入设备中宝贵的存储空间。也有部分设备软件架构中具有配置管理层,但构建上采用纯C的API接口,没有使用数据结构描述管理对象,从而缺少抽象性,也没有对管理对象进行组织。
发明内容
本发明的目的是克服了上述现有技术中的缺点,提供一种能够将通信系统中的各种资源进行有效组织、大幅减少管理软件的开发难度和周期、有效屏蔽实现各种管理功能的细节、通用性和可重用性较强、工作性能稳定可靠、适用范围较为广泛的通信系统中基于对象的配置管理系统的构建实现方法。
为了实现上述的目的,本发明的通信系统中基于对象的配置管理系统的构建实现方法如下:
该通信系统中基于对象的配置管理系统的构建实现方法,其主要特点是,所述的方法包括以下步骤:
(1)通信系统将被管理的通信设备上的系统资源抽象成为管理对象;
(2)通信系统根据管理对象的特点,对所述的管理对象构建相应的接口类信息,所述的接口类为抽象类,是对该管理对象进行访问的接口;
(3)通信系统根据管理对象的特点,对所述的管理对象构建相应的实现类信息,所述的实现类与相应的管理对象的接口类信息相对应;
(4)根据所述的管理对象的接口类和实现类构建相应的组类信息,所述的组类为该管理对象的接口类和实现类的基类;
(5)构建通信系统的功能模块的根类信息,所述的根类具有该功能模块的全局属性和操作;
(6)构建功能模块中所属各个类之间的关联关系;
(7)构建所述的配置管理系统的公共支持类信息,所述的公共支持类具有所述的配置管理系统自身管理相关的全局接口。
该通信系统中基于对象的配置管理系统的构建实现方法中的接口类中包括与属性关联的读取/设置方法的公有虚函数对。
该通信系统中基于对象的配置管理系统的构建实现方法中的接口类名称以“Im”为前缀。
该通信系统中基于对象的配置管理系统的构建实现方法中的实现类中包括与相应的管理对象的属性值相对应的私有变量、该私有变量的读取/设置方法的公有实函数对。
该通信系统中基于对象的配置管理系统的构建实现方法中的组类为在有多个对象实例的对象类基础上定义,组类只有一个对象实例,并且该组类的对象实例由一组子类的对象实例所组成。
该通信系统中基于对象的配置管理系统的构建实现方法中的组类中包括以下三个方法函数:
(1)add()方法函数,用于添加一个对象实例;
(2)remove()方法函数,用于删除指定的对象实例;
(3)find()方法函数,用于查找指定的对象。
该通信系统中基于对象的配置管理系统的构建实现方法中的根类只有一个对象实例,且该根类的对象实例在启动时自动创建,并一直存在于所述的配置管理系统中不可删除。
该通信系统中基于对象的配置管理系统的构建实现方法中的各个类之间的关联关系为各个类之间的继承关系。
该通信系统中基于对象的配置管理系统的构建实现方法中的构建所述的配置管理系统的公共支持类信息,包括以下步骤:
(11)构建对通信系统的信息模型进行维护管理的信息模型管理接口类和信息模型管理实现类;
(12)构建对管理对象的属性进行通用访问的存取器类;
(13)构建对配置文件进行管理的配置文件类;
(14)构建用于事件管理的事件监听类;
(15)构建用于提供上下文环境的环境类。
该通信系统中基于对象的配置管理系统的构建实现方法中的信息模型管理接口类和信息模型管理实现类中包括以下方法函数:
(1)setName()方法函数,用于修改信息模型中对象节点名字;
(2)getName()方法函数,用于获取信息模型中指定对象节点名字;
(3)parent()方法函数,用于获取指定对象节点的父节点;
(4)setParent()方法函数,用于设置对象节点的父节点;
(5)add()方法函数,用于给指定对象节点添加子节点;
(6)remove()方法函数,用于删除指定对象节点的子节点;
(7)destroy()方法函数,用于删除指定对象节点;
(8)children()方法函数,用于以链表形式获取指定对象节点的全部子节点;
(9)accessors()方法函数,用于以链表形式获取指定对象节点的全部属性;
(10)next()方法函数,用于获取指定对象节点的兄弟节点;
(11)find()方法函数,用于获取用特定标识方法标识的对象节点;
(12)root()方法函数,用于获取信息模型的根节点;
(13)applyChanges方法函数,用于强制将属性的变化值应用到功能模块中。
该通信系统中基于对象的配置管理系统的构建实现方法中的存取器类中包括以下方法函数:
(1)isAttributeConfigured()方法函数,用于获取属性是否可保存到配置文件中;
(2)isReadOnly()方法函数,用于获取属性是否为只读属性;
(3)next()方法函数,用于获取下一个属性;
(4)get()方法函数,用于获取指定属性当前值;
(5)set()方法函数,用于设置指定属性当前值。
该通信系统中基于对象的配置管理系统的构建实现方法中的配置文件类中包括以下方法函数:
(1)save()方法函数,用于将信息模型保存到指定配置文件中;
(2)restore()方法函数,用于将指定配置文件中配置数据载入并构建信息模型;
(3)commitToFlash()方法函数,用于将配置文件提交给文件系统保存入FLASH芯片中;
(4)restoreFromFactory()方法函数,用于从出厂配置中载入配置数据并构建信息模型。
该通信系统中基于对象的配置管理系统的构建实现方法中的事件至少包括对象删除事件和对象修改事件。
该通信系统中基于对象的配置管理系统的构建实现方法中的事件监听类包括以下方法函数:
(1)listen()方法函数,用于设置在指定对象节点上监听事件以及事件处理函数;
(2)unlisten()方法函数,用于设置在指定对象节点上停止监听事件。
该通信系统中基于对象的配置管理系统的构建实现方法中的环境类包括以下方法函数:
(1)getReadLock()方法函数,用于获取对信息模型读操作的锁;
(2)getWriteLock()方法函数,用于获取对信息模型写操作的锁;
(3)releaseLock()方法函数,用于释放读锁或写锁;
(4)isWriteLocked()方法函数,用于获取写锁状态;
(5)isReadLocked()方法函数,用于获取读锁状态;
(6)status()方法函数,用于检查最近一次配置管理系统接口调用返回状态;
(7)fail()方法函数,用于以字符串形式返回最近一次配置管理系统接口调用失败的原因。
采用了该发明的通信系统中基于对象的配置管理系统的构建实现方法,由于其中基于对象的构建思想,对系统资源进行了抽象,并构建了信息模型和管理对象,将设备中的各种资源有效的组织起来,为管理功能提供了一个设备资源的逻辑视图,而且在当前高层管理软件的开发普遍采用面向对象技术情况下,基于本发明提供的基于对象的配置管理系统开发高层管理软件,可以实现对象的直接映射,从而显著减少了高层管理软件开发的难度和工作量;对象类的继承性便于扩充和增加管理对象类,而且面对的是较高层次上进行抽象的管理对象,屏蔽了实现各种管理功能的细节,使得相应的配置管理系统具有广泛的可重用性,可以将该配置管理系统软件应用到不同的通信设备上,仅仅需要扩充对象类即可满足管理要求,设备厂商将可以在不同的设备上只需开发并维护一套管理层软件,有利于降低研发成本和产品开发周期,提高企业的效益,不仅工作性能稳定可靠,而且适用范围较为广泛。
附图说明
图1为本发明的具有配置管理系统的通信系统软件架构示意图。
图2为本发明的通信系统中基于对象的配置管理系统的构建实现方法中的接口类UML示意图。
图3为本发明的通信系统中基于对象的配置管理系统的构建实现方法的整体流程示意图。
图4为本发明的通信系统中基于对象的配置管理系统的构建实现方法的管理URL过滤功能的接口类之间的关联示意图。
具体实施方式
为了能够更清楚地理解本发明的技术内容,特举以下实施例详细说明。
请参阅图3所示,该通信系统中基于对象的配置管理系统的构建实现方法,包括以下步骤:
(1)通信系统将被管理的通信设备上的系统资源抽象成为管理对象;
(2)通信系统根据管理对象的特点,对所述的管理对象构建相应的接口类信息,所述的接口类为抽象类,是对该管理对象进行访问的接口;该接口类中包括与属性关联的读取/设置方法的公有虚函数对;该接口类名称以“Im”为前缀;
(3)通信系统根据管理对象的特点,对所述的管理对象构建相应的实现类信息,所述的实现类与相应的管理对象的接口类信息相对应;该实现类中包括与相应的管理对象的属性值相对应的私有变量、该私有变量的读取/设置方法的公有实函数对;
(4)如有必要,根据所述的管理对象的接口类和实现类构建相应的组类信息,所述的组类为该管理对象的接口类和实现类的基类;该组类只有一个对象实例,并且该组类的对象实例由一组子类的对象实例所组成;该组类中包括以下三个方法函数:
(a)add()方法函数,用于添加一个对象实例;
(b)remove()方法函数,用于删除指定的对象实例;
(c)find()方法函数,用于查找指定的对象;
(5)构建通信系统的功能模块的根类信息,所述的根类具有该功能模块的全局属性和操作;该根类只有一个对象实例,且该根类的对象实例在启动时自动创建,并一直存在于所述的配置管理系统中不可删除;
(6)构建功能模块中所属各个类之间的关联关系;该各个类之间的关联关系为各个类之间的继承关系;
(7)通信系统根据用户操作,构建所述的配置管理系统的公共支持类信息,所述的公共支持类具有所述的配置管理系统自身管理相关的全局接口;所述的配置管理系统的公共支持类信息,包括以下步骤:
(a)构建对通信系统的信息模型进行维护管理的信息模型管理接口类和信息模型管理实现类;该管理接口类和管理节点实现类中包括以下方法函数:
(i)setName()方法函数,用于修改信息模型中对象节点名字;
(ii)getName()方法函数,用于获取信息模型中指定对象节点名字;
(iii)parent()方法函数,用于获取指定对象节点的父节点;
(iv)setParent()方法函数,用于设置对象节点的父节点;
(v)add()方法函数,用于给指定对象节点添加子节点;
(vi)remove()方法函数,用于删除指定对象节点的子节点;
(vii)destroy()方法函数,用于删除指定对象节点;
(viii)children()方法函数,用于以链表形式获取指定对象节点的全部子节点;
(ix)accessors()方法函数,用于以链表形式获取指定对象节点的全部属性;
(x)next()方法函数,用于获取指定对象节点的兄弟节点;
(xi)find()方法函数,用于获取用特定标识方法标识的对象节点;
(xii)root()方法函数,用于获取信息模型的根节点;
(xiii)applyChanges方法函数,用于强制将属性的变化值应用到功能模块中;
(b)构建对管理对象的属性进行通用访问的存取器类;该通信系统中基于对象的配置管理系统的构建实现方法中的存取器类中包括以下方法函数:
(i)isAttributeConfigured()方法函数,用于获取属性是否可保存到配置文件中;
(ii)isReadOnly()方法函数,用于获取属性是否为只读属性;
(iii)next()方法函数,用于获取下一个属性;
(iv)get()方法函数,用于获取指定属性当前值;
(v)set()方法函数,用于设置指定属性当前值;
(c)构建对配置文件进行管理的配置文件类,该配置文件类中包括以下方法函数:
(i)save()方法函数,用于将信息模型保存到指定配置文件中;
(ii)restore()方法函数,用于将指定配置文件中配置数据载入并构建信息模型;
(iii)commitToFlash()方法函数,用于将配置文件提交给文件系统保存入FLASH芯片中;
(iv)restoreFromFactory()方法函数,用于从出厂配置中载入配置数据并构建信息模型;
(d)构建用于事件管理的事件监听类;所述的事件包括对象删除事件和对象修改事件,该事件监听类包括以下方法函数:
(i)listen()方法函数,用于设置在指定对象节点上监听事件以及事件处理函数;
(ii)unlisten()方法函数,用于设置在指定对象节点上停止监听事件;
(e)构建用于提供上下文环境的环境类,该环境类包括以下方法函数:
(i)getReadLock()方法函数,用于获取对信息模型读操作的锁;
(ii)getWriteLock()方法函数,用于获取对信息模型写操作的锁;
(iii)releaseLock()方法函数,用于释放读锁或写锁;
(iv)isWriteLocked()方法函数,用于获取写锁状态;
(v)isReadLocked()方法函数,用于获取读锁状态;
(vi)status()方法函数,用于检查最近一次配置管理系统接口调用返回状态;
(vii)fail()方法函数,用于以字符串形式返回最近一次配置管理系统接口调用失败的原因。
在实际使用当中,本发明的实质是一种在通信设备上构建基于对象的配置管理系统软件的方法,其实现了高层管理软件的开发基于统一的接口,通过构建信息模型,将设备中的各种资源有效的组织起来,为管理功能提供了一个设备资源的逻辑视图。
在本发明的技术方案中,采用了面向对象程序设计中的“类”结构对管理对象进行具体的描述,构建出一种以类的形式提供API接口的配置管理系统。类指明用什么信息描述对象以及可以对对象执行的动作。对象是类的一个实例,类说明对象的类型。对于一个功能模块,定义管理对象类、组类和根类,并通过类之间的继承关系将该模块中抽象出来的这些类建立关联。构建的配置管理系统将系统中所有对象组织成树状信息模型。
本发明中的管理对象是被管理的通信设备上系统资源的抽象,比如路由接口、桥接接口、传输子通道等。本发明采用面向对象程序设计中的“类”结构对管理对象进行具体的描述,并将管理对象组织成信息模型(Information Model,IM),构建出一种以类的形式提供API接口的配置管理系统。所谓类是指具有相同属性(attributes)和操作(actions)的管理对象的集合,它指明用什么信息描述对象以及可以对对象执行的动作。属性是指管理对象的特征,比如网络接口具有IP地址和子网掩码属性。属性值可以读取或者设置,也就是属性可读或可写,所以,每个属性都必须有相应的获取(get)/设置(set)对操作(只读属性只有get操作)。操作是指对对象执行的动作,定义为类的方法函数。类都具有自身特定属性和可执行操作,这是类互相区别的标志。对象是类的一个实例(instance),类说明对象的类型。利用面向对象的继承性,对象类可以有若干派生类,派生类扩展了基类的属性和操作,便于扩充和增加对象类。本发明构建的配置管理系统将系统中所有对象组织成树状数据结构,称为信息模型,在信息模型中对象又称为节点(Node)。
如图3所示,本发明的方法包括如下步骤:
步骤一:对于管理对象定义接口类(Interface class),根据管理对象的特点定义类中的属性和操作,对于每个属性都必须具有一对get/set方法函数(只读属性可以只有get函数)。接口类是一个抽象类,是对该对象进行访问的接口。接口类中基本没有程序实现代码,主要是定义与属性关联的get/set对和其他操作方法函数,这些函数都声明为公有的虚函数。每个接口类都对应一个实现类,实现类按照步骤二方法定义并实现。接口类定义可以使用标准的C++语言类定义。在类命名上,接口类名字一般在实现类名字前加上“Im”头(“Im”标识InformationModel类),比如IpInterface类的接口类命名为ImIpInterface。属性在接口类中以get/set对函数出现,因为外部程序不允许直接访问属性变量,所以在接口类中没有属性变量定义。接口类可以使用UML图形象表示(在UML图例中,不显示“Im”前缀),如图2,ImIpInterface类代表TCP/IP协议栈中的一个接口。
步骤二:定义并实现管理对象的实现类(Implementation class)。实现类是接口类的真正实现代码,它调用底层功能模块的API接口实现操作函数,实现类的实现事实上是对功能模块的抽象工作。实现类定义也可以使用标准的C++语言类定义。利用面向对象的继承性,实现类定义为接口类的派生类。除继承接口类外,实现类也定义ManagedNode类为基类,ManagedNode类是一种公共支持类,参考步骤六。属性在实现类中定义除了相应的get/set对方法函数外,还必须在该类中定义相应的变量,用于保存对属性的设置值,这个变量须定义为私有,对它的访问都是通过get/set对函数,以屏蔽直接访问所带来的不安全性。
步骤三:定义并实现组类(Collection class)。某些对象类系统中存在多个对象实例,为方便统一管理,在该对象类基础上再定义一个组类。组类一般只有一个对象实例,并且该对象实例由一组子类的对象实例组成。组类定义为该对象类的基类,也就是这个对象类继承自组类。组类也需定义接口类和实现类,在命名上组类总是以复数形式命名并且包含三个方法函数:
●add()方法函数:添加一个对象实例;
●remove()方法函数:删除指定的对象实例;
●find()方法函数:查找指定的对象。
步骤四:定义并实现根类(Root class)。对于一个功能模块,可以定义一个根类,含有整个模块的全局属性和操作,定义根类的目的是提供对该功能模块进行配置的基本入口。根类同样也需定义接口类和实现类。根类必须只有一个对象实例,且根类对象在启动时由配置管理系统自动创建,将一直存在于系统中不可删除。
步骤五:定义类之间的联系。对于一个功能模块,在步骤一和二定义了管理对象的接口类和实现类,步骤三定义了组类,步骤四定义了根类,在此基础上,利用面向对象程序设计中类的继承性,可以将该模块中抽象出来的这些类建立关联,从而构建出信息模型中的一个子树。由于类之间继承关系,配置管理系统中的许多对象具有多个类类型,每个类可以配置对象的特定方面信息。先获取指向该对象的指针,然后使用C++的动态类型转换dynamic_cast运算符可以“浏览”对象所具有的所有类型类。
步骤六:定义并实现公共支持类。公共支持类用于提供配置管理系统自身管理相关的全局接口,至少包括:
(1)对信息模型维护管理的信息模型管理接口类(ImManaged)和信息模型管理实现类(ManagedNode),用于对信息模型中对象进行遍历、查找、添加、删除等操作,主要定义并实现:
●setName()方法函数:修改信息模型中对象节点名字;
●getName()方法函数:返回信息模型中指定对象节点名字;
●parent()方法函数:返回指定对象节点的父节点;
●setParent()方法函数:设置对象节点的父节点;
●add()方法函数:给指定对象节点添加子节点;
●remove()方法函数:删除指定对象节点的子节点;
●destroy()方法函数:删除指定对象节点;
●children()方法函数:以链表形式返回指定对象节点的全部子节点;
●accessors()方法函数:以链表形式返回指定对象节点的全部属性;
●next()方法函数:返回指定对象节点的兄弟节点;
●find()方法函数:返回用特定标识方法标识的对象节点;
●root()方法函数:返回信息模型的根节点;
●applyChanges方法函数:调用该方法函数强制将属性的变化值应用到功能模块中,默认情况下属性的set操作函数只修改实现类中的私有属性变量,也就是使属性修改生效。
(2)对属性进行通用访问的存取器(Accessor)类,用于实现对所有属性皆有效的操作,主要定义并实现:
●isAttributeConfigured()方法函数:返回属性是否可保存到配置文件中;
●isReadOnly()方法函数:返回属性是否为只读属性;
●next()方法函数:返回下一个属性;
●get()方法函数:返回指定属性当前值;
●set()方法函数:设置指定属性当前值。
(3)对配置文件进行管理的配置文件(ConfigFile)类。配置管理系统需要提供信息模型的保存机制,这样设备重启之后配置仍然生效。ConfigFile类主要定义并实现:
●save()方法函数:将信息模型保存到指定配置文件中,此时创建的配置文件位于内存中;
●restore()方法函数:将指定配置文件中配置数据载入并构建信息模型;
●commitToFlash()方法函数:将配置文件提交给文件系统保存入FLASH芯片中;
●restoreFromFactory()方法函数:从出厂配置中载入配置数据并构建信息模型。
(4)用于事件管理的事件监听(EventListener)类,事件至少包括对象删除(ObjectDeleted)和对象修改(ObjectChanged)两个事件,前者指对象被删除,后者指对象属性被修改,主要定义并实现:
●listen()方法函数:设置在指定对象节点上监听事件以及事件处理函数;
●unlisten()方法函数:设置在指定对象节点上停止监听事件。
(5)用于提供上下文环境的Environment类,这个类中至少需提供对信息模型访问的同步/互斥机制,主要定义并实现:
●getReadLock()方法函数:获取对信息模型读操作的锁,读锁可以被多个进程同时获取;
●getWriteLock()方法函数:获取对信息模型写操作的锁,写锁在被释放前只能被一个进程获取;
●releaseLock()方法函数:释放读锁或写锁;
●isWriteLocked()方法函数:获取写锁状态;
●isReadLocked()方法函数:获取读锁状态;
●status()方法函数:检查最近一次配置管理系统接口调用返回状态;
●fail()方法函数:以字符串形式返回最近一次配置管理系统接口调用失败的原因。
通过上述步骤,配置管理系统在对各个功能模块进行抽象的基础上,提供了广泛的接口类供高层管理软件调用。配置管理系统通过维护一个树结构的信息模型,管理着设备的所有资源。用户使用配置管理系统,可以简单的描述为创建一个对象,为对象的属性赋值,然后执行一些操作。
下面将结合本发明的技术方案,具体描述构建一种配置管理系统管理URL过滤功能的实例过程。
URL过滤是路由设备上提供的常用功能,用于控制对指定URL地址的访问,实现对特定网站的屏蔽。用户可以添加、删除URL地址,并启动或关闭URL过滤功能。
(1)首先定义管理对象的接口类和实现类。涉及URL过滤功能的管理对象是URL地址,为此定义一个ImURLItem接口类和URLItem实现类,该接口类只有一个属性url,对应有get_url()/set_url()对函数,无其他操作函数。定义代码参考如下:
class ImURLItem
{
protected:
ImURLItem(){}
virtual~ImURLItem();
public:
static const char*getClassName();
//Attributes
virtual const char*get_url(Environment*)const=0;
virtual void set_url(Environment*,const char*)=0;
private:
ImURLItem::ImURLItem(const ImURLItem&);
ImURLItem& operator=(const ImURLItem&);
};
class URLItem:public ImURLItem,public ManagedNode
{
public:
const char*get_url(Environment*e)const;
void set_url(Environment*e,const char*newurl);
void destroy(Environment*e);
virtual~URLItem();
URLItem();
protected:
char url[200];
};
(2)定义组类。URL过滤功能控制的URL地址是个列表,也就是ImURLItem类有多个实例,并且对于URL地址需要有添加和删除操作。所以,定义一个组类ImURLItems和它的实现类URLItems,包含三个操作函数:add()、remove()和find()。ImURLItems类定义代码参考如下:
class ImURLItems
{
protected:
ImURLItems(){}
virtual~ImURLItems();
public:
static const char*getClassName();
//iterate over the contained items of an instance of this class
//using one of the following iterator types
typedef ConstIterator<ImURLItem>const_iterator;
typedef Iterator<ImURLItem>iterator;
//add,remove and find items to this collection
virtual void add(Environment*,ImURLItem*)=0;
virtual void remove(Environment*,ImURLItem*)=0;
virtual ImURLItem*find(const char*ident)=0;
//return the one and only instance of this class
static ImURLItems*instance();
private:
ImURLItems(const ImURLItems&);
ImURLItems& operator=(const ImURLItems&);
};
(3)定义根类。URL过滤功能一般有两个全局参数enabled和mode,enabled参数控制URL过滤功能的开启或关闭,mode参数控制URL地址列表是白名单还是黑名单。经过抽象,构建一个ImURLFilter接口类和URLFilter实现类,包含两个属性enabled和mode。ImURLFilter接口类定义代码参考如下:
class ImURLItem;
class ImUR LItems;
class ImURLFilter
{
protected:
ImURLFilter(){}
virtual~ImURLFilter();
public:
enum URLFilterModeEnum{
BlackList,
WhiteList
};
static const char*getClassName();
//Attributes
virtual bool get_enabled(Environment*)const=0;
virtual void set_enabled(Environment*,bool)=0;
virtual URLFilterModeEnum get_mode(Environment*)const=0;
virtual void set_mode(Environment*,URLFilterModeEnum)=0;
//Traverse to contained classes
virtualImURLItems*urlItems()=0;
const ImURLItems*urlItems()const{
ImURLFilter*nc_this=const_cast<ImURLFilter*>(this);
return nc_this->urlItems();
}
//return the one and only instance of this class
static ImURLFilter*instance();
private:
ImURLFilter(const ImURLFilter&);
ImURLFilter& operator=(const ImURLFilter&);
};
(4)定义类之间的关联。对于URL过滤功能,定义了URL地址对象类ImURLItem、组类ImURLItems和根类ImURLFilter。由于ImURLItems/ImURLItem类是整个URL过滤功能配置不可分隔的一部分,可以定义ImURLItems类为ImURLFilter类的子类。通过类之间的继承关系,确定ImURLItems/ImURLItem类从属于ImURLFilter类,也就是从属于整个URL过滤功能的配置。于是,本发明构建出如图4所示的一组类实现对URL过滤功能的配置。
上述定义的一组类连同前述本发明详细方法步骤六中定义的公共支持类一起构成了一个配置管理系统的实例。
采用了上述的通信系统中基于对象的配置管理系统的构建实现方法,由于其中基于对象的构建思想,对系统资源进行了抽象,并构建了信息模型和管理对象,将设备中的各种资源有效的组织起来,为管理功能提供了一个设备资源的逻辑视图,而且在当前高层管理软件的开发普遍采用面向对象技术情况下,基于本发明提供的基于对象的配置管理系统开发高层管理软件,可以实现对象的直接映射,从而显著减少了高层管理软件开发的难度和工作量;对象类的继承性便于扩充和增加管理对象类,而且面对的是较高层次上进行抽象的管理对象,屏蔽了实现各种管理功能的细节,使得相应的配置管理系统具有广泛的可重用性,可以将该配置管理系统软件应用到不同的通信设备上,仅仅需要扩充对象类即可满足管理要求,设备厂商将可以在不同的设备上只需开发并维护一套管理层软件,有利于降低研发成本和产品开发周期,提高企业的效益,不仅工作性能稳定可靠,而且适用范围较为广泛。
在此说明书中,本发明已参照其特定的实施例作了描述。但是,很显然仍可以作出各种修改和变换而不背离本发明的精神和范围。因此,说明书和附图应被认为是说明性的而非限制性的。
Claims (15)
1.一种通信系统中基于对象的配置管理系统的构建实现方法,其特征在于,所述的方法包括以下步骤:
(1)通信系统将被管理的通信设备上的系统资源抽象成为管理对象;
(2)通信系统根据管理对象的特点,对所述的管理对象构建相应的接口类信息,所述的接口类为抽象类,是对该管理对象进行访问的接口;
(3)通信系统根据管理对象的特点,对所述的管理对象构建相应的实现类信息,所述的实现类与相应的管理对象的接口类信息相对应;
(4)根据所述的管理对象的接口类和实现类构建相应的组类信息,所述的组类为该管理对象的接口类和实现类的基类;
(5)构建通信系统的功能模块的根类信息,所述的根类具有该功能模块的全局属性和操作;
(6)构建功能模块中所属各个类之间的关联关系;
(7)构建所述的配置管理系统的公共支持类信息,所述的公共支持类具有所述的配置管理系统自身管理相关的全局接口。
2.根据权利要求1所述的通信系统中基于对象的配置管理系统的构建实现方法,其特征在于,所述的接口类中包括与属性关联的读取/设置方法的公有虚函数对。
3.根据权利要求2所述的通信系统中基于对象的配置管理系统的构建实现方法,其特征在于,所述的接口类名称以“Im”为前缀。
4.根据权利要求1所述的通信系统中基于对象的配置管理系统的构建实现方法,其特征在于,所述的实现类中包括与相应的管理对象的属性值相对应的私有变量、该私有变量的读取/设置方法的公有实函数对。
5.根据权利要求1所述的通信系统中基于对象的配置管理系统的构建实现方法,其特征在于,所述的组类为在有多个对象实例的对象类基础上定义,组类只有一个对象实例,并且该组类的对象实例由一组子类的对象实例所组成。
6.根据权利要求5所述的通信系统中基于对象的配置管理系统的构建实现方法,其特征在于,所述的组类中包括以下三个方法函数:
(1)add()方法函数,用于添加一个对象实例;
(2)remove()方法函数,用于删除指定的对象实例;
(3)find()方法函数,用于查找指定的对象。
7.根据权利要求1所述的通信系统中基于对象的配置管理系统的构建实现方法,其特征在于,所述的根类只有一个对象实例,且该根类的对象实例在启动时自动创建,并一直存在于所述的配置管理系统中不可删除。
8.根据权利要求1所述的通信系统中基于对象的配置管理系统的构建实现方法,其特征在于,所述的各个类之间的关联关系为各个类之间的继承关系。
9.根据权利要求1所述的通信系统中基于对象的配置管理系统的构建实现方法,其特征在于,所述的构建所述的配置管理系统的公共支持类信息,包括以下步骤:
(11)构建对通信系统的信息模型进行维护管理的信息模型管理接口类和信息模型管理实现类;
(12)构建对管理对象的属性进行通用访问的存取器类;
(13)构建对配置文件进行管理的配置文件类;
(14)构建用于事件管理的事件监听类;
(15)构建用于提供上下文环境的环境类。
10.根据权利要求9所述的通信系统中基于对象的配置管理系统的构建实现方法,其特征在于,所述的信息模型管理接口类和信息模型管理实现类中包括以下方法函数:
(1)setName()方法函数,用于修改信息模型中对象节点名字;
(2)getName()方法函数,用于获取信息模型中指定对象节点名字;
(3)parent()方法函数,用于获取指定对象节点的父节点;
(4)setParent()方法函数,用于设置对象节点的父节点;
(5)add()方法函数,用于给指定对象节点添加子节点;
(6)remove()方法函数,用于删除指定对象节点的子节点;
(7)destroy()方法函数,用于删除指定对象节点;
(8)children()方法函数,用于以链表形式获取指定对象节点的全部子节点;
(9)accessors()方法函数,用于以链表形式获取指定对象节点的全部属性;
(10)next()方法函数,用于获取指定对象节点的兄弟节点;
(11)find()方法函数,用于获取用特定标识方法标识的对象节点;
(12)root()方法函数,用于获取信息模型的根节点;
(13)applyChanges方法函数,用于强制将属性的变化值应用到功能模块中。
11.根据权利要求9所述的通信系统中基于对象的配置管理系统的构建实现方法,其特征在于,所述的存取器类中包括以下方法函数:
(1)isAttributeConfigured()方法函数,用于获取属性是否可保存到配置文件中;
(2)isReadOnly()方法函数,用于获取属性是否为只读属性;
(3)next()方法函数,用于获取下一个属性;
(4)get()方法函数,用于获取指定属性当前值;
(5)set()方法函数,用于设置指定属性当前值。
12.根据权利要求9所述的通信系统中基于对象的配置管理系统的构建实现方法,其特征在于,所述的配置文件类中包括以下方法函数:
(1)save()方法函数,用于将信息模型保存到指定配置文件中;
(2)restore()方法函数,用于将指定配置文件中配置数据载入并构建信息模型;
(3)commitToFlash()方法函数,用于将配置文件提交给文件系统保存入FLASH芯片中;
(4)restoreFromFactory()方法函数,用于从出厂配置中载入配置数据并构建信息模型。
13.根据权利要求9所述的通信系统中基于对象的配置管理系统的构建实现方法,其特征在于,所述的事件至少包括对象删除事件和对象修改事件。
14.根据权利要求13所述的通信系统中基于对象的配置管理系统的构建实现方法,其特征在于,所述的事件监听类包括以下方法函数:
(1)listen()方法函数,用于设置在指定对象节点上监听事件以及事件处理函数;
(2)unlisten()方法函数,用于设置在指定对象节点上停止监听事件。
15.根据权利要求9所述的通信系统中基于对象的配置管理系统的构建实现方法,其特征在于,所述的环境类包括以下方法函数:
(1)getReadLock()方法函数,用于获取对信息模型读操作的锁;
(2)getWriteLock()方法函数,用于获取对信息模型写操作的锁;
(3)releaseLock()方法函数,用于释放读锁或写锁;
(4)isWriteLocked()方法函数,用于获取写锁状态;
(5)isReadLocked()方法函数,用于获取读锁状态;
(6)status()方法函数,用于检查最近一次配置管理系统接口调用返回状态;
(7)fail()方法函数,用于以字符串形式返回最近一次配置管理系统接口调用失败的原因。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010100798A CN101776996A (zh) | 2010-01-26 | 2010-01-26 | 通信系统中基于对象的配置管理系统的构建实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010100798A CN101776996A (zh) | 2010-01-26 | 2010-01-26 | 通信系统中基于对象的配置管理系统的构建实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101776996A true CN101776996A (zh) | 2010-07-14 |
Family
ID=42513468
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010100798A Pending CN101776996A (zh) | 2010-01-26 | 2010-01-26 | 通信系统中基于对象的配置管理系统的构建实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101776996A (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102158352A (zh) * | 2011-02-17 | 2011-08-17 | 浪潮(北京)电子信息产业有限公司 | 云操作系统中一种多品牌网络设备的管理方法及装置 |
CN102323910A (zh) * | 2011-08-19 | 2012-01-18 | 中国航天科工运载技术研究院 | 一种设备显示与管理装置 |
CN102412985A (zh) * | 2011-10-31 | 2012-04-11 | 烽火通信科技股份有限公司 | 一种基于操作分离的网管系统对象管理方法 |
WO2012151885A1 (zh) * | 2011-05-10 | 2012-11-15 | 清华大学 | 一种通用控制内核系统 |
WO2013170442A1 (en) * | 2012-05-15 | 2013-11-21 | Telefonaktiebolaget L M Ericsson (Publ) | Managed object manipulation |
CN103516781A (zh) * | 2012-06-27 | 2014-01-15 | 国际商业机器公司 | 用于实例化it服务的资源的方法和系统 |
CN103677806A (zh) * | 2012-09-25 | 2014-03-26 | 国际商业机器公司 | 用于系统管理的方法和系统 |
CN104796797A (zh) * | 2014-01-16 | 2015-07-22 | 深圳市双翼科技有限公司 | 光线路终端的后台管理方法及装置 |
CN105160457A (zh) * | 2015-08-07 | 2015-12-16 | 北京思特奇信息技术股份有限公司 | 一种信用控制管理系统及其实现方法 |
CN107038057A (zh) * | 2016-10-31 | 2017-08-11 | 东软集团股份有限公司 | 创建类的方法及装置 |
CN108304216A (zh) * | 2018-01-03 | 2018-07-20 | 沈阳东软医疗系统有限公司 | 一种设备通信方法及通信设备 |
CN108319504A (zh) * | 2018-03-19 | 2018-07-24 | 武汉斗鱼网络科技有限公司 | 内存占用优化方法、装置及可读存储介质 |
CN112649000A (zh) * | 2020-11-30 | 2021-04-13 | 沈阳美行科技有限公司 | 安卓系统的导航系统和导航方法 |
CN115794213A (zh) * | 2023-02-07 | 2023-03-14 | 湖南高至科技有限公司 | 基于嵌入式系统的可配置对象管理方法、装置和设备 |
-
2010
- 2010-01-26 CN CN201010100798A patent/CN101776996A/zh active Pending
Cited By (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102158352A (zh) * | 2011-02-17 | 2011-08-17 | 浪潮(北京)电子信息产业有限公司 | 云操作系统中一种多品牌网络设备的管理方法及装置 |
WO2012151885A1 (zh) * | 2011-05-10 | 2012-11-15 | 清华大学 | 一种通用控制内核系统 |
CN102323910A (zh) * | 2011-08-19 | 2012-01-18 | 中国航天科工运载技术研究院 | 一种设备显示与管理装置 |
CN102412985A (zh) * | 2011-10-31 | 2012-04-11 | 烽火通信科技股份有限公司 | 一种基于操作分离的网管系统对象管理方法 |
CN102412985B (zh) * | 2011-10-31 | 2014-05-07 | 烽火通信科技股份有限公司 | 一种基于操作分离的网管系统对象管理方法 |
WO2013170442A1 (en) * | 2012-05-15 | 2013-11-21 | Telefonaktiebolaget L M Ericsson (Publ) | Managed object manipulation |
US9787528B2 (en) | 2012-06-27 | 2017-10-10 | International Business Machines Corporation | Instantiating resources of an IT-service |
CN103516781A (zh) * | 2012-06-27 | 2014-01-15 | 国际商业机器公司 | 用于实例化it服务的资源的方法和系统 |
US10764109B2 (en) | 2012-06-27 | 2020-09-01 | International Business Machines Corporation | Instantiating resources of an IT-service |
US10135669B2 (en) | 2012-06-27 | 2018-11-20 | International Business Machines Corporation | Instantiating resources of an IT-service |
US9432247B2 (en) | 2012-06-27 | 2016-08-30 | International Business Machines Corporation | Instantiating resources of an IT-service |
US9515866B2 (en) | 2012-06-27 | 2016-12-06 | International Business Machines Corporation | Instantiating resources of an IT-service |
CN103516781B (zh) * | 2012-06-27 | 2017-04-12 | 国际商业机器公司 | 用于实例化it服务的资源的方法和系统 |
CN103677806A (zh) * | 2012-09-25 | 2014-03-26 | 国际商业机器公司 | 用于系统管理的方法和系统 |
CN103677806B (zh) * | 2012-09-25 | 2017-09-26 | 国际商业机器公司 | 用于系统管理的方法和系统 |
US9880916B2 (en) | 2012-09-25 | 2018-01-30 | International Business Machines Corporation | Management of system events using one or more event attributes |
US10055324B2 (en) | 2012-09-25 | 2018-08-21 | International Business Machines Corporation | Management of system events using one or more event attributes |
CN104796797B (zh) * | 2014-01-16 | 2018-11-20 | 深圳市双翼科技有限公司 | 光线路终端的后台管理方法及装置 |
CN104796797A (zh) * | 2014-01-16 | 2015-07-22 | 深圳市双翼科技有限公司 | 光线路终端的后台管理方法及装置 |
CN105160457A (zh) * | 2015-08-07 | 2015-12-16 | 北京思特奇信息技术股份有限公司 | 一种信用控制管理系统及其实现方法 |
CN107038057A (zh) * | 2016-10-31 | 2017-08-11 | 东软集团股份有限公司 | 创建类的方法及装置 |
CN108304216A (zh) * | 2018-01-03 | 2018-07-20 | 沈阳东软医疗系统有限公司 | 一种设备通信方法及通信设备 |
CN108319504A (zh) * | 2018-03-19 | 2018-07-24 | 武汉斗鱼网络科技有限公司 | 内存占用优化方法、装置及可读存储介质 |
CN108319504B (zh) * | 2018-03-19 | 2021-01-01 | 武汉斗鱼网络科技有限公司 | 内存占用优化方法、装置及可读存储介质 |
CN112649000A (zh) * | 2020-11-30 | 2021-04-13 | 沈阳美行科技有限公司 | 安卓系统的导航系统和导航方法 |
CN115794213A (zh) * | 2023-02-07 | 2023-03-14 | 湖南高至科技有限公司 | 基于嵌入式系统的可配置对象管理方法、装置和设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101776996A (zh) | 通信系统中基于对象的配置管理系统的构建实现方法 | |
US6467085B2 (en) | System and method for reducing coupling in an object-oriented programming environment | |
Lee et al. | Model transformation between OPC UA and UML | |
EP3629192B1 (en) | Supporting graphql based queries on yang based configuration data models | |
US8990765B2 (en) | Computationally efficient system for developing configurable, extensible business application product lines using model-driven techniques | |
Katasonov et al. | Towards ontology-driven development of applications for smart environments | |
CN108089861B (zh) | 一种从SysML模型转换到AltaRica模型的转换方法 | |
Manzaroli et al. | Smart-M3 and OSGi: The interoperability platform | |
CN101502047A (zh) | 存储网络管理系统中的网络节点的配置信息的方法和系统 | |
CN100361121C (zh) | 一种通用对象建模方法及通用对象管理系统 | |
CN104615489A (zh) | 一种多节点数据交互的实现方法 | |
US20130326050A1 (en) | Method of Organic Cloud Discovery and Transformation of Network Assets | |
CN101170436A (zh) | 一种网管中模板管理的实现方法 | |
CN102999329B (zh) | 基于可扩展标记语言映射配置的活动目录接口开发方法 | |
CN111711532B (zh) | 一种异构网络设备的统一管理方法 | |
CN114915533B (zh) | 一种基于平台的北向接口实现方法和架构 | |
Simone et al. | Taking the distributed nature of cooperative work seriously | |
Shen et al. | Standardizing the Internet of Things in an evolutionary way | |
Kobryn | Modeling enterprise software architectures using UML | |
Schewe et al. | Component-driven engineering of database applications | |
Lee et al. | An aspect-oriented framework for developing component-based software with the collaboration-based architectural style | |
EP0857329B1 (en) | System and method for reducing coupling in an object-oriented programming environment | |
Pavlou | Using distributed object technologies in telecommunications network management | |
Shen et al. | An evolutionary way to standardize the Internet of Things | |
Mertens et al. | Metamodel-driven property management in process industries |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20100714 |