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 execution 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转换的信息。同样,要了解额外的信息,务必查看参考资料中的引用和链接。