发明内容
为解决以上问题,本发明提供了一种可以支持更大粒度的构件,且构件组装运行效率高的基于黑盒的大粒度Java构件组装方法。
一种基于黑盒的大粒度Java构件组装方法,包括以下步骤:
1)将外部的第三方应用软件包进行构件设计,并把设计好的构件导入到构件库中;
2)用可视化的方法将构件库中的构件的进行黑盒组装,
其中,所述步骤1)中的构件设计使用了采用Java语言来实现的胶水代码。
进一步的,所述构件为原子构件或复合构件。
进一步的,所述步骤1)包括如下步骤:
(1)编写胶水代码,将外部的第三方应用软件包进行组装,提取出构件;
(2)构件接口提取;
(3)构件接口配置文件生成;
(4)把设计好的构件导入到构件库中。
更进一步的,所述第三方应用软件包为通用方法或面向领域的业务流程。
进一步的,所述步骤2)中构件模型包括原子构件、构件端口、连接子和复合构件,其中原子构件为最基本的可组装单元,构件端口为构件的输入端口或输出端口,连接子为用于连接各个构件端口的连接子,复合构件是由多个构件组装而成,并整体作为一个复合体出现的构件。
进一步的,所述步骤3)是在构件组装IDE环境下用连接子对构件进行连接,其中构件组装IDE环境包括构件设计工具,构件可视化组装界面,组装有效性验证模块,组装代码生成引擎,构件执行引擎,构件运行时分析引擎,构件部署引擎。
进一步的,所述组装方法的执行是根据构件组装脚本直接生成代码,以编译代码的形式运行的。
更进一步的,所述构件组装脚本,包括构件的逻辑组装脚本和可视化组装脚本两个部分。
进一步的,所述构件运行时分析引擎,是指用于测试构件组装应用的正确性和性能瓶颈的模拟框架。
本发明公开了一种基于黑盒的大粒度Java构件组装方法,不同于传统的软件开发方法,通过该方法,可以可视化地对构件进行组装,形成一个应用。开发过程中不需要考虑构件的具体实现,只需要对构件的接口进行品拼接即可,该构件开发方法比传统的方法相比,可以支持更大粒度的构件,如面向某个应用领域的构件。该构件组装方法,涉及了基于构件软件开发的整个生命周期,是一套完整了构件开发解决方案。和现在的一些方法相比,该方法在***可扩展性,运行效率和调试支持上都有更好的表现,并且对组装正确性进行了验证,有效地减少了软件开发中的误操作,提高了软件开发的效率和质量。
具体实施方式
以下是该组装方法实施所涉及的各项内容:
1.构件模型
该构件模型如图2所示,它有三个基本要素,即原子构件AtomicComponent、构件端口Port、连接子Connector。AtomicComponent对应某个具体构件(该构件模型中复合构件CompoundComponent可以作为原子构件来使用,因此可以把复合构件作为一种比较特殊的原子构件来看待,或者说复合构件是原子构件的一个子集),它里面有多个端口,包括输入端口和输出端口。Port分为输入端口和输出端口。其中,每个输入端口对应一个方法调用,可以往里面传入参数列表;输出端口对应的为一个输出参数列表。Connector用于连接各个构件的端口。
2.构件设计工具
该构件组装方法中,构件的设计分为四个步骤:
1)编写胶水代码,将外部的第三方应用软件包进行组装,提取出较通用的,或者面向某个应用的构件,当然也可以不依赖于第三方软件包,而直接编写一些较通用的胶水代码。该过程可以将一些通用方法或者面向领域的业务流程进行封装。
2)构件接口提取,该阶段将提取胶水代码的接口,并对这些接口进行配置,选择暴露哪些接口,以何种形式暴露,如接口可以暴露为输出端口、输入端口。
3)构件接口配置文件生成,该过程将根据第2步的构件接口提取设置,生成构件配置文件,该文件中将包含构件的接口信息。
4)在构件设计的最后阶段,***会自动把设计好的构件导入到***的构件库中。
由于在该组装方法中,在构件设计阶段时,使用了胶水代码,它可以对企业现有的软件资源进行灵活的组装整合。原则上这里的胶水代码可以采用任何语言来实现,而这里采用的是Java语言,因为这样就可以充分利用现有的Java软件资源,该方法支持将EJB,JavaBean,dll,jar,COM,和WebService等整合到大粒度的业务构件之中。从而可以充分地使用企业内部和开源世界中的软件资源,同时具备了很大的灵活性和可行性。这对构件组装的可扩展性是很大的一个提升。
3.构件组装过程
该构件组装过程,用到了构件组装IDE环境。这些构件都是以黑盒形式出现的,这些黑盒构件都是基于上述黑盒构件模型的,因为这些构件的内部实现对用户来说是隐藏的,用户所能看到的只是构件的总体说明,用途,可靠性等声明,用户还可以看到的这些黑盒构件接口的详细说明,包括接口类型,接口参数等信息,这些信息便于用户在进行构件的黑盒组装时,了解构件的接口功能。
在构件组装阶段,可用可视化的方法进行构件的黑盒组装,组装的过程,就是用连接子对构件进行连接,具体的步骤如下所示:
1)添加构件,该过程即从待组装构件里面选择要添加的构件,将其放到构件组装区,此时构件组装区就会可视化地显示该构件,及构件的各种组装相关信息。
2)添加连接子,添加连接子的时候,需要选择源接口和目标接口,这样就可以把构件的两个接口进行组装。
3)构件删除,选择要删除的构件进行删除操作,会删除该构件和与该构件接口连接的所有连接子。
4)连接子删除,选择要删除的连接子进行删除操作。
5)构件适配:在添加连接子的时候,可能会发生构件失配的情形,此时可以调整传入参数的顺序(一种较常见的失配),或者通过代码,对构件的接口进行适配。
6)构件组装验证,在构件适配完成之后,将对构件的组装进行验证,根据构件的功能属性,和连接属性,对组装的正确性进行验证,若发现构件组装出错,则给出出错信息,这有效地较少了构件组装时的一些误操作。
该构件组装过程也支持复合构件的组装,支持将一个组装好的应用保存为一个复合构件。其操作的具体步骤如下所示:
1)为一个构件组装应用添加端口,这些端口即为之后复合构件所暴露的接口。
2)用连接子连接步骤1所加端口和组装应用中的接口。
3)将这个复合构件保存到构件库。
4)该复合构件,现在的使用方法和原子构件的组装方法完全相同,可以通过以上构件组装步骤进行组装。
4.构件组装脚本
本组装方法中的构件组装脚本,包括两个部分:一个是构件的逻辑组装脚本,另外一个是构件的可视化组装脚本。把组装脚本划分为两个部分,有利于实现业务层组装和构件组装可视化的分离。
构件的逻辑组装脚本,记录的是构件之间的逻辑组装信息,即哪个构件和其他构件相连,这个接口和其他构件的哪个接口相连这些具体的构件组装信息。如下为逻辑组装脚本的描述方式:首先在脚本中声明参与组装的构件,每个构件有唯一的构件id,可以自定义构件显示名称,还有该构件对应的实现代码;后面的连接子,则表达了这些参与组装的构件,具体是如何进行组装的,这里每个连接子也有唯一的id,连接子需说明连接的起始端口和目的端口,这里的端口表达为Component ID#PortID的形式,ComponentID表示的是这个端口所在的构件,PortID则是该端口在构件中对应的ID号。
<AtomicComponent id=″1″name=″url″source=″string.Trim″/>
<Connector id=″1″from=″1#51″to=″2#01″mapped=″false″byValue=″false″/>
可视化组装脚本,记录的为构件组装的界面信息,如参与组装的各构件在组装界面中的具***置和布局等。其描述方式如下所示:它描述了连接子和构件在界面上的显示效果。
<jtcomponent id=″1″type=″Connectors″>
<polyline From=″151″id=″1″title=″Connector1″stroke-width=″1.5″points=″536,203 546,203
546,203628,203″To=″201″/>
</jtcomponent>
<jtangcomponents id=″3″type=″Components″>
<component transform=″translate(37 166)″type=″block″id=″4″name=″password″>
<port transform=″translate(030)″type=″inpin″id=″1″name=″TRIM″title=″TRIM″>
<path class=″portStyle″d=″M-10,0 L0,0 M0,-5 L0,5 L5,0 L0,-5Z″fill=″#000000″/>
<text class=″portTextStyle″y=″4″x=″6″>
TRIM
</text>
</port>
</jtangcomponents>
5.代码生成引擎
本构件组装方法不同于其他构件组装方法,它的执行不是通过脚本解释运行的,而是通过直接生成代码,以编译代码的形式运行的,因而可以提升构件组装应用的执行效率。
该代码生成引擎将根据构件组装脚本,自动生成构件组装Java代码,该Java代码描述了构件的连接关系和执行序列。当修改组装之后,可以根据新的构件组装描述生成构件组装Java代码,该方法在提升了构件组装应用执行效率的同时,也不影响业务的快速变更。
6.构件执行引擎
本组装方法中的构件执行引擎,是指构件组装应用执行所需的软件框架,代码生成引擎所产生的构件组装Java代码的执行即依赖于该构件执行引擎。
7.构件运行时分析引擎
本组装方法中的构件运行时分析引擎,是指构件组装应用运行时进行模拟的一套框架,它通过解析构件的组装脚本,对构件的运行进行模拟操作,用户可以使用该引擎对构件的运行时进行分析,以测试构件组装应用的正确性和性能瓶颈。
8.构件部署引擎
该引擎负责将构件组装应用部署到计算机上,形成一个独立可运行的软件实体,或者也可以通过接口调用这个组装应用。整个部署过程采用向导的方式进行,整个过程配置非常方便。
9.构件库管理
本方法中的黑盒构件以构件库的形式进行管理,构件库中保留了构件实体,及构件的依赖信息。构件库分为两个部分,一个为在线构件库,包含各种构件,其中也包含了黑盒构件。另外一个部分,即本地构件库,或者也可称为待组装黑盒构件库,这些是可以直接在可视化IDE中进行组装的构件。构件库提够,构件的增加、删除及更新的功能,支持对构件的演化进行追踪管理。