用于重构面向服务的应用的方法及其设备的制作方法

文档序号:6462067阅读:142来源:国知局
专利名称:用于重构面向服务的应用的方法及其设备的制作方法
技术领域
本发明涉及面向服务的体系构架的服务处理技术领域,尤其涉及用于重构面向服务的应用的方法及其设备。
背景技术
在面向服务的(SOA)解决方案中,服务是使业务与IT技术对齐的中心焦点。当为不同客户提供SOA解决方案时,由于客户的需求不尽相同,因此需要构建可重用的SOA解决方案的方法,以最小的额外努力满足不同客户的需求。
在面对不同客户时,服务模型中最常变化的4J艮务的消息、服务操作,例如添加字段到现有输入/输出消息的定义;从现有的消息定义删除字段;添加/删除/修^J艮务操作,在提供可重用SOA解决方案的同时需JH^持整个SOA解决方案仍表现得连贯一致。
在所有这些变化要求中, 一些消息字段或服务操作是整个SOA解决方案中业务流程或业务监控的关键,用户不能删除或修改这些消息字段或服务操作。
对于这种情况,现有技术中使用的方法有
1. 为每个客户定制整个解决方案,重新i殳计或重新构建。
2. 使用MDD (模型驱动开发)方法凭借同一个复杂模型生成整个解决方案。
3. 使用传统的面向变化的设计(例如配置文件或业M则)来支持未来可能的变化。
然而,以上方法分别具有如下的缺点
1.修改现有的SOA解决方案需要对整个SOA解决方案的连贯一致的深入理解,包括服务和服务消息之间的关系。修改每个服务实现需要非常小心并且消耗时间,因此降低了 SOA解决方案实际的可重用性。2。 MDD是自上而下的方法,通过对模型组件的变换来实现源代码的修改。这种MDD方法严重依赖于代码生成,尽管可以解决一些简单的问题,但是由于所有代码变化都能从模型生成,因此该MDD方法并不支持包含了大量服务、业务流程和有关服务元件与服务的内部复杂关系的复杂SOA解决方案。
3. 传统的面向变化的^1计不考虑服务契约级的变化。

