插件框架处理装置及插件系统的制作方法

文档序号:6539735阅读:159来源:国知局
插件框架处理装置及插件系统的制作方法
【专利摘要】本发明提供一种插件框架处理装置及插件系统,能够实现应用的跨平台使用。插件框架处理模块包括:插件核心器、扩展点管理器、应用组合管理器、插件管理器;所述插件核心器,用于控制所述插件框架处理模块工作状态,控制插件的安装与卸载,控制插件消息订阅与发送;所述扩展点管理器,用于提供插件扩展规范,使得多个插件相互通信;应用组合管理器,定义应用组合数据结构并进行应用组合的管理。插件管理器用于调用应用组合管理器,根据当前应用组合启动所有插件。
【专利说明】插件框架处理装置及插件系统
【技术领域】
[0001]本发明涉及计算机领域,尤其涉及一种插件框架处理装置及插件系统。
【背景技术】
[0002]伴随着软件工程与信息化技术的发展,跨平台技术的应用开发显得越来越重要。各种新平台、新技术不断涌现,使得计算机软件生产厂商及其设计人员面临着如何适应多种平台,多操作系统共存的问题。
[0003]计算机技术产生至今,人们己经成功的将其应用于各行各业,相应地开发出大量适用于不同环境、功能各异的软件。随着近年来计算机技术的迅速发展,当新硬件、新技术出现时,计算机的体系结构、指令系统和操作系统都可能发生相应的改变,这势必会导致一部分应用在新环境下无法正常运行,如何解决应用的跨平台使用是当前需要解决的问题。

【发明内容】

[0004](一)要解决的技术问题
[0005]本发明提供一种插件框架处理装置及插件系统,能够实现应用的跨平台使用。
[0006](二)技术方案
[0007]—种插件框架处理模块,包括:插件核心器、扩展点管理器、应用组合管理器、插件
管理器;
[0008]所述插件核心器,用于控制所述插件框架处理模块工作状态,控制插件的安装与卸载,控制插件消息订阅与发送;
[0009]所述扩展点管理器,用于提供插件扩展规范,使得多个插件相互通信;
[0010]应用组合管理器,定义应用组合数据结构并进行应用组合的管理。
[0011]插件管理器用于调用应用组合管理器,根据当前应用组合启动所有插件。
[0012]可选的,所述插件管理器具体用于,调用应用组合管理器,得到当前应用组合所包含的插件列表,搜索指定的插件目录,对搜索到的插件与应用组合的插件列表进行匹配,匹配后调用插件核心动态库安装对应的插件到插件框架处理模块,搜索该插件的配置文件,调用扩展点管理器解析其中的扩展点,按照插件依赖关系依次启动所有插件。
[0013]可选的,所述插件核心器通过应用程序编程接口 API与插件进行通信。
[0014]可选的,所述API使用static函数。
[0015]一种插件系统,包括上述的插件框架处理模块。
[0016]可选的,还包括:应用组合开发模块,用于生成应用组合。
[0017]可选的,还包括:插件开发模块,用于实现插件开发。
[0018]本发明实施例的插件框架处理装置及插件系统,通过插件之间进行通信,从而实现应用的跨平台使用。
【专利附图】

