使用插件进行业务扩展的系统及其方法

文档序号:6563296阅读:228来源:国知局
专利名称:使用插件进行业务扩展的系统及其方法
技术领域
本发明涉及通信领域,特别涉及网管系统中的插件技术。
背景技术
现在几乎所有行业、企业的大部分业务的实现都依赖于计算机应用系统,从而导致作为数据传输基础平台的网络的容量急剧膨胀,网络的内容和复杂度也大大增加。
为了便于对网络进行维护,一方面需要通过稳定可靠的传送设备来保证网络的传输的可靠性,另一方面还需要借助一些管理工具以保证网络的可监测性和可维护性。随着网络应用的发展,为了保证结构越来越复杂和规模越来越大的网络系统的正常运行,除了要依靠网络设备本身和网络架构的可靠性之外,网络管理是一个关键环节,网络管理的质量会直接影响网络的运行质量。网络管理已经是保证计算机网络,特别是大型计算机网络正常运行的关键因素。使用网管系统来自动监控管理网络,实时查看全网的状态,检测网络性能可能出现的瓶颈,并进行自动处理或告警显示,可以保证网络高效、可靠地运转。
网管系统软件模块的组成如图1所示。网管系统软件包含网管平台和领域网管扩展两部分。其中,网管平台负责实现网管功能中的公共部分;领域网管扩展在网管平台的基础上进行二次开发和实施,为不同领域提供基于网管平台扩展的支持本领域特有管理对象和业务的领域业务模块。
网管平台进一步分为底层管理核心和公共业务部分。底层管理核心实现网络管理服务的底层核心功能,包含网管服务的控制、网元的定义与管理和网元适配层管理等模块;公共业务在底层核心功能上提供网管常用的业务的公共部分的实现,包含公共安全管理、公共拓扑管理、公共告警管理等模块。
公共告警管理模块生成的告警对象作为网管系统的一类重要输出,描述网络系统在运行过程中,出现的软件、硬件故障。告警对象可以通知用户网络设备出现的问题的种类以及该问题的定位,其产生源包括网络中的硬件设备、软件监控系统。告警对象可以根据不同的标准进行分类,例如,按性质可以分为事件告警、故障告警、恢复告警等;按严重程度可以分为紧急告警、重要告警、一般告警、提示告警等;按来源可以分为电源告警、机房环境告警、七号信令告警、数字中继告警、硬件告警、软件告警、运行告警等。告警对象可以由多种信息组成,例如,典型的电信网络中使用的网管系统产生的告警对象的主要组成部分可以包含产品类型,用于标识告警设备的产品编号,可以区分固网、传输、移动、智能等产品;设备类型,用于标识告警设备的类型编号;告警编号,用于标识告警种类的编号;告警种类,用于描述故障的性质,可以区分故障、恢复或事件;告警级别,用于描述告警的严重程度;告警类别,用于描述故障的来源,可以区分电源告警、机房环境告警、七号信令告警等;告警名称,用于标识告警的名称;流水号,用于标识告警产生和到达顺序的序列号;日期,用于标识告警发生的日期;时间,用于标识告警发生的时间;定位参数,用于存储故障的定位信息,描述问题发生的具体位置;解释信息,用于解释此告警的发生原因及发生地点的信息;修复建议,用于描述如何修复此告警的建议,以帮助用户快速解决问题;链路类型,用于标识故障所从属的链路类型编号。
公共告警管理模块提供了告警处理过程的核心实现。基于公共告警管理模块告警数据的处理示意图如图2所示。
图2中,网元设备将自己产生的告警数据通过网络发送给网管系统服务器,网管系统服务器对告警进行分析和处理,然后再将处理后的告警数据发送给网管用户界面。用户可以从网管用户界面上观察到网元设备的告警,并且对这些告警进行查询、浏览等操作。
在对公共告警管理模块进行扩展的过程中,很多情况下,需要对业务功能进行扩展。例如,某领域的网管产品(简称“领域网管”)可能需要分析告警和大客户的关系,在告警对象中填入告警影响的大客户名称。这样就需要公共告警管理模块完成以下两项扩展1)在告警对象中增加“告警影响的大客户”字段;2)插入二次开发的逻辑代码,例如资源模型,分析告警和大客户之间的关系,并修改告警对象的“告警影响的大客户”字段。其中第2项扩展就需要公共告警管理模块提供一种插件机制,将领域网管的业务逻辑代码嵌入告警处理流程。
插件实现了某些特性并且以动态库的形式发布,可以实现业务的动态升级,方便用户的使用和开发。一般来说,插件的配置文件都使用可扩展标识语言(Extensible Markup Language,简称“XML”)文件格式,由于XML是成熟的标签语言,使用XML文件格式使得配置信息标准化、规范化,且易于使用在不同平台和语言上;动态库是可以在系统运行时动态加载的库文件,在视窗(Windows)系统下即为DLL类型的文件。
现有的技术方案需要进行业务扩展时,根据业务扩展的插件修改公共平台的配置文件实现插件的加载。所有可供使用的插件的配置信息都保存在公共平台的配置文件中,公共平台的配置文件对这些插件的配置信息是集中管理的。
具体的说,现有的技术方案在需要进行业务扩展时,在公共平台的配置文件中增加该扩展业务对应流程的配置,制定包含该业务逻辑的动态库,在初始化时加载该动态库,并在执行过程中执行该扩展业务对应的逻辑代码。
因为配置文件是对配置信息集中管理的,所以对配置文件是集中更新的,即,每次进行业务扩展增加插件时,都需要修改公共平台的配置文件。
造成现有技术方案不足的根本原因在于配置文件的集中更新,这种配置文件集中更新的方式会带来以下缺点第一,现有技术方案的配置文件集中更新,但由于无法预知需要添加的业务扩展点,因此需要不断在公共平台的配置文件中增加内容,实现复杂;第二,现有技术方案每发布一个业务扩展点都需要修改公共平台的配置文件,因此不管领域网管是否需要该业务扩展,都需要对领域网管中使用的公共平台的配置文件进行合并,领域网管无法通过直接下载插件的方式实现业务扩展,并且现有技术方案无法预扩展业务逻辑所需要的输入,使得业务逻辑代码还需要另外维护自己的配置文件,这些都造成了升级上的困难;第三,现有技术方案在领域网管的业务扩展点较多时,没有通用的机制制定动态库之间的依赖性,从而造成系统运行的健壮性和可扩展性的降低;第四,现有技术方案在启动时需要加载配置文件中所有的动态库,当插件较多时会造成系统启动时间长,如果不需要加载某些动态库还需要修改配置文件才可以禁止其加载,插件加载的灵活度不高;第五,现有技术方案中,当插件本身需要开发自身的业务扩展,允许他人再次扩展时,没有统一的机制,需要每个插件独立维护一套机制,使得维护比较麻烦。

