发明内容
有鉴于此,本发明所要解决的技术问题在于,提供一种扩展点和插件的管理方法和装置,能够建立一个统一的扩展点管理平台,可以方便地实现基于该扩展点管理平台的插件扩展,较好地解决了基于扩展点的软件扩展与应用融合的问题。
本发明提供了一种扩展点和插件的管理方法,包括:建立扩展点,根据该扩展点的属性来发布扩展点,扩展点与多个插件对应,根据插件的属性和注册规则来注册与扩展点对应的插件。通过该技术方案,可以在一个统一的环境下管理扩展点和插件,便于后续的开发和应用融合。
在上述技术方案中,优选地,按照调用规则来调用插件。这样,使用插件时也必须按照注册时事先的声明规则来进行,便于统一管理。
在上述技术方案中,优选地,分别定义扩展点和插件的属性,并分别声明根据扩展点来注册插件的注册规则和调用插件的调用规则,其中,扩展点的属性包括:所属组件、是否有效、是否支持设置调用时机、是否支持设置同步和是否支持设置同一事务;插件的属性包括:所属扩展点、是否启用、是否支持设置调用时机、是否支持设置同步、是否支持设置同一事务和调用顺序。这样,所有的扩展点和插件都必须根据这些定义和声明来来管理和使用。
在上述技术方案中,优选地,注册规则具体为:如果扩展点的是否有效属性为无效时,则不能为扩展点注册对应的插件;如果扩展点的是否支持设置调用时机属性为否时,则注册的插件不具有调用时机功能;如果扩展点的是否支持设置同步属性为不支持时,则注册的插件在被调用时不进行同步调用处理;如果扩展点的是否支持设置同一事务属性为不支持时,则注册的插件在被调用时与调用者不在同一事务里。因此,插件的注册必须与其所对应的扩展点统一起来,根据扩展点具体的属性设置来设置插件的属性。
在上述技术方案中,优选地,发布扩展点和注册插件还包括相关操作,相关操作包括:增加、修改、保存、删除和/或查询。这样,增加了扩展点和插件的后续开发功能,更加人性化。
在上述技术方案中,优选地,调用插件的调用规则具体为:查询扩展点对应的一个或多个插件,按照调用时机和调用顺序属性的设置来调用插件,如果插件的调用时机在默认插件之前,则先处理插件,如果插件的调用时机在默认插件之后,则先处理默认插件;按照是否支持设置同步属性的设置来处理插件,同步调用插件或异步调用插件;按照是否支持设置同一事务属性的设置来处理插件,调用插件时与调用者在同一事务里或不在同一事务里。因此,考虑到了同步调用/异步调用和是否同一事务中处理,调用插件时,按照该插件的属性设置来进行处理。
本发明还提供了一种扩展点和插件的管理装置,包括:发布模块,用于建立扩展点,根据扩展点的属性来发布扩展点,扩展点与多个插件对应,根据插件的属性和注册规则来注册与扩展点对应的插件。通过该技术方案,可以在一个统一的环境下管理扩展点和插件,便于后续的开发和应用融合。
在上述技术方案中,优选地,还可以包括:调用模块,用于按照调用规则来调用插件。这样,使用插件时也必须按照注册时事先的声明规则来进行,便于统一管理。
在上述技术方案中,优选地,还可以包括:属性定义模块,用于分别定义扩展点和插件的属性,并分别声明根据扩展点来注册插件的注册规则和调用插件的调用规则,其中,扩展点的属性包括:所属组件、是否有效、是否支持设置调用时机、是否支持设置同步和是否支持设置同一事务;插件的属性包括:所属扩展点、是否启用、是否支持设置调用时机、是否支持设置同步、是否支持设置同一事务和调用顺序。这样,所有的扩展点和插件都必须根据这些定义和声明来来管理和使用。
在上述技术方案中,优选地,注册规则具体为:如果扩展点的是否有效属性为无效时,则不能为扩展点注册对应的插件;如果扩展点的是否支持设置调用时机属性为否时,则注册的插件不具有调用时机功能;如果扩展点的是否支持设置同步属性为不支持时,则注册的插件在被调用时不进行同步调用处理;如果扩展点的是否支持设置同一事务属性为不支持时,则注册的插件在被调用时与调用者不在同一事务里。因此,插件的注册必须与其所对应的扩展点统一起来,根据扩展点具体的属性设置来设置插件的属性。
在上述技术方案中,优选地,发布模块还可以包括相关操作,相关操作包括:增加、修改、保存、删除和/或查询。这样,增加了扩展点和插件的后续开发功能,更加人性化。
在上述技术方案中,优选地,调用模块调用插件的调用规则具体为:查询扩展点对应的一个或多个插件,按照调用时机和调用顺序属性的设置来调用插件,如果插件的调用时机在默认插件之前,则先处理插件,如果插件的调用时机在默认插件之后,则先处理默认插件;按照是否支持设置同步属性的设置来处理插件,同步调用插件或异步调用插件;按照是否支持设置同一事务属性的设置来处理插件,调用插件时与调用者在同一事务里或不在同一事务里。因此,考虑到了同步调用/异步调用和是否同一事务中处理,调用插件时,按照该插件的属性设置来进行处理。
通过上述技术方案,可以实现一种扩展点和插件的管理方法和装置,能够建立一个统一的扩展点管理平台,可以方便地实现基于该扩展点管理平台的插件扩展,较好地解决了基于扩展点的软件扩展与应用融合的问题。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明并不限于下面公开的具体实施例的限制。
图2示出了根据本发明的实施例的扩展点和插件的管理方法的流程图。
如图2所示,根据本发明的实施例的扩展点和插件的管理方法,包括:步骤202,建立扩展点,根据该扩展点的属性来发布扩展点,扩展点与多个插件对应,根据插件的属性和注册规则来注册与扩展点对应的插件。通过该技术方案,可以在一个统一的环境下管理扩展点和插件,便于后续的开发和应用融合。
在上述技术方案中,优选地,按照调用规则来调用插件。这样,使用插件时也必须按照注册时事先的声明规则来进行,便于统一管理。
在上述技术方案中,优选地,分别定义扩展点和插件的属性,并分别声明根据扩展点来注册插件的注册规则和调用插件的调用规则,其中,扩展点的属性包括:所属组件、是否有效、是否支持设置调用时机、是否支持设置同步和是否支持设置同一事务;插件的属性包括:所属扩展点、是否启用、是否支持设置调用时机、是否支持设置同步、是否支持设置同一事务和调用顺序。这样,所有的扩展点和插件都必须根据这些定义和声明来来管理和使用。
在上述技术方案中,优选地,注册规则具体为:如果扩展点的是否有效属性为无效时,则不能为扩展点注册对应的插件;如果扩展点的是否支持设置调用时机属性为否时,则注册的插件不具有调用时机功能;如果扩展点的是否支持设置同步属性为不支持时,则注册的插件在被调用时不进行同步调用处理;如果扩展点的是否支持设置同一事务属性为不支持时,则注册的插件在被调用时与调用者不在同一事务里。因此,插件的注册必须与其所对应的扩展点统一起来,根据扩展点具体的属性设置来设置插件的属性。
在上述技术方案中,优选地,发布扩展点和注册插件还包括相关操作,相关操作包括:增加、修改、保存、删除和/或查询。这样,增加了扩展点和插件的后续开发功能,更加人性化。
在上述技术方案中,优选地,调用插件的调用规则具体为:查询扩展点对应的一个或多个插件,按照调用时机和调用顺序属性的设置来调用插件,如果插件的调用时机在默认插件之前,则先处理插件,如果插件的调用时机在默认插件之后,则先处理默认插件;按照是否支持设置同步属性的设置来处理插件,同步调用插件或异步调用插件;按照是否支持设置同一事务属性的设置来处理插件,调用插件时与调用者在同一事务里或不在同一事务里。因此,考虑到了同步调用/异步调用和是否同一事务中处理,调用插件时,按照该插件的属性设置来进行处理。
图3示出了根据本发明的实施例的扩展点和插件的管理装置的框图。
如图3所示,根据本发明的实施例的扩展点和插件的管理装置300包括:发布模块302,用于建立扩展点,根据扩展点的属性来发布扩展点,扩展点与多个插件对应,根据插件的属性和注册规则来注册与扩展点对应的插件。通过该技术方案,可以在一个统一的环境下管理扩展点和插件,便于后续的开发和应用融合。
在上述技术方案中,优选地,还可以包括:调用模块304,用于按照调用规则来调用插件。这样,使用插件时也必须按照注册时事先的声明规则来进行,便于统一管理。
在上述技术方案中,优选地,还可以包括:属性定义模块306,用于分别定义扩展点和插件的属性,并分别声明根据扩展点来注册插件的注册规则和调用插件的调用规则,其中,扩展点的属性包括:所属组件、是否有效、是否支持设置调用时机、是否支持设置同步和是否支持设置同一事务;插件的属性包括:所属扩展点、是否启用、是否支持设置调用时机、是否支持设置同步、是否支持设置同一事务和调用顺序。这样,所有的扩展点和插件都必须根据这些定义和声明来来管理和使用。
在上述技术方案中,优选地,注册规则具体为:如果扩展点的是否有效属性为无效时,则不能为扩展点注册对应的插件;如果扩展点的是否支持设置调用时机属性为否时,则注册的插件不具有调用时机功能;如果扩展点的是否支持设置同步属性为不支持时,则注册的插件在被调用时不进行同步调用处理;如果扩展点的是否支持设置同一事务属性为不支持时,则注册的插件在被调用时与调用者不在同一事务里。因此,插件的注册必须与其所对应的扩展点统一起来,根据扩展点具体的属性设置来设置插件的属性。
在上述技术方案中,优选地,发布模块302还可以包括相关操作,相关操作包括:增加、修改、保存、删除和/或查询。这样,增加了扩展点和插件的后续开发功能,更加人性化。
在上述技术方案中,优选地,调用模块304调用插件的调用规则具体为:查询扩展点对应的一个或多个插件,按照调用时机和调用顺序属性的设置来调用插件,如果插件的调用时机在默认插件之前,则先处理插件,如果插件的调用时机在默认插件之后,则先处理默认插件;按照是否支持设置同步属性的设置来处理插件,同步调用插件或异步调用插件;按照是否支持设置同一事务属性的设置来处理插件,调用插件时与调用者在同一事务里或不在同一事务里。因此,考虑到了同步调用/异步调用和是否同一事务中处理,调用插件时,按照该插件的属性设置来进行处理。
通过上述技术方案,可以实现一种扩展点和插件的管理方法和装置,能够建立一个统一的扩展点管理平台,可以方便地实现基于该扩展点管理平台的插件扩展,较好地解决了基于扩展点的软件扩展与应用融合的问题。
接下来参考图4至图9来详细说明本发明的又一实施例。
如图4所示,本实施例的技术方案包括三个方面,第一个方面是设计扩展点和插件的属性模型402,第二个方面是按照该属性模型来发布扩展点和注册基于该扩展点的插件,还提供增加、修改、删除和查询等管理的操作404,第三个方面是在软件开发和应用时插件的处理过程406。
首先具体说明该实施例的第一个方面,软件的组件为了能够支持对其扩展业务能力,需要先声明其具有哪些扩展点,以及支持以何种方式进行使用。一个扩展点通常支持多个扩展插件,如图1所示。如果一个组件的一些行为需要在不同的应用场景下有不同的实现,通常在组件设计时,就需要根据这些行为的扩展需要分离接口,形成扩展点。
如图5所示,是该实施例中的扩展点和插件的属性模型设置的示意图。
该扩展点的实体模型的主要属性具体解释如下:
标识:扩展点的唯一标识;
编码:扩展点的编码,按照一定的规则生成编码,具体规则例如模块简称-组件简称-流水号;
名称:扩展点的名称,该名称能够反映其业务职责;
类全名:该扩展点对外公布的类的全名,包括名称空间;
描述信息:描述该组件的用途、注意事项等;
所属组件:该扩展点的所属组件的名称;
是否有效:表明该扩展点是否可以使用;
是否支持调用时机:调用时机用于标识其调用的位置,如before调用或者after调用,该属性用于表示该扩展点是否允许设置调用时机;
是否支持设置同步:表示该扩展点是否允许设置同步或异步调用;
是否支持设置事务:表示该扩展点是否允许设置事务行为;
创建者:该扩展点的创建者或发布者;
创建时间:该扩展点的发布时间。
该插件的实体模型的主要属性具体解释如下:
是否启用:该插件是否可用;
调用时机:具体设置是before调用还是after调用,缺省值为after调用;
是否同步:设置该插件的方法在调用时是同步方式还是异步方式;
是否同一事务:设置该插件是否与调用者在同一事务里;
调用顺序:如果一个扩展点有多个启用的插件时,该插件的调用顺序。
对于需要管理的每个扩展点和注册的插件,均要求按照上面的实体模型的属性来提供其声明信息。
接着说明该实施例的第二个方面,设计完了实体模型的属性之后,针对这些属性的声明信息来完成扩展点的发布以及插件的注册。
扩展点的发布管理提供扩展点的增加、修改、删除、保存、查询等操作。扩展点通常是以组件为单位进行管理和对外发布的。因此,为了方便对扩展点进行管理,应该按照产品-模块-组件的方式来展现扩展点。扩展点的编辑按照扩展点的实体模型来设计,提交的扩展点的信息将会影响其对应的插件的注册,例如,如果一个扩展点的“是否有效”属性为“否”,则将不能为其注册插件;如果“是否支持调用时机”属性为“否”,则在注册该扩展点的扩展插件时,将不能为该扩展插件编辑“调用时机”属性;如果“是否支持设置同步”属性为“否”,则注册的插件不能编辑设置同步;如果“是否支持设置同一事务”属性为“否”时,则注册的插件不能编辑设置同一事务。
插件的注册管理也主要提供了插件的增加、修改、删除、保存、查询等操作。插件必须对应一个具体的扩展点。在注册插件时,必须首先选择一个具体的扩展点,根据选择的扩展点不同,插件注册的属性可能会不同。插件编辑界面中的一些属性可否编辑,直接与选择的扩展点有关,如在扩展点的发布管理中说明的那样,这样保证了插件注册信息与扩展点声明信息的一致性。
扩展点的发布和插件的注册管理界面如图6所示。在图中的扩展点页签,将显示选中的左侧的树型控件中的产品、模块或组件下的所有扩展点列表,可在表格中直接编辑扩展点的数据,编辑完成后可点击上面的操作按钮即可。如果选中一个扩展点并双击的话,将进入如图5所示的插件页签,点击增加或修改按钮就可以在插件列表中直接编辑选中的插件信息,编辑完成后可点击上面的保存按钮。
最后参考图7和图8来说明该实施例的第三个方面,图7示出了调用者访问扩展点时调用插件的过程图。步骤702,调用者发送调用插件命令给插件工厂,步骤704,插件工厂接收到命令之后到插件配置表查找该调用者需要调用的插件,步骤706,找到所需的插件。插件工厂中的扩展点及与其对应的插件在一个单独的、代码之外的地方进行声明,以便插件的配置具有可管理性。另外,与插件的连接必须是在运行时动态进行,而不是在编译时进行,这样才能在重新配置后无需重新编译。与插件的连接可以描述在配置表中。插件工厂访问配置表来关联扩展点可以使用的插件。这种机制在具有反射机制的程序语言中可以充分发挥优势,因为插件工厂可以动态构造出插件实例,而无需在编译时与插件存在依赖关系。
找到所需的插件之后,根据插件的属性设置来处理该插件,其处理过程如图8所示。
在步骤802,选取扩展点。在步骤804,调用者按扩展点信息进行查询。在步骤806,可能会获得一组扩展插件,这些组件将按照调用时机和调用顺序准备好。
在步骤808,获取一个扩展插件。
在步骤810,按照该插件的调用时机属性的设置来处理,调用时机主要针对默认插件的调用位置而言的,before是指在调用默认插件之前调用本插件,而after是指在调用默认插件之后再调用本插件,如果扩展点有默认插件,并且该插件必须执行,则该插件可不再插件表中注册。
在步骤812,在处理完调用时机之后,将处理该插件的同步/异步调用问题,常见的情况是同步调用,而如果是异步调用的话,可以把对本插件的方法调用直接提交给消息中间件,以实现异步调用。这样可以提升应用性能。
在步骤814,如果插件的设置是“支持同一事务”,则需要在调用该插件时,需要与调用者在同一事务内,以保证数据的一致性。
在步骤816,判断是否处理结束,如果结束则完成扩展点的插件处理,如果没有结束,则回到步骤808,继续处理插件,直到扩展点的插件全处理完。
当按照上面的过程处理完所有的插件后,就完成了调用者对该扩展点的插件处理过程,也就实现了该调用者基于该扩展点和配置插件的应用扩展的融合。
图4至图8详细说明了本发明的又一实施例的技术方案,能够定义扩展点和插件,声明发布扩展点和注册对应的插件的规则,按照这些规则来处理扩展点和插件,使得所有的开发和调用都在一个统一的和有秩序的环境下,方便了后续的扩展和融合应用。
以上,参考附图对本发明的实施例进行了详细描述。根据本发明的实施例的技术方案,可以实现扩展点和插件的管理方法和装置,能够非常方便地实现不同研发层次、不同研发组织的各类应用组件的基于扩展点的插件扩展。具有良好的扩展能力,不同产业生态链的开发人员、实施人员可以根据应用的需要,灵活地定制出符合自己需求的扩展插件,而且遵循本发明的使用方法,能够在软件中稳定地实现应用与扩展插件的完美融合。因此,对于软件开发人员、实施人员以及具有开发能力的最终客户都有很好的应用价值。。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。