从UML到SOA

日期: 2008-07-21 作者:Dmitry Gorelik 来源:TechTarget中国 英文

  本文介绍如何利用IBM Rational Software Architect 7.0.0.2或之后的版本中包含的UML-to-SOA转换工具,将软件服务的UML模型转化为具体领域的面向服务体系架构(service-oriented architecture,SOA)模型。该转换可以作为所有针对具体软件实现和运行时的转换扩展的基础。UML-to-SOA转换一般将UML模型作为源,并创建具体领域的SOA输出物。转换输出完全依赖于所选择的转换扩展。总的来说,转换扩展生成可以部署到运行时计算机或服务器上的具体领域的软件工件。然后扩展可以作为其他工具的输入,进行进一步开发和部署。


  IBM Rational Software Architect中的UML-to-SOA的转换工具包括基于Service Component Architecture(SCA)的SOA转换工具,它使用Service Component Definition Language(SCDL)来表示元数据。UML-to-SOA转换工具将生成准备导入到IBM WebSphere Integration Developer 6.0.2或之后版本中,用于进一步开发、测试,和部署的输出。除了公共的转换配置选项外,UML-to-SOA转换工具还提供具体的配置属性。


  转换的结构和可扩展性


  图1展示了UML-to-SOA转换的结构。



  图1. UML-to-SOA转换的结构
 
  UML-to-SOA转换工具是由UML-to-SCDL转换扩展而来,它负责创建SCDL模块和库工程。


  ·模块工程包含SCDL工件,例如模块、组件、导出和导入。
  ·库工程包含由各种SCDL 元素所引用的其他具体领域的工件。


  包含于Rational Software Architect中的UML-to-SCDL转换工具提供四种不同的扩展,并且有两组扩展:


  ·接口扩展,用于处理源模型中的所有接口,包括UML接口、所引用的WSDL端口类型和Java?接口。WSDL接口扩展使用UML-to-WSDL转换来创建SCDL组件、导出和导入所引用的WSDL端口类型。Java接口扩展用于将包含所引用的Java接口的Java工程复制到目标工程中。
  ·组件实现扩展,用于处理UML活动和对Java类的引用。Business Process &#101xecution Language(BPEL)实现扩展使用UML-to-BPEL转换来创建SCDL所引用的BPEL过程。Java实现扩展用于将包含所引用的Java类的Java工程复制到目标工程中。


  UML-to-BPEL转换工具使用UML-to-WSDL转换和UML-to-XSD转换来创建WSDL(Web Service Description Language,Web服务描述语言)端口类型和XSD Schema Datatypes。同样的,UML-to-WSDL转换使用UML-to-XSD转换来创建XSD Schema Datatypes。


  转换的源


  UML-to-SOA转换用于处理软件服务的UML模型。


  UML-to-SOA转换的预期的源是一个完整的应用或没有应用UML 2.0 Profile for Software Services的UML模型。换句话说,转换可以将一个或多个表示服务提供者的UML包或个别的UML组件作为源。如果将UML模型或包选为源,那么UML-to-SOA转换就导航到所选的模型或包,并为每个服务提供者创建必要的SCDL工件。UML-to-SOA转换支持选择多个UML元素作为转换的源。


  图2是UML模型(在左边)的片段,用CreditManager服务提供者的外部视图展示CreditManager服务提供者和UML类图(在右边)。



  图2. 一部分UML模型的屏幕视图
 
  转换的输出


  UML-to-SOA转换生成输出,导入到IBM WebSphere Integration Developer 6.0.2和之后版本中用于进一步开发、测试,和部署。转换可以接受工作区中任意工程为目标。


  提示:


  您可以创建新的目标工程,如果需要需要一个目标工程,在Transformation Configuration编辑器中的Source and Target页面中单击create New Target Container。


  对每个服务提供者,转换创建一个模块工程。除了典型的工程文件以外,例如manifest.mf、.project、.classpath,和.runtime,转换还创建sca.module文件,加上扩展名为component、export,和import的表示SCDL模块中的各种元素的文件。模块工程引用了一个或多个包含对接口和业务对象的定义的库工程。


  图3展示了UML-to-SOA转换工具所创建的模块工程的典型结构。这是个展开的视图,展示了UML-to-SOA转换所创建的com.acme.creditmanagement.CreditManager模块工程。



  图3. UML-to-SOA转换工具所创建的模块工程的典型结构
 
  对于每个UML接口,转换会创建一个单独的WSDL文件。对于每个UML参数类型(数据类型),除了UML基本类型和内嵌于XSD中的简单类型,转换会创建单独的XSD文件。根据转换源的结构,会在单个Library工程或多个Library工程中创建WSDL和XSD资源。图4展示了UML-to-SOA转换所创建的CreditManagement库工程。



  图4. CreditManagement库工程
 
  源到输出的映射


  以下表介绍了源和输出对象之间的映射。



  源和输出对象之间的映射


  将UML服务提供者组件转换为SCDL模块


  根据特殊的软件服务的设计,UML-to-SOA转换生成不同类型的SCDL模块。关于用UML设计软件服务的详情可以在前面的关于SOA建模的文章中找到。


  图5是UML模型的一个片段,显示了将Customer Order Handling UML活动作为所拥有的行为的UML组件所表示的Customer Order Handling服务提供者。



  图5. 部分UML模型
 
  对于服务提供者的设计,转换创建包含实现BPEL的单个SCDL组件的SCDL模块工程(参见图6)。要了解将UML活动映射为BPEL过程的详细情况,请参见引自参考资料中,标题为“从UML到BPEL”的来自SOA建模系列的文章。



  图6. 拥有实现BPEL的单个SCDL组件的SCDL模块工程
 
  图7展示了UML组成结构图,它展示了Customer Order Handling服务提供者的分解。



  图7. UML组成结构图
 
  在这种情况下,转换为服务提供者的每个UML部分创建SCDL组件,并且从而将这些组件捆绑到代表服务提供者的UML组件的内部结构上(参见图8)。



  图8. 捆绑到UML组件上的SCDL组件
 
  由UML组件通过UML端口提供的,代表服务提供者的所有接口成为SCDL导出。通过UML端口显露出的所有所需的接口成为SCDL导入。在该实例中,通过myRole端口所显露的提供了的CustomerOrderHandling接口用于生成myRoleExport.export文件。OrderVerification、PaymentHandling、CustomerServiceRepresentative,和AccountManager端口用于创建相应的导入文件。


  通过对具体领域的数据类型和接口的引用来转换UML模型


  一些数据类型库成为了特殊行业的推荐的或官方的标准。举例来说,Health Level Seven(HL7),它是在卫生保健领域中执行的许多ANSI认可的标准开发组织(ANSI-accredited Standards Developing Organizations)之一,提供XSD格式的临床和管理数据标准。在许多情况下,对具体行业的类型和数据集的使用是软件的关键需求。


  处理对现有XSD数据类型的引用


  要实现该需求,软件服务的UML模型可能使用对现有XSD类型的引用。在这种情况下,UML-to-SCDL转换创建一个库工程,并且将包含被引用的XSD数据类型的XSD资源从其父工程中拷贝到库工程中,包括文件夹结构和所有用XSD include或XSD import引用的XSD方案。创建的库工程的名字与包含最初被引用的XSD方案的工程的名字相同。如果被包含或被导入的XSD方案在不同的工程中,那么转换将创建相应的库工程,并且在需要处添加工程依赖。


  处理对WSDL端口类型的引用


  软件服务的UML模型用与现有的XSD数据类型相似的方式使用对现有WSDL端口类型的引用。转换对 WSDL 端口类型的引用的处理方式与对XSD数据类型的一样。利用通过XSD include或XSD import引用的WSDL导入和XSD方法,转换为在UML模型及所有被引用的WSDL文件中引用的WSDL端口类型创建所有必要的库工程。


  处理引用的Java接口和Java类


  UML-to-SOA转换通过引用现有Java接口和类作为源来支持软件服务的UML模型。这令您能够将新的服务设计为已经拥有Java实现并且通过Java接口来显露的现有服务的聚集或组合。当转换在解析源模块的过程中遇到Java接口或类时,它创建Java工程的副本。副本包含Java源代码,以及它所依赖的所有Java工程,这些被转移到被选为转换目标容器的工程中。


  将转换的输出导入到IBM WebSphere Integration Developer中


  要创建、完成,并测试Web应用程序,转换输出必须被导入到WebSphere Integration Developer中(通过选择File>Import>Existing Projects into the Workspace)。所有被转换创建的工程必须被一个个导入到WebSphere Integration Developer工作区中。被导入的工程包含依赖关系。如果以错误的顺序导入工程,那么构建可能有错。在这种情况下,简单地清除并重新构建所有被导入的工程。


  然后,在WebSphere Integration Developer中完成这些任务:


  ·向空实现的组件添加实现。
  ·捆绑所有导入。


  总结


  您可以在本系列最后一篇文章中(向SOA转换:第4部分. UML到BPEL)找到更多关于SOA转换的信息。同样,要了解额外的信息,务必查看参考资料中的引用和链接。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