发明内容
有鉴于此,本发明的主要目的在于提供一种使用插件进行业务扩展的系统及其方法,使得插件加载的灵活度得以提高,维护更加简单。
为实现上述目的,本发明提供了一种使用插件进行业务扩展的系统,包含业务模块,用于在扩展点插入插件的逻辑代码实现业务扩展;
插件管理模块,用于在系统启动时分别读取每个插件的配置文件生成插件资源列表,在所述业务模块需要初始化扩展时,根据该插件资源列表加载需要初始化的扩展所需的插件及其依赖的其它插件。
其中,所述配置文件和所述插件的其它相关文件置于预先设置的插件目录中且所述配置文件处于该插件目录的顶层,该插件目录是指定的插件根目录的子目录。
此外在所述系统中,所述配置文件中包含和所述插件加载有关的信息,所述配置文件使用可扩展标记语言。
此外在所述系统中,所述插件资源列表包含按照扩展点分项存储的扩展点注册表和按照插件分项存储的插件表。
此外在所述系统中,所述扩展点注册表以树形结构存储,其第一层子结点为扩展点,第二层子结点为所述扩展点对应的扩展,第三层子结点为所述扩展的属性信息。
此外在所述系统中,所述插件表分表项存储,每个所述表项存储一个所述插件的相关信息。
此外,所述系统应用在网管平台中。
本发明还提供了一种使用插件进行业务扩展的方法,包含以下步骤A获取插件及配置文件;B启动时读取所有所述配置文件中的信息并生成插件资源列表;C在需要初始化扩展时,根据所述插件资源列表加载需要初始化的扩展所需的插件及其依赖的其它插件。
其中,所述配置文件和所述插件的其它相关文件置于预先设置的插件目录中且所述配置文件处于该插件目录的顶层,该插件目录是指定的插件根目录的子目录。
此外在所述方法中,所述步骤B生成的所述插件资源列表包含按照所述扩展点分项存储的扩展点注册表和按照所述插件分项存储的插件表。
此外在所述方法中,所述步骤A使用的配置文件中包含了和所述插件加载有关的信息内容,其类型为可扩展标记语言文件。
通过比较可以发现,本发明的技术方案与现有技术的主要区别在于,分别独立管理插件及其配置文件,所有插件及其配置文件都存放在指定目录的子目录中,在系统启动时读取所有插件的配置文件获取扩展点的扩展、插件和动态库三者之间的对应关系以及插件间的依赖关系,在需要使用扩展时才加载和该扩展有关的插件及其依赖的插件的动态库。本发明中所称的独立管理插件及其配置文件,是以插件及其配置文件作为一个单元,各个单元之间独立管理,各个单元分别存放在在指定目录的子目录中,并不是将插件和其配置文件分别管理或放在不同的子目录中。
这种技术方案上的区别,带来了较为明显的有益效果,即第一,使用本发明方案,由于不需要修改公共平台的配置文件,可以适应未来可能出现的插入点定制的需要,实现简单;第二,本发明方案可以独立发布业务逻辑扩展的插件,不需要修改网管平台的配置文件,可以简单地通过拷贝和删除的方式实现业务的扩展;第三,由于本发明方案独立管理插件及其配置文件,可以清晰的指定插件的依赖关系,因此大大增强了系统运行的健壮性和可扩展性;第四,本发明方案的插件可以在使用时加载,提高了插件加载的灵活性,大大减小了系统启动时间和运行时的资源消耗;第五,本发明方案同样适用于插件本身的业务扩展,大大简化了系统功能扩充的实现,有利于系统的长远演进和成本的降低。


