模块管理设备、模块管理系统和模块管理方法

文档序号:6512355阅读:454来源:国知局
模块管理设备、模块管理系统和模块管理方法
【专利摘要】本发明公开了一种模块管理设备、模块管理系统和模块管理方法。提供了一种模块管理设备,当从文件夹加载扩展包时,并且如果定义信息在不同的扩展包之间冲突,则该模块管理设备在模块管理基础设施开始执行以下各项的综合管理时,通过动态地改变定义信息来对扩展包的参考关系进行协调:具有包括模块的属性的定义信息和面向对象的语言描述的程序所形成的模块的扩展包;以及包括多个扩展包片的模块组。
【专利说明】模块管理设备、模块管理系统和模块管理方法
[0001]本申请基于并且要求2012年9月20日提交的日本专利申请N0.2012-206416的优先权的权益,其全部公开内容通过引用被整体地合并到本文中。
【技术领域】
[0002]本发明涉及模块管理设备、模块管理系统和模块管理方法,该模块管理设备、模块管理系统和模块管理方法使得在执行使用面向对象的语言描述的程序模块的整体管理的模块管理基础设施(infrastructure )中避免定义信息的冲突。
【背景技术】
[0003]在具有由Java (注册商标)表示的委托模型(delegation model)的类加载机制的面向对象的语言中,通过使类与包(package )名进行组合所作出的完全合格的类名来对模块进行分类。结果,即使对于具有相同名称的类,也可以通过看到包名来将其分类为不同类定义。以这样的语言,能够使得包和类被集成到文件中作为针对每个提供的功能而绑定的模块并对其进行分发。
[0004]而且,由于计算机性能的提高和开发效率的提高,使用大量模块的大规模系统日益增加。在这样的系统中,在组成系统的模块之间存在相关性关系,并且该系统建立在参考另一特定模块以提供特定功能的特定版本的模块上。
[0005]然而,随着由于系统更新和功能添加而引起的扩大的系统规模,对模块的名称、提供功能、版本、分配位置等的管理变得复杂。因此,已经产生了诸如非预期版本相关性和模块的重叠、模块名和包的冲突的问题。
[0006]因此,近年来,已经开发了以扩展包(bundle)为单位来管理模块的模块管理基础设施。扩展包包括关于除模块之外的扩展包的定义信息。定义信息是被称为符号名、版本号、要参考的扩展包等的名称。在模块管理基础设施中,用一对符号名和版本号来对模块进行分类。
[0007]模块管理基础设施可以检验在其激活时在控制之下的扩展包的版本和相关性关系,并且预先检测扩展包的定义信息的冲突和相关性关系的失配。而且,模块管理基础设施能够通过管理扩展包的寿命周期来动态地更新该扩展包。因此,根据模块管理基础设施,即使在系统不能停止的环境中,也能够进行作为扩展包的更新。最近,在应用服务器和集成开发环境中已经采用了模块管理基础设施,并且有效地利用诸如模块的动态添加/删除和不停止模块更新的特征。
[0008]例如,在专利文献1(日本专利申请特许公开N0.2012-93979)中,公开了一种技术,该技术通过自动地生成包括定义信息的清单文件来减少模块的管理负载,定义信息诸如模块管理基础设施中的模块的符号名、版本号和相关性关系。
[0009]因此,在模块管理基础设施中,使用包括诸如名称和版本的定义的扩展包来管理通过针对每个功能划分程序而实现的模块。然后,模块管理基础设施可以执行开始和停止的状态控制、确认与其他扩展包的相关性关系,并切将那些功能作为服务提供给应用。[0010]然而,虽然应用由于模块管理基础设施的这些功能而具有便利性,但是另一方面,增加了模块管理的严格性,并且因此需要比往常更加注意设定和更新关于模块的定义信
肩、O
[0011]在如专利文献I中描述的模块管理基础设施中,一对版本号和符号名需要在整个基础设施中是唯一的。因此,存在下述问题:当在模块管理基础设施上已经存在具有相同版本号和符号名的扩展包时,后添加的扩展包由于由关于扩展包的定义信息的冲突所引起的错误而不会被加载。
[0012]在一般的模块管理基础设施中个,能够加载其间可能发生冲突的扩展包,并且以加载的顺序对其给予扩展包ID。然而,存在下述问题:假定使用不是管理对象的扩展包时已经添加的另一扩展包指错误扩展包,并且因此,存在将引起不期望的执行结果的可能。
[0013]本发明的目的在于提供一种模块管理设备、模块管理系统和模块管理方法,该一种模块管理设备、模块管理系统和模块管理方法解决了关于扩展包的定义信息的冲突,以使得在不修正扩展包主体的情况下实现扩展包的共存,并且正确地构成扩展包之间的相关性关系。

【发明内容】

[0014]本发明的模块管理设备在模块管理基础设施开始执行对下述的综合管理时,当从文件夹加载扩展包时,并且如果定义信息在不同的扩展包之间发生冲突,则通过动态地改变定义信息来对扩展包的参考关系进行协调:具有包括模块的属性的定义信息和用面向对象的语言描述的程序所形成的模块的扩展包;以及包括多个扩展包的模块组。
[0015]本发明的模块管理方法在模块管理基础设施开始执行对下述的综合管理时,当从文件夹加载扩展包时,并且如果定义信息在不同的扩展包之间发生冲突,则通过动态地改变定义信息来对扩展包的参考关系进行协调:具有包括模块的属性的定义信息和用面向对象的语言描述的程序所形成的模块的扩展包;以及包括多个扩展包的模块组。
【专利附图】