发明内容
本发明旨在提供一种全新的用于重构面向服务的应用的技术方案,以期克服以上现有技术中存在的至少 一种缺陷。
根据本发明的一个方面,一种提,对面向服务的应用的重构方案的方法,所述面向服务的应用包括服务模型和与所^良务模型相关的服务模型源代码,该方法包括以下步骤
识别所^J良务模型中的可变化服务元件;
基于可变化的服务元件,构建用于定义有关所述可变化服务元件的可选择变>(匕点信息的变>^模型;以及
创建支持变化实现的源代码,所述支持变化实现的源代码定义了为实现有关可变化服务元件的变化点信息而需要的服务模型和服务模型源代码的变化,用于使用对所述变化模型中有关可变化服务元件的变化点信息的选^r作为输入,才艮据所述源代码中支持所述变化点实现的变化定义对所
述服务模型和服务模型源代码进行预定的重构处理。
所述提供重构方案的方法可以在提供面向服务的应用的同时或之后进行。
所述可变化服务元件,通常包括服务模型中服务契约级的变化,例如业务流程、服务、服务描述、月l务通信协议和/或传输等功能实体;和/或包括策略、安全性、事务和/或管理等有关服务质量的非功能性实体。
所述有关可变化服务元件的变化点信息包括用于定义服务元件是否可变以及变化范围的可变性信息,具体包括消息字段的增删或修改、服务操作(包括发布、发现、绑定和调用)的增删或修改、和/或服务的非功能性需要(事务、安全性)等的增删或修改.消息字段的增删或修改例如有添加字段到现有输"输出消息的定义;从现有的消息定义删除字段等。所述变化模型是基于变化元模型完成,所述变化元模型定义了所有的有关可变化服务元件的变化点信息(变化点)的定义格式。变化模型本身也可以包含变化元模型的所有信息,即也可以定义所有的有关可变化服务元件的变化点信息。
所述支持变化实现的源代码用于在服务模型级以及代码级实现服务元件本身的变化以及对服务契约影响的变化定义,该服务契约影响变化定
义用于定义所述服务元件变化所引发的其它服务元件的变化,例如,如果一条服务的消息变化, 一些其他的服务或流程的消息也应变化。
才艮据本发明的第二方面, 一种用于重构面向服务的应用的方法,包括
以下步骤
准备用于定义有关服务模型中可变化服务元件的可选择变化点信息的变化模型、以及支持变化实现的源代码,所述支持变化实现的源代码定义了实现有关服务元件的变化点信息而需要的服务模型和服务模型源代码的变化;
选择所述变化模型中有关可变化服务元件的变化点信息;
使用所选择的变化点信息作为输入,由所述支持变化实现的源代码对所述服务模型和服务模型源4戈码ii行预定的重构处理。
所述预定的重构处理基于所述支持变化实现的源代码中的变化定义,包括修^Ul务模型和修改部署脚本、以及以下步骤中的至少一个在代码级修^艮务元件实现;在配置级修^J3艮务实现;修改受影响的业务流程;修改面向服务应用中的服务调用客户存根进程;或者修改受到月l务元件改变的影响的用户界面部分。
本发明的第 一方面涉及如何定义变化模型和如何提供变化支持的实现的方法。使用该方法,可以在向客户提供SOA解决方案(服务模型)及其实现的同时,提供解决方案的可能变化(即变化模型)及支持以上可能变化的实现(即变化支持实现),使SOA解决方案对不同客户更有灵活性。本发明的第二方面涉及使用服务契约级的变化模型来控制服务的业务功能的可能变化,而且根据从变化模型选择的每个变化点,使用变化支持的实现来重构面向服务的整个应用,以适应不同客户的变化。由此提出了对不同客户有最大的可重用性/适应性的SOA解决方案的系统。
由于本发明的方法是中间对齐的方法,具体地首先通itl艮务契约变化模型来控制服务模型的可变性,而JL基于针对SOA解决方案的标准实现来完成对面向服务的应用的重构/再用,因此本发明的方法不依赖于代码生成,而是主要调节代码/配置的修^/重构,由此为解决方案提供商提供了更大的自由和处理变化的能力,使得可以以被控制的和标准化的方式进行定制,并且使定制所需的努力最小化。
根据本发明再一个方面, 一种针对面向服务的应用的重构方案提供设
备,包括
识别装置,被配置为识别所述服务模型中的可变化服务元件;
变化模型构建装置,被配置为基于可变化的服务元件,构建用于定义有关所述可变化服务元件的可选择变化点信息的变化模型;以及
代码创建装置,被配置为创建支持变化实现的源代码,
所述支持变化实现的源代码定义了为实现有关可变化服务元件的变化点信息而需要的服务模型和服务模型源代码的变化,用于使用对所述变化模型中有关可变化服务元件的变化点信息的选择作为输入,根据其中支持所述变化点实现的变化定义对所述服务模型和服务模型源代码进行预定的重构处理。
根据本发明再一个方面, 一种面向服务的应用的重构该:备,包括
确定装置,被配置为从定义了有关服务模型中可变化服务元件的变化点信息的变化模型中确定有关可变化服务元件的变化点信息;以及
修改装置,被配置为接收所确定的变化点信息作为输入,基于支持变化实现的源代码对所iO艮务模型和服务模型源代码进行预定的重构处理,所述支持变化实现的源代码定义了实现有关服务元件的变化点信息而需要的服务模型和服务模型源代码的变化。


参照下面结合附图对本发明实施例的说明,会更加容易地理解本发明的以上和其它目的、特点和优点。在附图中,相同的或对应的技术特征或部件将采用相同或对应的附图标记来表示。
图1示出了根据本发明的提掩计对面向服务的应用的重构方案的方法以及该重构方案的应用;
图2示出了图1中步骤108的详细过程。
8图3示出了才艮据本发明的重构方案提供i殳备。
图4示出了根据本发明的面向服务的应用的重构设备.
图5A和5B是分别示出了根据本发明优选实施例的可变化服务元件的变化前后的示意图。
图6示出了应用本发明的计算机系统。
具体实施例方式
下面参照附图来il明本发明的实施例。应当注意,为了清楚的目的,附图和说明中省略了与本发明无关的、本领域普通技术人员已知的部件和处理的表示和描述。
在以下的详细说明中使用了如下的术语。
面向服务的体系结构是一个组件模型,本质上是相互通信的服务集,这种通信可能是简单的数据传送或者两个以上的服务组合活动。具体地,
些服务之间定义良好的接口和契约联系起来。
服务服务由资源(如数据、程序或设备)、服务逻辑和消息处理构成。当消息到达一个服务时激活使用资源的服务逻辑。在面向服务的体系结构中服务映射到业务单元,相应地服务通常包括服务注册中心;例如业务流程、服务、服务描述、服务通信协议和传输等功能实体;以及包括策略、安全性、事务和管理等有关服务质量方面的非功能性实体。
接口定义了服务请求者和服务提供者之间的契约,以便通过接口发现、发布和调用服务。
;^发明的方法和该:备
根据本发明, 一种提,对面向服务的应用的重构方案的方法,所述面向服务的应用包括服务模型和与所述服务模型相关的服务模型源代码,该方法包括以下步骤识别所^艮务模型中的可变化服务元件;基于可变化的服务元件,构建用于定义有关所述可变化服务元件的可选择变化点信息的变化模型;以及创建支持变化实现的源代码,所述支持变化实现的源代码定义了为实现有关可变化服务元件的变化点信息而需要的服务模型和服务模型源代码的变化,用于使用对所述变化模型中有关可变化服务元件的变化点信息的选#^作为输入,根据所述源代码中支持所述变化点实现的变化定义对所^艮务模型和服务模型源代码进行预定的重构处理。
本发明还涉及一种用于重构面向服务的应用的方法,该方法包括以下
步骤准备用于定义有关服务模型中可变化服务元件的可选择变化点信息
的变化模型、以及支持变化实现的源代码,所述支持变化实现的源代码定义了实现有关服务元件的变化点信息而需要的服务模型和服务模型源代
码的变化;选择所述变化模型中有关可变化服务元件的变化点信息;使用所选择的变化点信息作为输入,由所述支持变化实现的源代码对所述服务模型和服务模型源代码进行预定的重构处理。
图1示出了根据本发明的提,对面向服务的应用的重构方案的方法以及该重构方案的应用100。
步骤101表示在设计级提供服务模型。该服务模型代表了面向服务的解决方案,是一组在某一特定工商业/事业领域中相关的服务和业务流程,例如政府部门的案例管理。
步骤102表示提供代码级的服务模型实现。
服务模型实现即服务模型的源代码,可以是包括以人类可读的计算机语言(如C, C++, C#, assembler, Fortran, BASIC, Pascal, Java,LISP, ML, Objective-C, Perl, PHP, Python, Matlab, Visual Basic,SQL, HTML, XML或其他任何计算机语言)编程的一系列陈述的文件,也可以包括定义了 一些由图形元件表示的人类可读计算机语言的图形信息。
服务模型是其源代码的抽M示,可以是图形模型或例如树形结构、关系表等任何类型的模型,也可以是文4型。
包括源代码的文件和/或相关的源代码(服务模型)都可以存储在存^i殳备和/或内存中,也都可以在显示器上显示。
服务模型源代码中的元件和服务模型中的元件通过注释等方式彼此链接,如本领域普通技术人员所了解,可以通过变换由模型的定义产生用以调用函数的源代码或者由源代码产生模型。因此本发明对步骤101和102的顺序不作限制。
在步骤103为服务模型(SOA解决方案)准备变化模型,变化模型定义了可能在服务模型中变化的范围。注意步骤103虽然与步骤101同属设计级,但步骤103无需与步骤101同步进行,因为可以在已经为客户提供服务模型之后的不定时间内再提供包括变化模型的重构工具(重构方案)。
设计变化模型首先需要在分析级确定服务模型中通用的以及可变化服务元件。可变化服务元件^J艮务契约级的,通常包括服务中的例如业务流程、服务、服务描述、服务通信协议和/或传输等功能实体;和/或包括策略、安全性(规则集)、事务(属性集)和/或管理(属性集)等有关服务质量方面的非功能性实体。
其次,基于确定的可变化服务元件,创建预定义的接口变化协议,即用于定义有关服务模型中可变化服务元件的可选择变化点信息的变化模型,具体地变化模型定义了哪个服务的哪个接口可变以及可如何变,由此使得服务可变区域变得标准化并提供了可管理/可控的变化定义。针对不同的领域、不同的客户以及不同的需求,需要在服务契约级识别各种可能的和合理的变化,确定可能需要变化的服务元件。需要的变化越多,则变化模型就越复杂。
所述有关可变化服务元件的变化点信息包括用于定义服务元件是否可变以及变化范围的可变性信息,具体包括消息字段的增删或修改、服务操作(包括发布、发现、绑定和调用)的增删或修改、和/或服务的非功能性需要(事务、安全性)等的增删或修改。消息字段的增删或修改例如有添加字段到现有输X/输出消息的定义;从现有的消息定义删除字段等。
步骤104在代码级准^4h对每个变化点的变化支持实现。在提供标准服务模型的同时或者^,需要基于对服务模型源代码的一致性理解为变化模型中的每个变化点提供变化支持实现。
该变化支持实现即支持变化实现的代码或脚本集(源代码),同样可以是包括以人类可读的计算机语言编程的一系列陈述的文件,也可以包括定义了一些由图形元件表示的人类可读计算机语言的图形信息。包括支持变化实现的源代码的文件和变化模型都可以存储在存储设备和/或内存中,也都可以在显示器上显示。
所述支持变化实现的源代码定义了为实现有关可变化服务元件的变化点信息而需要的服务模型和服务模型源代码的变化,即定义了在服务模型级以及代码级实现服务元件本身的变化、以及对服务契约影响的变化定义,用于在执行时使用对所述变化模型中有关可变化服务元件的变化点信息的选择作为输入,按照所述源代码中支持所选择变化点实现的相应变化定义对所述服务模型和服务模型源代码进行修改,实现预定的重构处理。即所述重构处理已在所述支持变化实现的源代码加以预定义。本公开说明书将在以下对重构处理进行详细描述。
以上所述的服务契约影响变化定义定义了所述服务元件变化所引发的其它服务元件的变化,例如如果服务消息变化,必然导致其它一些服务或业务流程的变化。
由此步骤102和104构成了定义变化模型以及提供变化支持的实现的方法。使用该方法,可以在向客户提供SOA解决方案(服务模型)及其实现的同时,提供解决方案的可能变化(即变化模型)及支持以上可能变化的实现(即变化支持实现),使面向服务的应用对不同客户更具灵活性。
在步骤105评估变化模型的可用性,即客户在需要重构面向服务的应用时通过例如人机界面判断变化模型所提供的可选择变化点信息是否包括了客户所需的变化点,即判断变化模型是否支持客户希望的对面向服务应用的改变。
如果在步骤106判断为变化模型可以提供客户所需的变化点,则在步骤107由客户通过例如A^界面选择得到了支持的变化点信息。
所选择的变化点信息作为符合变化模型的变化模型实例,定义了服务契约在客户环境中实际如何改变。例如,在变化模型中定义了三个服务消息字段可被删除。而在变化模型实例中只有一个或两个字段要被删除。
根据步骤107输出的所选择的变化点信息作为输入的定制信息,在步骤108使用所述支持变化实现的源代码中支持所选择变化点的相应变化定义对所述服务模型和服务模型源代码进行自动修改,实现预定的重构处理,由此为客户获得了定制的面向月良务应用。
具体地,图2示出了图1中步骤108的详细过程,即详细的重构处理。
在步骤201读取基于变化模型定义的变化模型实例信息;在步骤202获取服务模型变化点(若客户仅选择了 一个变化点,则变化模型实例信息仅包括一个变化点信息);在步骤203对所^艮务模型和服务模型源代码进行自动修改,实现预定的重构处理;在步骤204判断是否已处理所有已选择的服务变化点?若已处理所有已选择的服务变化点,则在步骤205进行清理并重建面向服务的应用。
所述预定的重构处理(步骤203 )基于所述支持变化实现的源代码中的预定的变化定义,可以包括以下不受顺序限制的步骤
修2tJi良务模型,通常修giJ艮务注册中心的WSDL, XSD(BO)定义、规划或者属性;
修改面向服务应用的部署脚本,例如数据模型改变的DB脚本、以及一些在服务契约中需要中间件平台等的部署支持的非功能性需求改变(例如安全性和事务改变);以及
以下处理步骤中的至少一个在代码级修^J艮务元件实现,对新的服务IMt只生成程序骨架;在配置级修^J艮务实现,例如配置文件和业^MJ,J定义等;
修改受影响的业务流程,以便合并整个过程中的改变。通常需要普改BPEL定义文件或其它工作流程定义语言;
仅修改面向服务应用中的服务调用客户存根进程(stub)(通常需要修^J良务调用代码和客户存根),但不包括修改其他服务实现;或
修改受到服务契约改变的影响的用户界面部分。
图3示出了重构方案提供设备300,包括识别装置310,被配置为识别所iii良务模型中的可变化服务元件;变化模型构建装置320,被配置为基于可变化的月l务元件,构建用于定义有关所述可变化服务元件的可选择变化点信息的变化模型321;以及代码创建装置330,被配置为创建支持变化实现的源代码331。
图4相应地示出了一种面向服务的应用的重构设备400,包括
确定装置410,被配置为在从变化模型321选择了变化点后通it^变化模型401读取变化点信息(或由多个变化点信息构成的变化模型实例信息)来确定有关可变化服务元件的变化点信息;以及
修改装置420,被配置为接收所确定的变化点信息作为输入,基于支持变化实现的源代码331对所述服务模型和服务模型源代码进行预定的重构处理,所述支持变化实现的源代码定义了实现有关服务元件的变化点信息而需要的服务模型和服务模型源代码的变化。
修改装置420包括服务模型修改单元421、部署脚本修改单元427以及以下修改单元中的至少一个服务元件实现修改单元422、服务实现配置修改单元423;业务流程修改单元424、客户存根进程修改单元425或
13用户界面《务改单元426,分别用于处理如如上所述步骤203的具体处理步骤。
实现以上重构处理的支持变化实现的源代码是针对特定服务的。不同的服务元件变化需要不同的具体重构处理步骤(如图2步骤203所示)或修改单元(如图4修改装置420所示)或其组合,这一点可根据面向服务应用中具体的服务元件及其变化引发的影响来由设计人员进行分析判断。
例如,通常服务元件的任何变化(包括功能性和非功能性需求改变),都需要服务模型修改单元421和部署脚本修改单元427对服务模型以及部署脚本进行修改;在改变服务消息时还需要服务元件实现修改单元422和客户存根进程修改单元425对服务元件实现和服务调用客户存根进程进行修改;如果改变服务消息并且该服务消息出现在某些业务过程中或工作流程定义中时则还需要业务流程修改单元424对受影响的业务流程进行修改;如果服务使用了配置机制或规则引擎,则还需要服务实现配置修改单元423;而如果存在与改变消息的服务相关的用户界面,则还需要用户界面修改单元426。而如果仅仅是非功能性需求改变,则仅需要服务模型修改单元421和部署脚本修改单元427对服务模型以及部署脚本进行修改。
变化元模型
变化模型是基于变化元模型完成的,即作为变化元模型的一个实例,而变化元模型定义了所有的有关可变化服务元件的变化点信息(变化点)的定义格式。所述变化模型本身也可以包含变化元模型的所有信息,即其本身也可定义所有的有关可变化服务元件的变化点信息。
变化元模型定义了控制如何定义变化模型。根据不同面向服务应用的不同要求,变化元模型可以简单也可以复杂,可以是图形模型或例如树形结构、关系表等任何类型的模型,也可以是文M型。如下示出了以XML语言编写的定义了所有的有关可变化服务元件的变化点信息的变化元模型示例。
< xm/ /ers/'on=".0" encoaf/'ng="L/7F-8" >
(schema fargef/Vamespace=7jHp.'〃wi/\w./'ib/r7. comAVSVa〃'af/'on" e/emenfFormOefat//^ "qrua//77eoTxm/ns=77ftp.'//www. w3. org/200lOCMLSchema" xm/ns:fns=77ftp.v/wmv./'ibm. com/l/l/SVar/'af/'on ">
〃XML 定乂 7变众元漠歪游名字^^7^ttpy/www./'ibm.com/lVSVarZatoA^
<comp/ex7>pe name="Se/v/'ceVa〃'aton "> 〃变众点游定乂, 一凝新差x^5 J^一个赝多。<aff〃';bute name='se/v/'ceA/ame' fype='sfr7'ng^> 〃嚴多游名字
<aff〃'ibt;te name="se/v/'ceA/amespace" fype="sfr7'ng"></e/emenf> 〃一个变众,d,对应赝多游名字S河
〈aft厂/6wte na/7 e="serw'cePo/t7ype"(Kpe="sf〃'ng"></e/emenf>〃 一^^众点^f对il I多游端/7^^, 这个浙J:,尉;f微定XW僧儒魏点
<e/eA7 errf name=7npt/WWessage/a〃'af/'on" (ype="fr s:Messagfe/a〃'aft'on"></e/eme/^> 〃 一个
变众点^激乂撒I游
<e/emenf name="oi//pt/WWessage/an'aton" fype=' ns.'Message/a〃af/'on"></e/eAneA f> # —
个,众点^翰幼樣息游^,化点
<e/emenf naA7 e="se/v/ce/a〃'aM/ /'> 〃賴束鲞体定义这个资众点游^^丝
<resfr7cf/on jbase="sfr*/ng">
<e/7t/meraf/on \za/we="£d/te6/e"></entyme/*af/on>// ^T编獰,但是不^T"J/y^ <eni/meraf/'on /a/ue=7 emo/ajb/e"></enumeraf/o/ >// ^7"^/#/尿貪
</s/mp/67>pe> </comp/ex7ype>
<comp/exrypename='7Wessasfe/ar/af/on"> 〃驗A撒唐^变丝游定J6激
<e/e/r enf name='77e/c//aA7'af/on" fype='Yns:Re/d/a〃'aft'on" 〃一个翰乂將,息游^",丝屋^它游字虔游 輕勝邀成
maxOcct//*s=""nbowcted" m/>70ccuA*s= "0 ">
</fco/7 p/e;f Type >
《comp/狄7ypename 'F/e/c/V^7'aft'on、 〃 一个將乂息字虔游^^丝定乂
<e/emenf name="f/'e/GWddajWe" fype="6oo/ean" maxOco/rs="" m/nOco/A*s="0"> <yetemenf> 〃 以^i 个^^^yg^/7^^虔吗
<e/emenf name=7fe/c/f emoai)/e" fype="6oo/ean" maxOcct//*s="f" m/nOca//*s="0"></e/e/r enf> //这
付脾婦駒
<6/6msnf / 3/7 6二"/ 6/Gf/^/xec/" fyp6="boo/6sr " m3x0cct/A*s=""/" m/nOccu/"s="0"></e/6m6nf> //这个字
靜柳録
<e/emenf name=7 e/afMocW7ajb/e" fype="jboo/eaA " max0cayrs="7" m/nOccwrs="0"></e/emenf> //这
个字虔TO録
<e/emenf name:'7/e/d/ emovec/" fype="boo/ean" maxOcct//*s="7" m/>7Occtyrs="0"> </e/emenf> #这个
<e/emenf name="/7e/aWdctecr (ype二7lcfatecF/e/d" maxOcct/rs=" unbowctecT m/nOcct/rs="0"> <e/emenf>〃这个字虔之后谱》/77—个字虔'字虔定J^在Acfdec/Re/cy ^
<e/emenf A7ame=7/e/Gf/Wod/77eoT (ype="Mod/7/eaF/e/d" maxOcct/rs="" m/A7Occwrs="0"></e/emeA7f> 〃 这仲凝變改:r,嫩/^絲MocW7ecF/e財
<e/emenf name="fi'e/o7/ame" fype="sfr/ng" maxOccu厂s-"7" m/> Occurs="0"></e/emenf> 〃这个^^y^ 名字
</comp/ex7yp6>
<Comp/e;r7>pe name='iAcWeaF/'e/Qf' 6ase='sfr7> Sf'> <aff〃'jbi7te name-TfeWrype' fype='sfr*/"g'々 <yC0Ar p/ex7ype> //做字虔麟娜名字
<Comp/ex7"ype name二'Mod折ed' jbase='sfr7V7g'>
<att〃'jbt7te /7ame=7fe/dAtew7>pe' fype='sfr7>7g> 〃體改字虔游^^^7名字
<affr*"te /7ame=7/e/afAtewA/ame' type='sfr7'ng'々 〃 録字段游箭名字
<e/e/77enf A ame="nesteGF/'e/(T fype='7Woaf/7 ecr /77/nOccurs="0"> </e/emenf> 〃^"辨練^^虔游參改
</Comp/ex7>p6><e/emenf name="so/u〖/on/ar/af/'on" fype="fns:Se/v/ce/a〃'af/'onCo//ecf/on"></e/emenf> //體改字度游 勉顿名字
<comp/axT>pe name="Serw'ce/a〃'aftonCo//ecf,on"> 〃,化漠星〃定乂
<e/emenf name="serw'ce Va〃'af/on" (ype="fns.Se/v/ce /a〃'a〃on" m/nOcci/rs="0" maxOcayrs="un6ounctecf"></e/emenf>//;^^#^^J6f ^多个_^众点资成
</comp/ex7>p6>
优选实施例
以下参考面向服务应用中的一个服务,,CreateOrganization(新建一 个部门)"的服务元件发生变化为例,详细说明本发明的优选实施例。
图5A示出面向服务应用中的一个服务"CreateOrganization(新建一 个部门)",其输入消息是作为扩展集(Superset)的Organization的实体, 其包含的属性如图所示,包括字符串型的effectiveDate (有效日期)、整 数型的numberOfMember (成员数量)等等。
基于对面向服务应用的服务模型的认识来识别其中的可变化服务元 件,例如针对服务,,CreateOrganization,,增加消息字段,则创建变化模型。 该变化模型例如基于以上示例的变化元模型,如下所示。
< xm/ vers/'on="7.0" encoc//'ng="L/TF-8" >
<se/v/'ceVar/'afr'o/7Co//ecf/'on xm/ns:vvs/=77ttp;〃www.Zjbm.com/WS/a〃'a//on"> <S6/v/'c6 /ar/'a//on
serw'ceA/ame="C/-eateOgan/'zaf/'onSe/v/'ce"'se/v/'ceA/amespace=77ftp://mvw./'ibm.com/C/"eateOrga/i/'zaf /'or Se/v/'ce"' se/v/'cePortType='7 ftp;//www./'jb/7r com/OeateOgan/'zaf/'onSe/v/'cePorf Type "> <serv/ce \ZarZat)ZWy>£cWaib/e<serv7'ce \Zar/'a£)/Wy>
<fZe/c//a〃-a&'on>
<ffeWA/ame>stocfcAva//aWe</^eWA/ame> 〃^""在该字虔后厫谱^7字虔
<f/-e/aWcfQfa;b/e>fri/e</fi'e/cWcWaiWe>
We/c//a〃'af/'or >
</Sen/7'ce VarZaft'on > </Se/v/ce/a〃'aWor Co//ecto/7>
在创建变化模型的同时基于对面向服务应用的服务及业务流程的理 解构建用于实现"增加消息字段"的源代码。
当用户需求变化后,比如需要加入两个新的属性:organizationType(部门类型)和preferredLanguage (优选语言),这样organization包含 的属性如图5B所示,在尾部增加了两个属性。
用户通过变化模型选择增加两个消息字段作为变化模型实例。该变化 模型实例包含两个变化点,如下所示。
<serw'ce/a〃'aft'o/7Co//ecf/on xm/ns:ws/=77ftp://iviw^/jbm,com/lVS/a〃'af/'OA ">
serw'ceA/ame="OeateOgan/za"onSerw'ce"'se/v/ceA/amespace=77flp.,//vvwiv./jbm.com/CA*eateOA*gan/zaf
/'0门56/"17'(^",56^/7(^尸0/^7>)06='7 ^)0,/^^1^./)&^7.(;0/77/063 6093^ /23〖/0/ 56/*//(;6尸0"7>)06">
^■e/af /a〃'aft'or >
<A GfoteoF/'e/cy name="organizationType ", fype="sfrVngf //^》〃字,审星^^^度"organizationType "
《c/ctec/He/Gf name="preferredLanguage ", fype="sfr/ng 7i> //谱》〃字,审星"字虔"preferredLanguage" </7 6/d/a〃'af/o/ >
</Serw'ce /a〃af/'on> </Se/v/ce/a〃'aft'onCo//ecfton>
面向服务的应用的重构设备接收变化模型实例信息并实施预定的用 于实现"增加消息字段"的源代码,具体地通过修改服务注册中心的
WSDL, XSD (BO)定义、规划或者属性来修^J艮务模型;在代码级修改 服务元件实现;修改面向服务应用中的服务调用客户存根进程(例如服务 调用代码和客户存根);以及修改面向服务应用的部署脚本(如DB脚本), 从而对所述服务模型和服务模型源代码都进行了重构处理,使得重构后的 服务模型和服务模型源代码都支持增加了以上两个消息字段的服务元件 "CreateOrganization",从而提供了定制的面向服务的应用。
另夕卜还应该指出的是,上述系列处理和装置也可以通过软件和固件 实现。在通过软件或固件实现的情况下,从存储介质或网络向具有专用硬 件结构的计算机,例如图6所示的通用计算机600安装构成该软件的程序, 该计算机在安装有各种程序时能够执行各种功能等等。
在图6中,中央处理单元(CPU)601才艮据只读存储器(ROM)602中存 储的程序或从存储部分608加载到随M取存储器(RAM)603的程序执行 各种处理。在RAM 603中,也根据需要存储当CPU 601执行各种处理等 等时所需的数据。
17CPU 601、 ROM 602和RAM 603经由总线604彼此连接。输"输 出接口 605也连接到总线604。
下述部件连接到输"输出接口 605:输入部分606,包括M、鼠标 等等;输出部分607,包括显示器,比如阴;feL射线管(CRT)、液晶显示器 (LCD)等等,和扬声器等等;存储部分608,包括硬盘等等;和通信部分 609,包括网络接口卡比如LAN卡、调制解调器等等。通信部分609经由 网络比如因特网执行通信处理。
根据需要,驱动器610也连接到输X/输出接口 605。可拆卸介质611 比如磁盘、光盘、磁光盘、半导体存储器等等根据需要被安装在驱动器 610上,使得从中读出的计算M序根据需要被安装到存储部分608中。
在通过软件实现上述系列处理的情况下,从网络比如因特网或存储介 质比如可拆卸介质611安装构成软件的程序。
本领域的技术人员应当理解,这种存储介质不局限于图6所示的其中 存储有程序、与设备相分离地分发以向用户提供程序的可拆卸介质611。 可拆卸介质611的例子包含磁盘(包含软盘)、光盘(包含光盘只读存储器 (CD-ROM)和数字通用盘(DVD))、磁光盘(包含迷你盘(MD))和半导体存 储器。或者,存储介质可以是ROM 602、存储部分608中包含的硬盘等 等,其中存有程序,并且与包含它们的设备一起被分发给用户。
还需要指出的是,执行上述系列处理的步骤可以自然地按照说明的顺 序按时间顺序执行,但是并不需要一定按照时间顺序执行。某些步骤可以 并行或彼此独立地执行。
虽然已经详细说明了本发明及其优点,但是应当理解在不脱离由所附 的权利要求所限定的本发明的精神和范围的情况下可以进行各种改变、替 代和变换。而且,本申请的范围不仅限于说明书所描述的过程、设备、制 造、物质的结构、手段、方法和步骤的具体实施例。本领域内的普通技术 人员从本发明的公开内容将容易理解,根据本发明可以使用执行与在此所 述的相应实施例基^f目同的功能或者获得与其基4^目同的结果的、现有和 将来要被开发的过程、设备、制造、物质的结构、手段、方法或者步骤。 因此,所附的权利要求旨在它们的范围内包括这样的过程、设备、制造、 物质的结构、手段、方法或者步骤。
权利要求
1. 一种提供针对面向服务的应用的重构方案的方法,所述面向服务的应用包括服务模型和与所述服务模型相关的服务模型源代码,该方法包括以下步骤识别所述服务模型中的可变化服务元件;基于可变化的服务元件,构建用于定义有关所述可变化服务元件的可选择变化点信息的变化模型;以及创建支持变化实现的源代码,所述支持变化实现的源代码定义了为实现有关可变化服务元件的变化点信息而需要的服务模型和服务模型源代码的变化,用于使用对所述变化模型中有关可变化服务元件的变化点信息的选择作为输入,根据所述源代码中支持所述变化点实现的变化定义对所述服务模型和服务模型源代码进行预定的重构处理。
2. 根据权利要求1所述的提供针对面向服务的应用的重构方案的方 法,在提供面向服务的应用的同时或之后进行。
3. 根据权利要求1所述的提##对面向服务的应用的重构方案的方 法,其中所述可变化服务元件包括业务流程、服务、服务描述、服务通信 协议和/或传输功能实体;和/或包括策略、安全性、事务和/或管理在内的 有关服务质量的非功能性实体。
4. 根据权利要求1所述的提供针对面向服务的应用的重构方案的方 法,其中所述有关可变化服务元件的变化点信息包括用于定义服务元件是 否可变以及变化范围的可变性信息。
5. 根据权利要求4所述的提供计对面向服务的应用的重构方案的方 法,其中所述可变性信息包括消息字段的增删或修改、服务操作的增删或 修改、和/或服务的非功能性需要的增删或修改。
6. 根据权利要求5所述的提供针对面向服务的应用的重构方案的方 法,其中消息字段的增删或修改包括添加字段到现有输入/输出消息的定 义、或从现有的消息定义删除字段。
7. 根据权利要求1所述的提,对面向服务的应用的重构方案的方 法,其中所述变化模型是基于变化元模型完成的,所述变化元模型定义了 所有的有关可变化服务元件的变化点信息的定义格式。
8. 根据权利要求1所述的提,对面向服务的应用的重构方案的方法,其中所述支持变化实现的源代码用于在服务模型级以及代码级实现服 务元件本身的变化以及对服务契约影响的变化定义,该服务契约影响变化 定义用于定义所iil艮务元件变化所引发的其它服务元件的变化。
9. 一种用于重构面向服务的应用的方法,所述面向服务的应用包括 服务模型和与所述服务模型相关的服务模型源代码,该方法包括以下步 骤准备用于定义有关所述服务模型中可变化服务元件的可选择变化点 信息的变化模型、以及支持变化实现的源代码,所述支持变化实现的源代 码定义了实现有关服务元件的变化点信息而需要的服务模型和服务模型 源代码的变化;选择所述变化模型中有关可变化服务元件的变化点信息;以及使用所选择的变化点信息作为输入,由所述支持变化实现的源代码对 所i^艮务模型和月艮务模型源4戈码ii行预定的重构处理。
10. 根据权利要求9所述的用于重构面向服务的应用的方法,其中所 述预定的重构处理基于所述支持变化实现的源代码中的变化定义,包括 修^Ul务模型和修改部署脚本;以及以下步骤中的至少一个在代码级修^J艮务元件实现;在配置级修^Ji艮务实现;修改受影响的 业务流程;修改面向服务应用中的服务调用客户存根进程;或者修改受到 服务元件改变的影响的用户界面部分。
11. 根据权利要求10所述的用于重构面向服务的应用的方法,其中 所述变化点信息是消息字段的增删或修改,所述重构处理包括修^JJ艮务模 型、在代码级修^tl艮务元件实现、修改面向服务应用中的服务调用客户存 根进程、以及修改面向服务应用的部署脚本。
12. —种针对面向服务的应用的重构方案提供设备,所述面向服务的 应用包括服务模型和与所iO艮务模型相关的服务模型源代码,该重构方案 提供设备包括识别装置,被配置为识别所述服务模型中的可变化服务元件;变化模型构建装置,被配置为基于可变化的服务元件,构建用于定义 有关所述可变化服务元件的可选择变化点信息的变化模型;以及代码创建装置,被配置为创建支持变化实现的源代码,所述支持变化实现的源代码定义了为实现有关可变化服务元件的变化点信息而需要的服务模型和服务模型源代码的变化,用于使用对所述变 化模型中有关可变化服务元件的变化点信息的选择作为输入,根据其中支 持所述变化点实现的变化定义对所述服务模型和服务模型源代码进行预 定的重构处理。
13. —种面向服务的应用的重构设备,所述面向服务的应用包括服务 模型和与所述服务模型相关的服务模型源代码,该重构i殳备包括确定装置,被配置为从用于定义有关所iO艮务模型中可变化服务元件 的变化点信息的变化模型中确定有关可变化服务元件的变化点信息;以及修改装置,被配置为接收所确定的变化点信息作为输入,基于支持变 化实现的源代码对所iil艮务模型和服务模型源代码进行预定的重构处理, 所述支持变化实现的源代码定义了实现有关服务元件的变化点信息而需 要的服务模型和服务模型源代码的变化。
14. 根据权利要求13所述的面向服务的应用的重构i殳备,其中所述 修改装置包括被配置为修^U良务模型的服务模型修改单元、被配置为修改 部署脚本的部署脚本《奮改单元、以及以下单元中的至少一种被配置为在代码级修^J3良务元件实现的服务元件实现修改单元、被配置为在配置级修^y良务实现的服务实现配置修改单元;被配置为修改受影响的业务流程的业务流程修改单元、被配置为修^*务调用客户存根进程 的客户存根进程修改单元、和被配置为修改受到服务元件改变的影响的用 户界面部分的用户界面修改单元。
15. 根据权利要求14所述的面向服务的应用的重构设备,其中所述 变化点信息是消息字段的增删或修改,所述修^置包括服务模型修改单 元;服务元件实现修改单元;客户存根进程修改单元和部署脚本修改单元。
全文摘要
本发明公开了用于重构面向服务的应用的方法及其设备,所述面向服务的应用包括服务模型和与所述服务模型相关的服务模型源代码。用于重构面向服务的应用的方法包括准备用于定义有关服务模型中可变化服务元件的可选择变化点信息的变化模型、以及支持变化实现的源代码,所述支持变化实现的源代码定义了实现有关服务元件的变化点信息而需要的服务模型和服务模型源代码的变化;选择所述变化模型中有关可变化服务元件的变化点信息;使用所选择的变化点信息作为输入,由所述支持变化实现的源代码对所述服务模型和服务模型源代码进行预定的重构处理。
文档编号G06F9/44GK101546260SQ20081008983
公开日2009年9月30日 申请日期2008年3月28日 优先权日2008年3月28日
发明者周志荣, 佳 谭, 戈 金 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1