【附图说明】[0019]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0020]图1为本发明实施例提供的一种插件框架处理装置的结构示意图;
[0021]图2为本发明实施例提供的一种插件结构示意图;
[0022]图3为本发明实施例提供的一种插件系统的结构示意图;
[0023]图4为本发明实施例提供的另一种插件系统的结构示意图。
【具体实施方式】
[0024]为使本发明的目的、内容和优点更加清楚,下面结合附图对本发明的【具体实施方式】作进一步详细描述。以下用于说明本发明,但不用来限制本发明的范围。
[0025]Qt是利用C++程序设计语言开发的完全面向对象的支持组件编程的程序设计语言,在开发起初设计者就考虑到了跨平台性。利用它可以开发出很美观的人机接口界面,使用户感觉美观自然,同时开发人员上手也比较快,且它的功能强大,易于扩展,可以满足需要。
[0026]OSGi规范描述了一个组件化、动态的服务插件开发平台。在OSGi服务平台中,开发人员通过开发插件为用户提供所需要的功能,这些插件可以动态加载和卸载,或者根据需要远程下载和升级。
[0027]OSGi框架是一个微核心、全插件的框架,在它上面运行的插件基本可以分为三个
层次:
[0028]核心层:负责程序的启动,监管程序的运行,以及一些全局相关的事务的初始化并在结束时做一些清理工作(如注销注册的服务,卸载);
[0029]服务层:解决技术问题的插件,服务插件向业务插件提供必要的技术服务;
[0030]业务层:实现了用户需求的业务功能。
[0031]扩展点机制是插件框架的核心机制。插件间通过定义-实现扩展点,形成插件网络,并且解决了插件间的高度耦合性,使插件框架系统中的所有插件真正能够实现“热插拔”。
[0032]扩展点机制主要分为扩展点的定义和扩展点的实现。
[0033]扩展点定义了给其他插件进行扩展的规范,其他插件必寻遵循这个规范才能与次插件通讯。通过扩展点的方式,插件之间可以无缝的组合在一起工作,并灵活的实现插件功能的添加,升级,互换等。特别注意到,界面元素的定制也基于此扩展点机制。
[0034]扩展点管理器提供了扩展点的管理服务,包括扩展点功能定义的搜索、扩展点依赖关系的管理和扩展点定义的推送等功能。
[0035]如图1所示,本发明实施例提供一种插件框架处理模块,包括:插件核心器11、扩展点管理器12、应用组合管理器13、插件管理器14 ;
[0036]所述插件核心器11,用于控制所述插件框架处理模块工作状态,控制插件的安装与卸载,控制插件消息订阅与发送;
[0037]所述扩展点管理器12,用于提供插件扩展规范,使得多个插件相互通信;[0038]所述应用组合管理器13,定义应用组合数据结构并进行应用组合的管理。
[0039]所述插件管理器14用于调用应用组合管理器,根据当前应用组合启动所有插件。
[0040]可选的,所述插件管理器14具体用于,调用应用组合管理器,得到当前应用组合所包含的插件列表,搜索指定的插件目录,对搜索到的插件与应用组合的插件列表进行匹配,匹配后调用插件核心动态库安装对应的插件到插件框架处理模块,搜索该插件的配置文件,调用扩展点管理器解析其中的扩展点,按照插件依赖关系依次启动所有插件。
[0041]可选的,所述插件核心器11通过应用程序编程接口 API与插件进行通信。
[0042]可选的,所述API使用static函数。
[0043]本发明实施例的插件框架处理装置及插件系统,通过插件之间进行通信,从而实现应用的跨平台使用。
[0044]下面详细说明本发明实施例的插件框架处理模块。
[0045]插件核心器为动态库,封装一组插件框架起动与停止,插件安装与卸载,插件启动与停止,服务注册与卸载,服务请求,消息订阅与发送的API函数,所有插件将依赖于这个模块,调用这个模块导出的API进行所有插件框件,插件,插件服务,插件消息相关的操作。为了简化调用,本发明实施例所有API均使用static函数导出。
[0046]本发明实施例一个插件通过扩展点以实现其功能的扩展,扩展点就是定义给其他插件进行扩展的规范,其他插件必须遵循这些规范才可用.具体实现,扩展点被定义为一些接口和相关的XML文档说明.在文档说明中指明了扩展点的ID,名称,以及对应的接口定义.因此每一个插件都具有下面的三个配置文件,其中shema文件是可选的:
[0047]plug, xml:描述插件的扩展点,以及实现的其他插件的扩展;
[0048]MAINFEST.MF:描述了插件的版本和版本更新信息,插件之间的包约束关系;
[0049]Shema文件(xxx.esxd):是对plug, xml文件中的标签的结构的解释;
[0050]扩展点会暴露给其他插件,当一个插件被加载时,会首先解析该插件的plug, xml和MAINFEST.MF文件,找出该插件所定义的所有扩展点,和已经实现的其他插件的扩展点,进而将这些信息写进一个特殊的插件扩展注册表里。
[0051]新插件是通过实现扩展点来进行功能扩展的,新插件实现扩展点中定义的接口,并且在plug, xml文件中说明说扩展的扩展点,以及其具体实现,通过这些信息,系统能够识别出该插件所实现的扩展点.当一个插件被加载时,系统会将其实现的扩展注册到一个特殊的插件扩展注册表中,当插件卸载时,系统会将其从这个插件扩展注册表中删除,而其他插件可以通过插件扩展注册表查找系统中某扩展点的扩展实现,通过这种方式,新的插件可以进行自由的拔插系统中,将会有一个独立的扩展点管理插件来完成上述的功能,如图2所示:
[0052]在扩展点的具体实现形式上,本发明实施例采用如下两种方式:
[0053]第一种:Qt插件形式。如果使用这种实现形式,就要求在插件的plug, xml文件中,指定一个具体的抽象父类的名字,这个名字必须和类名是一致的,必须这么用的原因是因为Qt并没有一个完全的反射机制,在使用Qt的插件机制实现扩展点功能的时候,就必须显式的写出插件接口的父类的名字。这种实现方式的本质是基于接口的实现,因此可以认为是一种紧偶合使用形式。而且这种插件机制是在部件级别的,并没有上升到框架级别,因此很多在框架级别才有的机制,如安全机制,插件的依赖关系的管理机制等,它都没有。[0054]第二种:0SGI的插件机制。如果使用这种实现形式,不要求在插件的plug, xml文件中指定一个具体的抽象父类的名字,可以仅仅用一个ID来标识它,然后把这个ID和一个具体的OSGI插件做一个内部映射就可以了,OSGI的插件机制本质上是一个基于服务的实现,是一个松偶合的使用形式,插件之间的关系是平等的,没有任何偶合的关系.同时OSGI的插件机制不同于Qt的插件机制,它是框架级别的,完整的提供了安全机制,插件的依赖关系的管理机制等功能。
[0055]本发明实施例中插件之间的通信方式主要有两种:
[0056]服务的方式:插件对外提供服务的方式可以供其他插件直接调用插件服务提供的接口访问到插件的资源。插件可以通过增加新的服务或公用接口来增加插件的扩展点,供外部插件调用来实现新的扩展功能。同时提供serviceListener来监听服务的状态变化,从而可以动态的调整依赖此服务的插件的状态。
[0057]使用Event Bus实现插件间的独立的通信机制,Event Bus也是一种OSGI插件,基于订阅/发布机制来实现通信,这是OSGI极力推荐的通信方式,在系统中将主要采取这种通信方式。
[0058]本发明实施例中使用Event Bus实现插件间的独立的通信机制。
[0059]每个插件都会定义自己处理的数据格式、所接收的消息类型等等。插件之间通过广播插件类型和数据来相互调用。
[0060]本发明实施例中内核器通过Framework Listener和plugin Listener来监视Framework和插件的生命周期状态的改变。
[0061]插件对外提供服务的方式可以供其他插件直接调用插件服务提供的接口访问到插件的资源。插件可以通过增加新的服务或公用接口来增加插件的扩展点,供外部插件调用来实现新的扩展功能。
[0062]系统使用serviceListener来监听服务的状态变化,从而可以动态的调整依赖此服务的插件的状态。
[0063]本发明实施例中内核模块负责搜索、加载、启动/关闭插件。
[0064]启动后,会首先搜索和加载用户许可校验插件,用以确定用户许可使用的插件。然后加载和启动集成界面插件。
[0065]扩展点管理器为插件,所有与扩展点相关的操作由本模块完成,本插件提供两个月艮务(Service),分别是 IExtensionAdminService 和 IPluginExtensionListener。
[0066]IExtensionAdminService提供扩展点解析和扩展点监听功能。
[0067]扩展点解析:是扩展点管理的基础功能,传入指定的扩展点文件(在本系统中默认为plug, xml),本插件将解析其中的xml内容并将解析后的内容发送给监听插件。
[0068]扩展点监听:其它插件向本插件注册为监听者,当解析后的扩展点有实现了该监听插件的扩展,将被推送至监听者。凡是定义了扩展点的插件都应当注册为监听者,这样当有任意插件(包括本插件)实现了对应的扩展点时,这些扩展点信息都将会被推送至监听插件,并由监听插件进行进一步的分析和处理。
[0069]IPluginExtensionLister:提供监听接口
[0070]每一个需要监听扩展点推送消息的插件都需要实现一个监听接口,并将接口通过IExtensionAdminService注册到扩展点管理插件中。监听接口的实现:根据本插件定义的扩展点格式对推送至的扩展点信息进行业务层面的解析,并完成相应的功能。
[0071]应用组合器(Appcombin)为动态库,定义应用组合数据结构并进行应用组合的管理。开放两个头文件:appcombin.h和appcombinmanager.h供调用方使用。Appcombin.h文件主要定义应用组合的数据结构,每一个应用组合均包含一组插件,以及对应的界面信息。appcombinmanager.h中导出类AppCombinManager,主要提供应用组合的增删查改等功能。
[0072]插件管理器(PluginManger)为动态库,插件管理器作为整个插件系统运行的发起者,首先调用应用组合管理器,得到当前应用组合所包含的插件列表,然后搜索指定的插件目录,对搜索到的插件与应用组合的插件列表进行匹配,匹配后调用插件核心动态库安装对应的插件到插件框架中,然后搜索该插件的配置文件(plugin, xml),调用扩展点管理器解析其中的扩展点,然后按照插件依赖关系依次启动所有插件,完成整个系统的启动。
[0073]如图3所示,本发明实施例提供一种插件系统,上述实施例提供的插件框架处理模块I。
[0074]可选的,如图3所示,还包括:应用组合开发模块2,用于生成应用组合。
[0075]可选的,如图3所示,还包括:插件开发模块3,用于实现插件开发。
[0076]本发明实施例的插件系统可以采用如图4所示的框架结构。
[0077]具体实现时,本发明实施例的插件系统具体包括:
[0078]I)动态模块(插件化)系统;
[0079]a.插件生命周期
[0080]1.插件框架的启动与停止
[0081]i1.插件发现,安装,启动,停止
[0082]ii1.插件的依赖性管理:插件启动时,根据依赖关系,顺序启动相关依赖的插件
[0083]b.插件服务管理:
[0084]1.提供服务的注册,查询,调用,卸载
[0085]c.插件事件管理插件
[0086]1.插件事件定义,订阅,发送,事件处理
[0087]d.扩展点管理插件
[0088]1.扩展点格式定义
[0089]i1.扩展点的搜索、解析和推送
[0090]e.应用组合管理
[0091]1.应用组合定义
[0092]i1.应用组合的读写
[0093]ii1.应用组合的持久化
[0094]iv.加载并解析应用组合配置文件
[0095]V.加载并启动应用组合所对应的插件
[0096]f.配置管理
[0097]1.插件及扩展点相关信息的持久化
[0098]i1.提供全局的配置信息持久化接口
[0099]2)插件开发向导;
[0100]通过向导方式,帮助系统维护和开发人员快速的创建和编辑系统业务插件,并通过配置步骤,完成插件信息的初始化以及模板代码的生成。它主要包括:
[0101]a.插件基础信息编辑
[0102]b.插件扩展点信息编辑
[0103]c.插件第三方支持模板代码生成
[0104]d.插件界面元素定义
[0105]通过使用开发向导,可以减少大量重复性的代码编程工作,提高工作效率的同时,减少了意外出错的可能性。
[0106]3)应用组合定制工具;
[0107]应用组合定制工具用于应用组合管理工作,包括应用组合的新建,编辑,删除,查询,发布等。
[0108]应用组合可浏览包含的所有插件的界面元素信息,由用户手工来添加到应用组合里来显示,并由用户补全/修改界面元素在这个应用组合中的相关信息。
[0109]应用组合在添加完本应用组合的基础信息以后,点击界面布局,便可预览各种界面元素组合在一起的表现,在此界面用户可以通过拖拽的方式手动调整浮动面板的停靠位置,大小,停靠方式,工具栏的位置,保存后在最终软件运行时将会呈现同样的界面布局。
[0110]用户创建好所需的应用组合后,点击发布应用组合按钮,进入应用组合发布界面,在此界面选择发布的路径,以及本次发布所包含的所有应用组合,点击发布,而在指定目录生成对应的应用程序,包含指定的应用组合以及应用组合所包含的所有插件(若插件有重复,只生成一份)。发布后的应用程序可独立运行。
[0111]使用应用组合和应用组合界面定制机制,保证了软件界面定制与实现功能不依赖于专业编程能力,降低软件开发的复杂度和过程,提高了开发和维护(二次开发)难度。
[0112]4)桌面风格主界面框架;
[0113]桌面风格主界面框架定义了桌面主界面的扩展点,实现程序运行的界面框架及相关全局设置。
[0114]桌面主界面插件定义Windows主窗口的界面扩展点,解析收到的界面扩展点信息,创建对应的界面元素和调用插件对应的接口来创建界面元素
[0115]主要功能:
[0116]a.主窗口的显示
[0117]b.中央视图的添加,位置及显隐管理
[0118]c.浮动窗口(面板)的添加,位置及显隐管理
[0119]d.菜单的添加,位置及显隐管理(图标,浮动提示,初始选中状态(能否选中),初始使能状态)
[0120]e.工具栏的添加,位置及显隐管理(图标,浮动提示,初始选中状态(能否选中),初始使能状态)
[0121]f.状态栏的添加,位置及显隐管理
[0122]g.界面元素的消息传递
[0123]5)平板风格主界面框架;
[0124]平板风格主界面框架定义了平板主界面扩展点,实现程序运行的界面框架及相关
全局设置。[0125]平板主界面插件定义平板主窗口的界面扩展点,解析收到的界面扩展点信息,创建对应的界面元素和调用插件对应的接口来创建界面元素
[0126]主要功能:
[0127]a.主窗口的显示
[0128]b.子界面的显示
[0129]c.工具栏按钮组切换和显示
[0130]d.工具栏按钮位置与显隐管理
[0131]e.界面风格切换与显示(如九宫格模式、Metro模式、影院模式)
[0132]f.页面导航机制
[0133]g.界面元素的消息传递
[0134]本发明实施例具有以下几大优势:
[0135]跨平台:通过使用跨平台的开发框架Qt,保证了系统优良的跨平台性,用其开发的软件代码,只需要各平台编译,即可实现各平台正确运行。
[0136]热插拔:本次开发采用了符合OSGi规范的插件化框架,并且在框架中实现了插件的管理器功能,对所有系统插件的生命周期进行管理,同时提供了注册,发现,加载、卸载、停止、激活、反激活系统插件和用户插件等相应的功能。保证了用户可以在不重启程序的情况下加载和停止插件。
[0137]低耦合:本次开发的插件框架中,定义并且实现了一套扩展点机制,通过扩展点,插件与插件间形成了完整的插件网络。但对于定义扩展点的插件与实现扩展点的插件间并没有绝对的耦合性,扩展点的定义插件并不知道自己定义的扩展点由哪个或者哪几个插件实现,从来在保证了插件化网络的前提下,实现了低耦合性。
[0138]可扩展性:任何软件产品都是有生命周期的,作为程序的创造者,大家都不愿意看到其消亡的现实。因此应当尽量延长软件产品的生命周期,不断的将新的功能注入到现有的软件产品是一种手段。插件化的系统架构为扩展新功能提供了更好的方便性。因为新的功能以插件的形式给出时,是相对独立的,不影响整个系统框架和其它功能甚至是把扩展软件功能的能力提供给用户或第三方厂商,以达到最大限度的功能扩展。
[0139]灵活界面定制:通过应用组合,可以对最终发布程序的界面进行灵活的定制。界面定制用户不需要专业编程知识,只需要理解最终用户需求,通过可视化的界面配置和拖拽,就可以最最终的插件化程序界面完成配置。并且应用组合中界面信息不影响应用组合中相关插件,即相同插件组,可以配置成为不同用户操作界面,但所有逻辑和控制,都使用的相同插件组。
[0140]便捷二次开发:本次开发提供了二次开发向导,帮助系统二次开发和维护人员快速的创建和修改系统各插件。大幅减少了用户的重复性代码工作,并且通过可视化的配置界面,完成相关插件网络以及扩展点创建编辑等,降低了二次开发的难度和避免了相关配置的纯文本编辑方式,减少了不可预期的错误可能。另外系统还提供了平板风格主界面插件,实现了包括:页面,工具栏,导航,动画,手势等在内的平板操作公共功能,便于用户在平板风格下进行快速的开发。
[0141]以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的【技术领域】,均同理包括在本发明的专利保护范围内。
【权利要求】
1.一种插件框架处理模块,其特征在于,包括:插件核心器、扩展点管理器、应用组合管理器、插件管理器; 所述插件核心器,用于控制所述插件框架处理模块工作状态,控制插件的安装与卸载,控制插件消息订阅与发送; 所述扩展点管理器,用于提供插件扩展规范,使得多个插件相互通信; 应用组合管理器,定义应用组合数据结构并进行应用组合的管理。 插件管理器用于调用应用组合管理器,根据当前应用组合启动所有插件。
2.根据权利要求1所述的模块,其特征在于,所述插件管理器具体用于,调用应用组合管理器,得到当前应用组合所包含的插件列表,搜索指定的插件目录,对搜索到的插件与应用组合的插件列表进行匹配,匹配后调用插件核心动态库安装对应的插件到插件框架处理模块,搜索该插件的配置文件,调用扩展点管理器解析其中的扩展点,按照插件依赖关系依次启动所有插件。
3.根据权利要求1所述的模块,其特征在于,所述插件核心器通过应用程序编程接口API与插件进行通信。
4.根据权利要求3所述的模块,其特征在于,所述API使用static函数。
5.一种插件系统,其特征在于,包括如权利要求1至4中任一项所述的插件框架处理模块。
6.根据权利要求5所述的系统,其特征在于,还包括:应用组合开发模块,用于生成应用组合。
7.根据权利要求6所述的系统,其特征在于,还包括:插件开发模块,用于实现插件开发。
【文档编号】G06F9/44GK103927163SQ201410081113
【公开日】2014年7月16日 申请日期:2014年3月6日 优先权日:2014年3月6日
【发明者】孙岩, 龚斌, 孙凌云, 王青海, 何国良, 倪亮, 陈健, 王光伟 申请人:中国人民解放军装甲兵工程学院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1