图1是网管系统软件模块的组成示意图;图2是基于公共告警管理模块告警数据的处理示意图;图3是根据本发明较佳实施方式的使用插件进行业务扩展的系统组成示意图;图4是根据本发明较佳实施方式的使用插件进行业务扩展的流程图。
具体实施例方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述。
本发明方案为每个插件独立维护一个配置文件,插件及其配置文件存放于系统指定路径下,系统启动时在该指定路径下分别读取每个插件的配置文件,获取包含插入点和依赖关系在内的插件配置信息,在需要使用插件时才根据该插件的配置信息加载相应的插件,使用这种方式,插件的安装和删除可以简单地通过在指定路径下进行拷贝和删除操作完成。
为了更清楚的说明本发明方案,下面结合本发明较佳实施方式进行说明。
根据本发明较佳实施方式的使用插件进行业务扩展的系统组成如图3所示。
使用插件进行业务扩展的系统包含发布扩展点的业务模块10和插件管理模块20。
发布扩展点的业务模块10用于提供该扩展点的接口及其包括接口含义和实现约束说明的文档,在扩展点插入插件的逻辑代码实现业务扩展。其中,扩展点即为可以插入逻辑代码的位置,业务模块发布扩展点时,需要公布该扩展点的接口及其包括接口含义和实现约束说明的文档。在本发明较佳实施方式中,发布扩展点的业务模块10即为网管平台中的公共告警管理模块。
本领域的技术人员可以理解,根据公开的扩展点接口及说明文档,开发人员可以通过插件的方式利用扩展点实现业务功能的扩展。关于插件如何实现并不是本发明的重点,但为了便于理解本发明方案,在此对插件相关文件的生成、组织架构和内容做简要说明。在本发明较佳实施方式中,插件开发人员根据公开的接口实现插件类,根据扩展点的文档实现扩展点的接口,并在插件的工厂方法中提供对扩展的实例化,然后将其编译生成动态库,最后,插件开发人员编写插件的配置文件并将其和插件相关文件组织在一个插件目录中。其中,插件类主要包括插件的初始化方法和工厂方法的实现。配置文件的类型为XML文件,在本发明较佳实施方式中,命名为plugin.xml,其包含的配置信息分为公共配置信息和私有配置信息,该文件描述的公共配置信息包含插件的属性,如动态库的路径、依赖的其它插件等;扩展点信息,即指定了当前插件扩展了哪个扩展点。此外,出于简化文件的组织和读取的目的,本发明较佳实施方式中,将配置文件置于插件目录的顶层。
本发明中所称的插件相关文档包括该插件的配置文件、动态库文件、以及可能会有的资源文件、说明文件等等。
需要说明的是,虽然在本发明较佳实施方式中,将配置文件和其它插件相关文件组织在一个插件目录中,但可以理解,也可以按照其它约定的方式组织配置文件和其它插件相关文件,并不影响本发明实质。
插件管理模块20用于管理所有插件,在系统启动时分别读取每个插件的配置文件生成插件资源列表,并在需要使用插件时,根据插件资源列表加载该插件及其依赖的相关插件。其中,插件存放在插件目录中,为了方便管理所有插件,将所有插件目录统一置于特定的目录下,本发明较佳实施方式中,该特定的目录为插件根目录,名称为$PLUGIN_ROOT,安装一个插件就是将该插件所在的插件目录拷贝到$PLUGIN_ROOT,删除一个插件就是将该插件所在的插件目录从$PLUGIN_ROOT移出。熟悉本领域的技术人员理解,也可以将插件目录置于多个目录下,并不影响本发明实质。
在本发明较佳实施方式中,插件管理模块20进一步包含扩展点注册表21,插件表22和插件加载工具23。
其中,扩展点注册表21中存储所有扩展点、扩展点对应的扩展及其属性等信息,在发布扩展点的业务模块10初始化扩展时查询得到当前扩展点的扩展以及这些扩展对应的插件。在本发明较佳实施方式中,扩展点注册表以树状表示,第一层子结点是系统所有扩展点,每个扩展点的子结点是配置文件中配置的扩展,每个扩展的子结点是扩展的属性,扩展的属性包含公有和私有属性,其中,公有属性包含扩展的标识(ID)、扩展的类名和扩展隶属的插件名;私有属性是扩展本身需要的输入,扩展点注册表21只进行存取,不理解其意义。
插件表22用于存储所有插件的ID、依赖关系、需要加载的动态库名称、插件的类名和一些插件本身需要的输入,根据扩展点注册表21输出的扩展隶属的插件信息查询该插件的依赖关系得到需要加载的插件。在本发明较佳实施方式中,插件表包含多个表项,每个表项分别包含了从配置文件中读取的该表项对应插件的一些属性,包括公有属性和私有属性。其中,公有属性包含用于唯一标识插件的ID、插件的依赖列表、插件需要加载的动态库和插件的类名;私有属性是插件本身需要的输入,插件表22只进行存取,不必理解其意义。
为了便于说明,将扩展点注册表21和插件表22统称为插件资源列表。可以理解,由于本发明方案的插件资源列表清楚的描述了扩展点、扩展和插件三者之间的关系以及插件之间的依赖关系等信息,因此可以在需要使用扩展时才根据插件资源列表的查询结果加载相应的插件,不需要在系统初始化时加载所有插件,从而可以节省系统启动时间。
插件加载工具23用于根据插件表22输出的需要加载的插件的信息加载相应插件的动态库并初始化。可以理解,当插件加载工具23加载了扩展隶属的插件模块后,就可以通过插件的工厂方法,即生成插件实例的方法,和扩展的类名,获得扩展的实例,从而实现业务扩展,这部分的实现和现有技术方案完全相同,在此不详细说明。在本发明较佳实施方式中,还将插件实例存储于注册表的扩展节点上,并返回扩展的引用。
可以理解,利用上述使用插件进行业务扩展的系统,开发扩展点的业务模块10就可以使用到扩展了。还可以理解,基于本发明的使用插件进行业务扩展的系统,二次开发的插件同样可以使用该系统发布扩展点,方便系统的整体扩充。
和上述使用插件进行业务扩展的系统相配合,本发明还提供了一种使用插件进行业务扩展的方法。根据本发明较佳实施方式的使用插件进行业务扩展的流程如图4所示。
首先进入步骤410,获取包含配置文件和动态库的插件目录并存储于指定的插件根目录下。其中,配置文件的类型为XML文件,在本发明较佳实施方式中,命名为plugin.xml,包含的配置信息分为公共配置信息和私有配置信息,该文件描述的公共配置信息包含插件的属性,如动态库的路径、依赖的其它插件等;扩展点信息,即指定了当前插件扩展了哪个扩展点。此外,出于简化文件的组织和读取的目的,本发明较佳实施方式中,将配置文件置于插件目录的顶层。其中,动态库为插件开发人员根据公开的接口实现插件类,根据扩展点的文档实现扩展点的接口,并在插件的工厂方法中提供对扩展的实例化,然后将其编译后生成。为了方便管理所有插件,将所有插件目录统一置于特定的目录下,本发明较佳实施方式中,该目录为插件根目录,名称为$PLUGIN_ROOT,安装一个插件就是将该插件所在的插件目录拷贝到$PLUGIN_ROOT,删除一个插件就是将该插件所在的插件目录从$PLUGIN_ROOT移出。熟悉本领域的技术人员理解,也可以将插件目录置于多个目录下,并不影响本发明实质。
接着进入步骤420,系统启动时读取插件根目录下所有配置文件中的信息并生成插件资源列表。其中,插件资源列表包含扩展点注册表和插件表。扩展点注册表存储所有扩展点、扩展点对应的扩展及其属性等信息,在发布扩展点的业务模块初始化扩展时查询得到当前扩展点的扩展以及这些扩展对应的插件。在本发明较佳实施方式中,扩展点注册表以树状表示,第一层子结点是系统所有扩展点,每个扩展点的子结点是配置文件中配置的扩展,每个扩展的子结点是扩展的属性,扩展的属性包含公有和私有属性,其中,公有属性包含扩展的ID、扩展的类名和扩展隶属的插件名;私有属性是扩展本身需要的输入,扩展点注册表只进行存取,不理解其意义。插件表用于存储所有插件的ID、依赖关系、需要加载的动态库名称、插件的类名和一些插件本身需要的输入,根据扩展点注册表输出的扩展隶属的插件信息查询该插件的依赖关系得到需要加载的插件。在本发明较佳实施方式中,插件表包含多个表项,每个表项分别包含了从配置文件中读取的该表项对应插件的一些属性,包括公有属性和私有属性。其中,公有属性包含用于惟一标识插件的ID、插件的依赖列表、插件需要加载的动态库和插件的类名;私有属性是插件本身需要的输入,插件表只进行存取,不理解其意义。
接着进入步骤430,发布扩展点的业务模块在初始化扩展时查询插件资源列表。其中,该步骤的可以得到和扩展点的扩展有关的插件及其依赖的插件。
接着进入步骤440,根据步骤430的查询结果判断和扩展相关的插件是否已经被加载,如果是则进入步骤460,否则直接进入步骤450。其中,系统可以通过查询插件资源列表中的记录获知插件是否已经被加载。
在步骤450中,加载扩展相关但尚未加载的插件。可以理解,由于本发明方案的插件资源列表清楚的描述了扩展点、扩展和插件之间的关系以及插件之间的依赖关系等信息,因此可以在需要使用扩展时才根据插件资源列表的查询结果加载相应的插件,不需要在系统初始化时加载所有插件,从而可以节省系统启动时间。
在步骤460中,使用扩展获得扩展的实例并更新插件资源列表。在本发明较佳实施方式中,将插件实例存储于扩展点注册表的扩展节点上,并返回扩展的引用。
虽然通过参照本发明的某些优选实施方式,已经对本发明进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
权利要求
1.一种使用插件进行业务扩展的系统,其特征在于,包含业务模块,用于在扩展点插入插件的逻辑代码实现业务扩展;插件管理模块,用于在系统启动时分别读取每个插件的配置文件生成插件资源列表,在所述业务模块需要初始化扩展时,根据该插件资源列表加载需要初始化的扩展所需的插件及其依赖的其它插件。
2.根据权利要求1所述的使用插件进行业务扩展的系统,其特征在于,所述配置文件和所述插件的其它相关文件置于预先设置的插件目录中且所述配置文件处于该插件目录的顶层,该插件目录是指定的插件根目录的子目录。
3.根据权利要求1所述的使用插件进行业务扩展的系统,其特征在于,所述配置文件中包含和所述插件加载有关的信息,所述配置文件使用可扩展标记语言。
4.根据权利要求1所述的使用插件进行业务扩展的系统,其特征在于,所述插件资源列表包含按照扩展点分项存储的扩展点注册表和按照插件分项存储的插件表。
5.根据权利要求4所述的使用插件进行业务扩展的系统,其特征在于,所述扩展点注册表以树形结构存储,其第一层子结点为扩展点,第二层子结点为所述扩展点对应的扩展,第三层子结点为所述扩展的属性信息。
6.根据权利要求4所述的使用插件进行业务扩展的系统,其特征在于,所述插件表分表项存储,每个所述表项存储一个所述插件的相关信息。
7.根据权利要求1至6中任一项所述的使用插件进行业务扩展的系统,其特征在于,所述系统应用在网管平台中。
8.一种使用插件进行业务扩展的方法,其特征在于,包含以下步骤A获取插件及配置文件;B启动时读取所有所述配置文件中的信息并生成插件资源列表;C在需要初始化扩展时,根据所述插件资源列表加载需要初始化的扩展所需的插件及其依赖的其它插件。
9.根据权利要求8所述的使用插件进行业务扩展的方法,其特征在于,所述配置文件和所述插件的其它相关文件置于预先设置的插件目录中且所述配置文件处于该插件目录的顶层,该插件目录是指定的插件根目录的子目录。
10.根据权利要求8所述的使用插件进行业务扩展的方法,其特征在于,所述步骤B生成的所述插件资源列表包含按照所述扩展点分项存储的扩展点注册表和按照所述插件分项存储的插件表。
11.根据权利要求8至10中任一项所述的使用插件进行业务扩展的方法,其特征在于,所述步骤A使用的配置文件中包含了和所述插件加载有关的信息内容,其类型为可扩展标记语言文件。
全文摘要
本发明涉及通信领域,公开了一种使用插件进行业务扩展的系统及其方法,使得插件加载的灵活度得以提高,维护更加简单。本发明中,对每个插件及其配置文件独立管理,所有插件及其配置文件都存放在指定目录的子目录中,在系统启动时读取所有插件的配置文件获取扩展点的扩展、插件和动态库之间的对应关系以及插件间的依赖关系,在需要使用扩展时才加载和该扩展有关的插件及其依赖的插件的动态库。
文档编号G06F9/44GK1968154SQ20061015339
公开日2007年5月23日 申请日期2006年9月15日 优先权日2006年9月15日
发明者黄剑豪 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1