【附图说明】
[0016]本发明的示例性特征和优点在结合附图进行时从以下详细描述将变得显而易见,在附图中:
[0017]图1是示出根据本发明的示例性实施例的管理模块设备的逻辑配置的框图;
[0018]图2是根据本发明的示例性实施例的模块管理基础设施的示例性配置;
[0019]图3是示出根据本发明的示例性实施例的公共扩展包的加载处理的流程图;
[0020]图4是示出根据本发明的示例性实施例的个体扩展包的加载处理的流程图;
[0021]图5是根据本发明的示例性实施例的扩展包信息表的示例;
[0022]图6是根据本发明的示例性实施例的符号名改变管理的示例;
[0023]图7A是根据本发明的示例I的模块管理基础设施中的模块组A的框图;
[0024]图7B是根据本发明的示例I的模块管理基础设施中的模块组B的框图;
[0025]图8是示出根据本发明的示例I的扩展包的关系的图;
[0026]图9是示出根据本发明的示例I的文件夹结构的图;
[0027]图10是示出根据本发明的示例I的模块管理基础设施上的扩展包的状态的图;[0028]图11是示出根据本发明的示例2的文件夹结构的图;
[0029]图12是示出根据本发明的示例2的模块管理基础设施上的扩展包的状态的图;
[0030]图13是示出根据本发明的示例3的文件夹结构的图;
[0031]图14是示出根据本发明的示例3的模块管理基础设施上的扩展包的状态的图;
[0032]图15是示出根据本发明的示例4的文件夹结构的图;以及
[0033]图16是示出根据本发明的示例4的模块管理基础设施上的扩展包的状态的图。
【具体实施方式】
[0034]将参考附图来描述本发明的示例性实施例。同时,在以下示例性实施例中,假设作为OSGi (开放服务网关协议)所特有的属性,扩展包具有其中已经写入诸如符号名和版本信息的元数据的清单文件(manifest file)。然而,在这方面,以下示例性实施例是本发明的示例,并且即使使用除JAVA之外的面向对象的语言,根据本发明的示例性实施例的方法也可以应用于执行与OSGi类似的属性管理的模块管理系统。
[0035](示例性实施例)
[0036]图1是示出根据本发明的示例性实施例的冲突避免装置I的逻辑配置的框图。同时,根据本示例性实施例的冲突避免装置I与执行用于避免关于模块的定义信息的冲突处理的模块管理设备相对应。图2是根据本发明的示例性实施例的模块管理基础设施的示例性配置。
[0037]图3是示出根据本发明的示例性实施例的公共扩展包的加载处理的流程图。图4是示出根据本发明的示例性实施例的个体扩展包的加载处理的流程图。
[0038]图5示出了其中聚集了扩展包的定义信息、相关性关系等的扩展包信息表50 (第一表)。在图6A中,示出了符号名改变管理表60 (第二表),其中聚集了扩展包的文件路径和符号名的改变历史。同时,假设扩展包信息表50和符号名改变管理表60被存储在通常作为主存储器的存储器中。然而,在这方面,扩展包信息表50和符号名改变管理表60可以被包括在图1的部件中,并且能够被存储在信息存储单元13内部。
[0039](结构)
[0040]在图1中,根据本示例性实施例的冲突避免装置I包括文件夹扫描单元10、加载处理单元11、扩展包相关性解决单元12、信息存储单元13、定义改变单元14和冲突检测单元15。
[0041]文件夹扫描单元10确认在公共扩展包布置文件夹和个体扩展包布置文件夹内是否存在未处理的扩展包文件。同时,在下文中,公共扩展包布置文件夹被描述为模块文件夹,并且个体扩展包布置文件夹被描述为个体文件夹。
[0042]加载处理单元11执行扩展包的读取处理。在扩展包的读取处理中,关于扩展包的信息被添加到扩展包信息表50,并且更新的扩展包信息被存储在信息存储单元13中。
[0043]相关性解决处理单元12执行扩展包之间的相关性关系的解决处理。当扩展包文件被加载时,相关性解决处理单元12根据关于参考对象的定义信息来执行相关性扩展包的关联处理,以便于协调扩展包文件的参考关系。
[0044]信息存储单元13存储扩展包和扩展包信息。信息存储单元13添加并且更新表的信息。信息存储单元13可以存储关于扩展包的信息,诸如扩展包信息表50和符号名改变管理表60,或者可以仅存储要被记录在那些表中的信息。
[0045]定义改变单元14改变关于扩展包的定义信息。例如,关于扩展包的定义信息具有由字符串、符号串等组成的唯一地指定扩展包的元信息,诸如符号名和版本信息。例如,如稍后所述,定义改变单元14能够通过将子文件夹名的一部分或全部附连到符号名的头部或将诸如下划线的符号或字符附连到符号名的头部来改变定义信息。
[0046]同时,定义信息不限于符号名,并且不应仅是能够唯一地指定该扩展包的信息。随着定义信息的改变、特定字符的添加或删除、特殊定义的改变条件,可以使用字符串和符号串等的一般改变方法。
[0047]冲突检测单元15使用由定义改变单元14改变的图5的定义信息来检测是否发生关于扩展包的定义信息的冲突。具体地,冲突检测单元15将参考扩展包信息表50,并且检测在先加载的扩展包与后加载的扩展包之间是否发生冲突。
[0048]图2指示根据本发明的示例性实施例的模块管理基础设施21的示例性配置。同时,在图2中,用箭头来指示扩展包之间的参考关系。箭头的起始点中的扩展包参考箭头的末端中的扩展包。图2的上部分图中的点划线的箭头是出于由于错误的参考而发生冲突。
[0049]图2的上部分指示在不改变定义信息的情况下使得属于模块组A的扩展包a24、扩展包b25和扩展包c26以及属于模块组B23的扩展包d27、扩展包e28和扩展包c29在模块管理基础设施21上进行操作。同时,在图2中,假设符号名与各个扩展包名称相同。而且,在图2的示例中,假设先加载模块组A22的扩展包,并且此后加载模块组B23的扩展包。
[0050]在图2的上部分中,模块组A22的扩展包b25参考扩展包a24和扩展包c26。模块组B23的扩展包e28参考扩展包d27和扩展包c29。
[0051]在图2的上部分中,还假设模块组A22的扩展包c26和模块组B23的扩展包c29是不同的扩展包,但是诸如符号名的定义信息是相同的。
[0052]这里,当采用图2的上部分中的配置时,后加载的属于模块组B23的扩展包e28错误地参考先加载的模块组A22的扩展包c26,并且发生关于扩展包的定义信息的冲突。本质上,扩展包e28应当参考属于模块组B23的扩展包c29来进行操作。因此,如果模块组B23的扩展包e28参考属于模块组A22的扩展包c26,则导致应用的非预期操作。
[0053]图2的下部分指示根据本发明的示例性实施例的模块管理基础设施21的示例性配置。在图2的下部分的示例中,当模块管理基础设施21中加载了属于模块组A22的扩展包a24、扩展包b26和扩展包c26时,其符号名分别被动态地改变为扩展包Aa、扩展包Ab和扩展包Ac。类似地,属于模块组B的扩展包d27、扩展包e28和扩展包c29的符号名分别被改变为扩展包Bd、扩展包Be和扩展包Be。同时,假设在符号名改变时同时改变扩展包之间的参考关系,如稍后所述。
[0054]结果,在图2的下部分中的示例中没有作出如图2的上部分的错误参考,并且将正确地保持扩展包之间的参考关系。因此,属于模块组B23的扩展包Be不会错误地参考模块组A22的扩展包Ac。因此,避免了关于扩展包的定义信息的冲突,并且应用将正确地进行操作。
[0055](操作)
[0056]在根据本发明的示例性实施例的模块管理设备中,使用装配有上述配置的冲突避免装置通过以下操作来规避关于扩展包的定义信息的冲突。[0057]在以下操作中,在处理I中执行作为公共扩展包布置文件夹的模块文件夹中的扩展包的加载处理。接下来,在处理2中,执行作为个体扩展包布置文件夹的个体文件夹的加载处理。
[0058][处理I]
[0059]首先,将使用图3来描述模块管理基础设施21开始并且执行扩展包的加载处理的处理I。
[0060]在图3中,在处理I的加载处理中,文件夹扫描单元10首先确认在模块文件夹中是否存在未处理的扩展包文件(步骤31)。
[0061]当存在未处理的扩展包时,移动至加载处理(朝着步骤32前进)。当不存在未处理的扩展包时,处理I的流程完成,并且处理移动至处理2的加载处理。
[0062]接下来,冲突检测单元15参考扩展包信息表50,并且确认是否发生关于已加载的扩展包的定义信息(对应于第一定义信息)和关于未处理的扩展包的定义信息(对应于第二定义信息)的冲突(步骤32)。
[0063]当关于已经加载扩展包和未处理的扩展包的定义信息不冲突时,加载处理单元11执行对未处理的扩展包的读取处理(步骤33)。
[0064]在步骤32中,当发生关于已经加载的扩展包和关于未处理的扩展包的定义信息的冲突时,加载处理作为错误而结束。
[0065]在扩展包的读取处理中,关于扩展包的信息被添加到扩展包信息表50,并且扩展包信息被存储在信息存储单元13中(步骤33)。
[0066]然后,作为扩展包相关性解决处理,相关性解决处理单元12执行相关性扩展包的关联处理(步骤34)。如果扩展包相关性解决处理完成,则处理返回至步骤31。
[0067]当正在讨论中的扩展包所相关的另一扩展包在同一文件夹中(在步骤35中,是)并且是未处理的扩展包(在步骤36中,是)时,文件夹扫描单元10执行对该未处理的扩展包的加载处理(步骤33)。
[0068]这里,重复步骤33-36的处理,直至关于扩展包的定义信息的冲突被解决。
[0069]当在相同文件夹中不存在正在讨论中的扩展包所相关的扩展包(在步骤35中,否)时,或者当在正在讨论中的扩展包所相关的扩展包中不存在未处理的扩展包(在步骤36中,否)时,执行对在模块文件夹中的另一未处理的扩展包的加载处理(该处理返回至步骤31)。
[0070]以上是处理I的过程。同时,上述过程是本示例性实施例的示例,并且处理I仅应当使得能够在没有关于扩展包的定义信息的冲突,而在正确相关性关系的情况下,从公共扩展包布置文件夹加载扩展包。
[0071]因此,当模块文件夹中的所有扩展包的加载处理(处理I)完成时,文件夹扫描单元10移动至个体文件夹中的扩展包的加载处理(步骤2)。
[0072][处理2]
[0073]接下来,将使用图4来描述用于执行对个体文件夹的加载处理的处理2。
[0074]在图4中,文件夹扫描单元10确认未处理的子文件夹是否在个体文件夹中(步骤41)。
[0075]当存在未处理的子文件夹(在步骤41中,是)时,文件夹扫描单元10移动至子文件夹(步骤42)。
[0076]当不存在子文件夹(在步骤41中,否)时,结束加载处理。
[0077]在文件夹扫描单元10已经移动至子文件夹之后,确认在子文件夹中是否存在未处理的扩展包(步骤43)。
[0078]当发现未处理的扩展包时,定义改变单元14改变关于扩展包的定义信息(步骤44)。
[0079]在图2中所示的示例中,在步骤44中所指示的改变关于扩展包的定义信息时,子文件夹名被添加到作为扩展包的定义名的符号名的头部,并且该信息被添加到符号名改变管理表60。
[0080]此后,冲突检测单元15参考扩展包信息表50和符号名改变管理表60,并且检查冲突的存在或不存在(步骤45)。这里,继续步骤44和45,直至关于扩展包的定义信息的冲突被解决。同时,由于冲突的存在而在这些步骤中已被改变的定义信息对应于第三定义信息。
[0081]当没有发生关于扩展包的定义信息的冲突(在步骤45中,否)时,加载处理单元11执行读取处理(步骤46)。
[0082]当存在关于扩展包的定义信息的冲突(在步骤45中,是)时,关于扩展包的定义信息再次改变(该处理返回至步骤44)。
[0083]例如,在步骤45中,当存在关于扩展包的定义信息的冲突时,诸如下划线的符号和字符被添加到扩展包的符号名,并且符号名被进一步改变成不产生冲突的值(步骤44)。
[0084]当加载处理完成时,扩展包信息被分配在信息存储单元13中,并且该信息被添加到扩展包信息表50和符号名改变管理表60。
[0085]相关性解决处理单元12针对加载的扩展包执行相关性扩展包的关联处理(步骤47)。在这种情况下,当加载的扩展包和加载的扩展包所相关的扩展包存在于同一文件夹中时,扩展包信息表中的各个扩展包的相关性符号名被重写成改变之后的值,使得能够参考其符号名已经改变的同一文件夹中的扩展包。
[0086]当在同一文件夹中存在加载的扩展包所相关的扩展包(在步骤48中,是)时,并且前一扩展包是未处理的扩展包(在步骤49中,是)时,文件夹扫描单元10执行前一扩展包的加载处理(步骤46)。
[0087]当在同一文件夹中不存在加载的扩展包所相关的扩展包(在步骤48中,否)或者不存在未处理的扩展包(在步骤49中,否)时,执行另一未处理的扩展包的加载处理(该处理返回至步骤41)。
[0088]当在已经重复了上述步骤43-49之后在子文件夹中没有未处理的扩展包时,该处理移动至另一子文件夹,并且执行加载处理(该处理返回至步骤41)。
[0089]以上是处理2的流程。同时,上述流程是本示例性实施例的示例,并且在处理2中,仅应当使得能够从具有正确相关性关系并且没有关于扩展包的定义信息的冲突的个体扩展包布置文件夹加载扩展包。
[0090]当上述处理I和处理2完成时,所有扩展包的加载完成。
[0091]如上所述,根据本发明的示例性实施例的由冲突避免装置进行的处理仅连续地加载文件夹中的扩展包。结果,在处理I中加载的扩展包能够由整个模块管理基础设施共享,并且在处理2中加载的个体文件夹下面的子文件夹中的扩展包能够以与文件夹中的扩展包形成相关性关系的方式进行操作。
[0092]在本发明中,通过基于每个扩展包所属于的文件夹来改变定义信息并且使空间分离来解决由在同一空间中被参考的模块管理基础设施所管理的模块所引起的对定义信息的错误参考和冲突。结果,能够避免关于扩展包的定义信息的冲突,并且同时,能够通过用文件夹分离扩展包来在模块管理基础设施上实现扩展包的共享和个体化。
[0093]而且,根据本发明的示例性实施例的模块管理设备,在OSGi中,变得能够通过在扩展包被加载时在存储器上重写定义信息来执行没有冲突的加载并且构建正确的相关性关系。
[0094]通常,扩展包有必要包括在整个基础设施中是唯一的一对版本号和符号名的模块。因此,当具有相同版本号和符号名的扩展包已经在模块管理基础设施上时,后添加的扩展包由于冲突所引起的错误而不被加载。
[0095]在一般模块管理基础设施中,能够根据设定来加载可能引起冲突的扩展包。在这种情况下,将仅通过称为扩展包ID的按照加载顺序给予的ID (标识)来区分扩展包。因此,难以正确地识别预期扩展包。
[0096]这样,在一般模块管理基础设施中,虽然拒绝已经冲突的扩展包成为管理的对象,但是在假定使用拒绝的扩展而已经添加的另一扩展包构建与先前加载的扩展包的相关性关系。因此,可以根据情况来改变扩展包的参考关系,而引起不期望的执行结果。
[0097]先前,为了解决这样的一般模块管理基础设施的问题,有必要创建在考虑扩展包的符号名的冲突的情况下创建扩展包,并且在发生冲突时对其一点一点地进行修正。
[0098]在一般模块管理基础设施中,例如,当提供系统的特定功能的模块组被移动至特定模块管理基础设施上时,并且如果已经基于OSS (开放源软件)等创建了包括在作为黑盒子的模块组中的扩展包,则可以想到引起定义信息与已经基于同一 OSS创建并且已经登记的扩展包的冲突并且无法登记正在讨论中的扩展包的情况。
[0099]在一般模块管理基础设施中,当引起这种情况时,根据该扩展包中的定义信息,使用已经相互冲突的扩展包之中的已经先登记的扩展包来配置相关性关系。然而,已经相互冲突的两个扩展包并不总是完全相同。因此,当两个扩展包提供不同的功能或者与不同的扩展包相关时,作为整个模块组的行为将由于组成不同于假定的相关性关系而改变。
[0100]根据本发明的示例性实施例,在执行通过针对每个功能来划分程序而进行的模块的综合管理的模块管理基础设施中,模块以被分离的方式进行分配的,并且与一般管理基础设施相比,加载顺序被改变。因此,能够在不修正模块本身的情况下,避免在加载时在存储器上动态地改变定义信息的模块(扩展包)的定义名(符号名)的冲突和由此引起的错误相关性关系的程式化。
[0101]而且,在本发明的示例性实施例中,在改变定义信息时,使用用于重新附连不引起冲突的定义信息的方法,通过诸如在加载时改变扩展包的定义名,并且通过在对其进行分析之后将其重新程式化来将文件夹中的扩展包统一为一个扩展包,来避免关于扩展包的定义信息的冲突。
[0102]结果,能够实现由于到目前为止变得可能的模块冲突而未操作的具有大量复杂相关性关系的模块组的同时操作以及由此系统的扩展、操作和维护的简易性。
[0103]同时,在本发明的示例性实施例的描述中使用的示例是一个示例,并且不限制本发明的范围。
[0104]将举例来详细地描述本发明。此外,在每个示例中所使用的扩展包信息表和符号名改变管理表具有与在图5和图6的表上所指示的值不同的信息。然而,为了清楚地指定要更新的部分信息和项目名称,将参考扩展包信息表50和符号名改变管理表60来进行描述。同时,将省略反映实际值的表。
[0105](示例I)
[0106]将使用图7-10来描述示例I。示例I是在模块管理基础设施A71上进行操作的模块组A72和在模块管理基础设施B73上进行操作的模块组B74移植到模块管理基础设施101并且使其同时进行操作的示例。
[0107](结构)
[0108]在图1中示出了模块管理基础设施A71和模块管理基础设施B73中的扩展包的框图。图8示出了在扩展包a002、扩展包b002和扩展包x002之间的关系。图9示出了模块管理基础设施ClOl进行操作的环境中的扩展包aOOl、a002、b001和b002的文件夹结构。
[0109]如图7A中所示,模块组A72包括扩展包aOOl和扩展包a002。扩展包aOOl参考扩展包a002的包p。如图7B中所示,模块组B74包括扩展包b001和扩展包b002。扩展包b001参考扩展包b002的包P。
[0110]如图8中所示,以接续扩展包x002的方式作出扩展包a002和扩展包b002 二者。因此,除了公共包P之外,扩展包a002和扩展包b002分别具有不同的类。扩展包a002和扩展包b002具有在关于扩展包的定义信息中公共的符号名sname和版本号1.0。
[0111](操作)
[0112]图10示出了示例I中的扩展包的加载之后的模块管理基础设施ClOl的状态。图10的上部分是其中符号名没有改变的一般示例,并且下部分是其中符号名被改变的根据本发明的示例。图10的上部分通过点划线的箭头示意性地示出了虽然扩展包bOOl应当参考后加载的扩展包b002,但是其正在参考先加载的扩展包a002,导致关于扩展包的定义信息的冲突。
[0113]将使用图10的下部分的图来描述根据本发明的示例I。
[0114]当模块管理基础设施ClOl开始时,文件夹扫描单元10检查预先设定为扩展包的存储位置的模块文件夹,并且开始扩展包的加载。
[0115]在示例I中,由于在模块文件夹中没有分配扩展包,所以不执行加载处理。因此,文件夹扫描单元10在这里什么也不执行,并且然后开始存储在个体文件夹下面的子文件夹中的扩展包的加载。
[0116]首先,文件夹扫描单元10加载个体/A文件夹下面的模块组A72。
[0117]在模块组A72的加载中,当文件夹A中的扩展包被加载时,定义改变单元14对扩展包的符号名的头部添加“A”,并且然后进行加载。结果,当扩展包a002被加载时,扩展包aOOl的符号名将是AaOOl。那时,冲突检测单元15参考图5的扩展包信息表50和图6的符号名改变管理表60,并且检查已经加载的扩展包与新加载的扩展包之间的冲突的存在或不存在。
[0118]在示例I中,由于不存在此时读取的扩展包,所以加载在不生成错误的情况下继续。[0119]当扩展包的加载处理继续时,扩展包被布置在信息存储单元13中,并且信息被添加到存储器上的扩展包信息表50和符号名改变管理表60。
[0120]与扩展包a002的加载类似,定义改变单元14将扩展包a002的符号名改变成Asname,并且冲突检测单元15检查冲突的存在或不存在,并且信息存储单元134将信息添加到表。
[0121]此时,相关性解决处理单元12确认扩展包aOOl正在参考扩展包a002,并且执行将扩展包信息表50的相关扩展包名从aOOl变成AaOOl的关联处理。
[0122]接下来,文件夹扫描单元10加载在个体/B文件夹下面的模块组B74。
[0123]在扩展包bOOl的加载中,定义改变单元14将扩展包bOOl的符号名改变成BbOOl。冲突检测单元15确认与已加载扩展包的冲突,并且对信息存储单元13添加扩展包信息。这里,在扩展包b002的加载中,定义改变单元14将扩展包b002的符号名变成Bsname。然后,冲突检测单元15对冲突进行确认,并且对信息存储单元13的表添加信息。由于扩展包bOOl这里还与扩展包b002相关,所以相关性解决处理单元12将扩展包信息表50中的扩展包b002的相关扩展包名从b001变成BbOOl。
[0124]结果,模块组A72和模块组B74在保持各个扩展包之间的相关性关系的同时在模块管理基础设施ClOl中进行加载,并且独立地进行操作,因为其已在模块管理基础设施A71和模块管理基础设施B73中进行了操作。
[0125]在示例I中,通过改变个体/A文件夹的扩展包a002和个体/B文件夹的扩展包b002 (图10的下部分)的符号名来避免关于扩展包的定义信息的冲突。如果符号名还没有改变,则在扩展包a002的符号名sname和扩展包b002的符号名sname之间将发生冲突,弓丨起错误(图10的上部分)。
[0126]这里,个体/A文件夹和个体/B文件夹的加载顺序取决于模块管理基础设施的实现。在本发明的示例性实施例中,即使模块组B74被先加载,也对模块组A72中的扩展包执行符号名的改变处理,并且很好地操作。
[0127](示例2)
[0128]示例2是其中三个扩展包在模块管理基础设施中操作且与两个扩展包具有参考和被参考关系的扩展包的符号名被改变的示例。
[0129]在图11中示出了示例2的文件夹结构,并且在图12中示出了总体框图。图12的上部分是其中符号名未被改变的一般示例,并且下部分是根据本发明的示例性实施例的其中符号名被改变的示例。图12的上部分用点划线的箭头示意性地显示虽然扩展包d001应参考稍后加载的扩展包d002,但其正在参考先前已加载的扩展包a002,导致关于扩展包的定义信息的冲突。
[0130](结构)
[0131]将使用图12的下部分图来描述示例2。在包括三个扩展包的模块组D113中,各个扩展包被称为扩展包d001、扩展包d002和扩展包d003。假设扩展包d001参考扩展包d002的包P,并且扩展包d002参考扩展包d003。
[0132]扩展包d002如扩展包a002和扩展包b002接续扩展包x002,并且除了公共包p之
夕卜,还具有特定类。
[0133]还假设关于扩展包d002的扩展包定义信息具有与扩展包a002共有的符号名sname,并且因此,当扩展包d002和扩展包a002 二者被加载时,如果留下没有被改变,则发生冲突。
[0134](操作)
[0135]将使用图12的下部分的图来描述根据本发明的示例2的描述。
[0136]首先,模块管理基础设施Clll完成模块文件夹的加载处理,并且执行模块组Dl 13的加载处理。
[0137]模块组D113被包括在个体/D文件夹中。首先,文件夹扫描单元10加载扩展包dOOlo
[0138]定义改变单元14将扩展包dOOl的符号名改变成DdOOl。冲突检测单元15确认扩展包定义信息的冲突没有发生,并且在信息存储单元13中分配扩展包信息,并结束加载。
[0139]在扩展包d002的加载处理中,通过定义改变单元14将d002的符号名改变成Dsname并且执行加载,避免了扩展包d002和扩展包a002的冲突。此时,相关性解决处理单元12将关于已经加载并参考扩展包d002的扩展包dOOl来将存储器上的扩展包信息表50的参考目标重写成Dsname。
[0140]最后,执行扩展包d003的加载处理。在扩展包d003的加载处理中,定义改变单元14将扩展包d003的符号名改变成Dd003。然后,冲突检测单元15确认不存在冲突,并且使得扩展包被分配在信息存储单元13中。
[0141]此后,在符号名改变管理表60中,相关性解决处理单元12确认其所相关的扩展包d002的符号名已经被改变。然后,相关性解决处理单元12将扩展包信息表50上的扩展包d003的参考的扩展包的符号名改变成Dsname。
[0142]因此,扩展包dOOl和扩展包d003对扩展包d002的参考信息被改变,并且加载处
理完成。
[0143](示例3)
[0144]示例3是个体文件夹下面的子文件夹中的扩展包参考模块文件夹的扩展包的示例。
[0145]在图13中示出了示例3的文件夹结构,并且在图14中示出了加载处理的完成的时间点处的整体框图。图14的上部分是其中符号名没有改变的一般示例,并且下部分是改变符号名的根据本发明的示例性实施例的示例。在图14的上部分中,点划线的箭头示出了虽然扩展包e001应当参考后加载的扩展包e002,但是其正在参考先加载的扩展包a002。结果,示意性地示出了关于扩展包的定义信息的冲突发生。同时,在图14中以划分成两部分的方式来画出模块组E142的原因在于区分那些扩展包存在于其中的文件夹的差异以及符号名的存在或不存在。在以下描述中,假设已经加载了模块组A72。
[0146](结构)
[0147]模块组E142包括扩展包e001、扩展包e002和扩展包e003的三个扩展包。假设如扩展包a002以接续扩展包x002的方式来作出扩展包e002。假设由于扩展包a002和扩展包e002具有公共符号名sname,所以当被同时加载时,发生冲突。扩展包e001参考扩展包e002的包p,并且扩展包e002参考扩展包e003。
[0148]然而,在这方面,扩展包e003还能够由其他扩展包用作提供公共功能的扩展包。还假设属于模块组E142的所有扩展包已经被存储在模块管理基础设施E (未示出)中的同一目录中。同时,虽然扩展包eOOl和扩展包e002被布置在个体/E文件夹中,但是扩展包e003被布置在模块文件夹中,使得其也能够由其他扩展包参考,因为它是提供公共功能的扩展包。
[0149](操作)
[0150]将使用图14的下部分的图来描述根据示例3的模块管理设备的操作。
[0151]首先,模块组E142被移动至模块管理基础设施C141,并且然后进行加载。当模块管理基础设施C141开始加载处理时,文件夹扫描单元10首先在模块文件夹中加载扩展包e003o
[0152]在模块文件夹中不改变符号名。因此,冲突检测单元15确认不存在与已经加载的扩展包的冲突,并且然后在将关于扩展包e003的信息存储在信息存储单元13中并将其添加到扩展包信息表50之后结束加载处理。在相关性解决处理单元12中,确认扩展包e003仅用于被参考的目的。
[0153]由此完成模块文件夹的扩展包的全部加载。文件夹扫描单元10的处理移动至在个体文件夹下面的模块组的加载处理。
[0154]在个体/E的加载处理中,定义改变单元14首先将扩展包eOOl的符号名改变成EeOOl0然后,冲突检测单元15确认不存在关于扩展包的定义信息的冲突,并且毫无问题地完成加载。
[0155]在扩展包e002的加载中,定义改变单元14将扩展包e002的符号名变成Esname,并且扩展包信息在冲突检测单元15已经确认不存在冲突之后被存储在信息存储单元13中。在这里,相关性解决处理单元12更新参考扩展包e002的扩展包eOOl的扩展包信息表50中的参考信息,使得改变之后的符号名被参考。然而,在这方面,扩展包e002参考的模块文件夹中的扩展包e002的存储器上的参考信息未被改变,因为扩展包e003仅仅用于被参考的目的。
[0156]结果,存在于个体文件夹下面的子文件夹中的扩展包能够参考模块文件夹中的扩展包e003,其具有公共特征。
[0157](示例4)
[0158]示例4是其中通过为在个体文件夹下面的每个子文件夹准备空扩展包而不是改变子文件夹中的所有扩展包的符号名,并且通过将该文件夹中的扩展包嵌入该空扩展包中而创建新扩展包来避免定义信息的冲突的示例。
[0159]在示例4中,在由独立模块管理基础设施将每个扩展包在子文件夹中加载一次并且解决扩展包之间的相关性关系之后,其被嵌入空扩展包中作为不具有扩展包定义信息的模块。
[0160]子文件夹名的符号名位于在空扩展包的定义信息上。另外,仅提取在外面(在子文件夹外面)文件夹中的扩展包的相关性并且被写入相关性信息。结果,针对个体文件夹的每个子文件夹创建独立扩展包,并且因此避免了当在模块管理基础设施上同时执行加载时发生的关于扩展包的定义信息的冲突。
[0161]下面将使用特定示例来进行描述。
[0162]在图15中示出了示例4的文件夹结构图,并且在图16中示出了总体框图。图16的上部分是其中符号名没有改变的一般示例,并且下部分是改变符号名的根据本发明的示例。同时,在图16中,以划分成两个部分的方式来画出模块组J162的原因在于对那些扩展包存在于其中的文件夹之间的差异进行分类,或者对符号名改变的存在或不存在进行分类。
[0163]在示例4中,使得在模块管理基础设施J (未示出)中进行操作的模块组J162和在模块管理基础设施K (未示出)中进行操作的模块组K163在模块管理基础设施C161中进行操作。
[0164](结构)
[0165]模块组J162包括扩展包jOOl、扩展包j002和扩展包j003。假设扩展包jOOl与扩展包j002的包p相关,并且扩展包j002与扩展包j003的包pp相关。扩展包j002具有符号名sname和包p,并且扩展包j003具有符号名sname2和包pp。假设扩展包j003提供
一般功能。
[0166]模块组K163包括扩展包kOOl和扩展包k002,并且扩展包kOOl与扩展包k002的包P相关。扩展包kOOl具有符号名kOOl,并且扩展包k002具有符号名sname和包p。
[0167]扩展包j002和扩展包k002是继续扩展包x002而创建的,并且除公共包p之外还具有最初开发的功能。
[0168]在示例4中,准备空扩展包z 170。虽然空扩展包z 170具有用于扩展包定义信息和用于模块的存储部分,但假设二者都是空的。
[0169](操作)
[0170]将使用图16的下部分的图来描述根据示例4的模块管理设备的操作。
[0171]首先,模块组J162和模块组K163被移动至模块管理基础设施C161。然而,在这方面,因为提供一般功能,所以假设扩展包j003被布置在作为公共文件夹的模块文件夹中。
[0172]在示例4中,当在模块管理基础设施C161上执行加载处理时,个体文件夹下面的每个子文件夹由独立的模块管理基础设施C161上的定义改变单元14读取一次。此后,执行扩展包信息的分析,并且执行扩展包的重新组织处理。
[0173]首先,在个体/J文件夹中的模块组J162的加载处理中,加载扩展包jOOl和扩展包j002,并且根据关于扩展包的定义信息来设定从扩展包jOOl到扩展包j002的相关性关系。关于从扩展包j002到扩展包j003的相关性,假设这里仅其与扩展包j003相关的事实被确认,因为扩展包j003存在于模块文件夹中而不是在个体/J文件夹中。
[0174]此时,准备空扩展包zl70。虽然空扩展包zl70具有用于扩展包定义信息和用于模块的存储部分,但是假设其当前是空的。
[0175]这里,作为前一步骤中的独立的模块管理基础设施C161上的读取的结果,已经发现扩展包jOOl、扩展包j002及其之间的相关性关系。因此,从扩展包jOOl和扩展包j002取出扩展包定义信息,并且仅模块部分被布置在空扩展包zl70的模块存储部分中。结果,通过将其存储在同一扩展包中,从扩展包jOOl至扩展包j002的相关性关系将在加载时被解决。此外,关于对扩展包j003的相关性,相关性信息的描述被移动至空扩展包zl70的扩展包定义部分。
[0176]因此,通过将模块组J162包(wrap)在空扩展包zl70中来完成扩展包zjl71。然而,在这方面,使得扩展包zj 171的符号名称为文件夹名J。
[0177]完成的扩展包zj 171被移动至模块管理基础设施C161,由冲突检测单元15参考扩展包信息表50来进行未发生冲突的确认,并且由加载处理单元11来执行加载处理。
[0178]由于扩展包zjl71是仅与扩展包j003相关的扩展包,所以其在将已加载扩展包信息存储在信息存储单元13中之后被添加到扩展包信息表50。
[0179]此后,构建与已经由相关性解决处理单元12先加载的扩展包j003的相关性关系,并且加载处理完成。在加载处理中,新组成的扩展包zjl71由类加载器读取,并且加载作为其内容的模块jOOl和模块j002的包。
[0180]当模块jOOl和j002被独立加载时,对每个模块使用一个类加载器,并且通过模块管理基础设施C161进行参考。相反,在如本示例的集成到一个扩展包中的结构中,在一个类加载器中进行包的参考。
[0181]类似地,关于模块组K163,使用空扩展包zl70来创建具有符号名K的扩展包zkl72,并且其被加载在模块管理基础设施C161上。
[0182]在扩展包zj 171和扩展包zkl72中,没有发生符号名的冲突,并且也没有构建错误的相关性关系。因此,根据本发明,在保持个体文件夹下面的模块组的独立性的同时完成了加载处理。
[0183]根据上述示例,如下(I) - (4)来概括根据本发明的示例性实施例的模块管理设备、模块管理系统和模块管理方法的特征。
[0184]( I)在模块管理基础设施中,能够在没有扩展包主体的修改的情况下解决关于扩展包的定义信息的冲突。
[0185](2)能够规避由于关于扩展包的定义信息的冲突而发生的扩展包之间的不期望的相关性关系的构建。
[0186](3)能够避免扩展包之间的定义信息的冲突,并且使得具有复杂相关性关系的多个模块组同时进行操作。
[0187](4)根据扩展包的分配位置,能够将其分类成被与其他扩展包共享的扩展包和个体扩展包。
[0188]因此,根据本发明的示例性实施例,可以防止应用更新时的由于关于扩展包的定义信息的冲突而引起的非预期相关性关系,并且通过对用于每个模块组的更新的影响进行局部化来实现操作、管理和扩展的容易性。
[0189]也就是说,根据本发明的示例性实施例,可以避免包括相同定义信息的关于扩展包的定义信息的冲突,并且使得两个扩展包进行操作,导致具有复杂相关性关系的多个模块组同时地且独立地操作。
[0190]同时,根据本发明的示例性实施例的管理方法能够应用于使得计算机使用程序来执行方法的程序以及软件系统、应用服务器和应用等。
[0191]使用根据本发明的管理方法的模块管理设备、模块管理系统、模块管理方法和程序能够应用于采用模块管理基础设施的应用服务器的开发和在其上面操作的大规模应用的开发。例如,当在另一模块管理基础设施上正常地操作的模块组被移植或者在已经构建的环境中新添加了模块时,实现了过渡的容易性。具体地,能够通过避免扩展包的符号名的冲突并使得能够在不修正模块本身的情况下实现扩展包的共享和个体化来实现过渡的容易性。
[0192]虽然已经依照上述示例性实施例和以上示例描述了本发明,但本发明不仅限于上述示例性实施例的结构和操作,并且当然,本发明包括在本发明的范围内能够由本领域的技术人员实现的各种变换和修改。
[0193][附图标记的描述]
[0194]I 冲突避免装置
[0195]10文件夹扫描单元
[0196]11加载处理单元
[0197]12相关性解决处理单元
[0198]13信息存储单元
[0199]14定义改变单元
[0200]15冲突检测单元
[0201]21模块管理基础设施
[0202]22模块组A
[0203]23模块组B
[0204]24扩展包a
[0205]25扩展包b
[0206]26、29 扩展包 c
[0207]27扩展包d
[0208]28扩展包e
[0209]50扩展包信息表
[0210]60符号名改变管理表
[0211]71模块管理基础设施A
[0212]72模块组A
[0213]73模块管理基础设施B
[0214]74模块组B
[0215]101、111、141、161模块管理基础设施C
[0216]113 模块组 D
[0217]142 模块组 E
[0218]162 模块组 J
[0219]163 模块组 K
[0220]170空扩展包z
[0221]171 扩展包 zj
[0222]172 扩展包 zk
[0223]提供先前的实施例描述以使得本领域的技术人员能够实现和使用本发明。此外,对这些示例性实施例的各种修改对于本领域的技术人员而言将是显而易见的,并且在本文中定义的一般原理和特定示例可以在不使用创造性才能的情况下应用于其他实施例。因此,本发明并不意在限于本文所述的示例性实施例,而是被给予由权利要求和等价物的限制定义的最宽范围。
[0224]此外,应当注意,本发明人的意图是保持要求保护的发明的所有等价物,即使权利要求在审查期间被修订。
【权利要求】
1.一种模块管理设备,在模块管理基础设施开始执行对下述的综合管理时:具有由用面向对象的语言描述的程序形成的模块和包括所述模块的属性的定义信息的扩展包;以及包括多个所述扩展包的模块组,在从文件夹加载所述扩展包时,并且 在所述定义信息在所述扩展包中的不同扩展包之间发生冲突时, 通过动态地改变所述定义信息来对所述扩展包的参考关系进行协调。
2.根据权利要求1所述的模块管理设备,其中,所述定义信息是所述扩展包的符号名。
3.根据权利要求1所述的模块管理设备,包括:文件夹扫描单元,所述文件夹扫描单元用于扫描文件夹,所述扩展包被分配到所述文件夹; 加载处理单元,所述加载处理单元用于读取所述扩展包; 相关性解决处理单元,所述相关性解决处理单元用于对所述扩展包的参考关系进行协调; 信息存储单元,所述信息存储单元用于存储关于所述扩展包的信息; 定义改变单元,所述定义改变单元用于改变关于所述扩展包的所述定义信息;以及冲突检测单元,所述冲突检测单元用于通过由所述定义改变单元改变的所述定义信息来检测冲突是否发生; 所述冲突检测单元验证关于已经由所述加载处理单元加载的扩展包的第一定义信息和关于由所述文件夹扫描单元检测的未处理的扩展包的第二定义信息是否相互冲突;并且在所述第一定义信息和所述第二定义信息冲突时, 由所述定义改变单元将所述第二定义信息改变成新的第三定义信息, 由所述相关性解决处理单元来协调在所述第一定义信息与所述第三定义信息之间的参考关系,并且 由所述信息存储单元来更新关于所述第三定义信息的参考关系和信息。
4.根据权利要求3所述的模块管理设备,其中,在所述符号名被改变时,所述定义改变单元根据存储所述扩展包的所述文件夹的名称来对所述符号名添加符号。
5.根据权利要求2所述的模块管理设备,还包括:第一表,所述第一表包括所述扩展包中的不同扩展包之间的相互参考关系和所述符号名; 第二表,所述第二表包括与所述扩展包的文件路径相关联的所述定义信息的改变历史;以及 改变所述第一和所述第二表上的所述定义信息。
6.根据权利要求1所述的模块管理设备,在从存储所述扩展包的公共文件夹加载所述扩展包以使得所述扩展包由外部应用共享时,并且从存储所述扩展包的个体文件夹加载以不由外部应用共享时, 从处于使得能够被公开的状态的所述公共文件夹加载所述扩展包,并且从处于使得能够不被公开的状态的所述个体文件夹加载所述扩展包。
7.根据权利要求6所述的模块管理设备,以分成所述公共文件夹和所述个体文件夹的方式来加载包括在所述模块组中的相同模块组中的多个所述扩展包。
8.根据权利要求1所述的模块管理设备,将包括在多个所述扩展包中的模块布置在具有空白定义信息部分和空白模块存储部分的空扩展包中,同时保持所述扩展包的参考关系,并且通过对所述空扩 展包给予定义信息来协调所述定义信息的参考关系以便不引起冲关。
9.根据权利要求1所述的模块管理设备,包括所述模块管理设备。
10.一种模块管理方法,在模块管理基础设施开始执行对下述的综合管理时:具有由用面向对象的语言描述的程序形成的模块和包括所述模块的属性的定义信息的扩展包;以及包括多个所述扩展包的模块组,在从文件夹加载所述扩展包时,并且 在所述定义信息在所述扩展包中的不同扩展包之间发生冲突时, 通过动态地改变所述定 义信息来协调所述扩展包的参考关系。
【文档编号】G06F21/00GK103677894SQ201310430522
【公开日】2014年3月26日 申请日期:2013年9月18日 优先权日:2012年9月20日
【发明者】大内政义 申请人:日本电气株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1