IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope: Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  Rational  >

构建 Eclipse 插件扩展 Rational Software Architect 的 UML to WSDL 转换

一步步的指导您怎样建立插件,以扩展 Rational Software Architect 的转换特性

developerWorks
文档选项

未显示需要 JavaScript 的文档选项

样例代码

英文原文

英文原文


级别: 高级

Sefa Sevtekin, 资深信息工程师, IBM

2009 年 9 月 11 日

本文带您浏览了,通过定制汇集来将 IBM Rational Software Architect UML 扩展至 WSDL 转换的技巧。

UML 到 WSDL 转换产生的产品的结构,取决于 UML 源模型的结构。IBM® Rational® Software Architect UML 到 WSDL 转换,使用汇集来产生网络服务描述语言(WSDL)文件。在这里描述了特定的步骤。

前提条件

为了遵循这些步骤,您需要理解 Java™编程模型, Eclipse 插件结构和开发,以及 IBM Rational Software Architect 转换管理概念。本文中描述的步骤使用 IBM Rational Software Architect Version 7 来得到执行。

Rational Software Architect UML 到 WSDL 的转换使用汇集,来产生网络服务描述语言(WSDL)文件。定制汇集有一些主要的步骤:

  1. 使用项目交换功能,来导入带有预定义 UML 元素的已存在 UML 项目。运行 UML 到 WSDL 转换,以生成 WSDL 文件。通过使用项目交换机理来保存和导出项目。稍后您将会使用项目来测试转换和比较生成的 WSDL 文件。

  2. 创建一个插件项目以创建转换扩展。

  3. 添加一系列需要的插件附件。这些插件定义了您正在使用的扩展点,并提供您需要以激发扩展的 APIs。

  4. 在插件描述器中定义扩展点,它识别了您想要扩展并在此中做出贡献的转换。

  5. 每一次转换遇到您注册的元素类型时,就会提供 Java 执行的规则。

  6. 通过激发一次运行时工作台并执行转换以测试转换。您将需要导入您早期导出的 UML 项目,并运行 UML 到 WSDL 转换,以观察您所创建的转换扩展的行为和效果。

在您运行转换时,还会执行您在转换扩展中定义的规则。结果,它会更改 WSDL 汇集到 SOAP 汇集。





回页首


导入项目交换

在这项任务中,您将会导入 UML 项目并运行 UML 到 WSDL 转换。那么您就保存并导出 UML 项目。

  1. 启动 Rational Software Architect。

  2. 切换至 Modeling 视角。

  3. 选择 File > Import

  4. Import 对话框中,将“type filter text” 替换为 project。然后选择 Other 下面的 Project Interchange


图 1. 选择项目交换作为导入类型
选择一个导入源项目


  1. 点击 Next

  2. 点击 Browse,然后导航至 TestUML1.zip文件(查看本产品的下载段落)。点击 Open

  3. 点击 Select All

  4. 点击 Finish

  5. 花一些时间浏览导入项目中的 UML Model


图 2. 导入的项目
主要选择的 Project Explorer 视图


  1. 双击预配置的WSDLconfig1.tc转换配置。花一些时间以浏览 Transformation Configuration;浏览 Source and TargetCommon 项。注意 Visual Merge 选项为 Merge Options 而选择。

  2. 右击 WSDLconfig1.tc 转换配置和 Transform > UML to WSDL .

  3. 点击 OK 以合并转换输出(见于图 3)。


图 3. 合并配置的显示
转换合并视图, Source 与 Target 部分


  1. 点击 OK 以保存(见于图 4)。


图 4. 保存您选择替换的目标资源
SaveTarget 视图


  1. 打开 TestUML 项目下 TestUML 文件夹中的 Component1.wsdl 文件。检查 WSDL 汇集段落,这会在列表 1 中以粗体字显示。


列表 1. WSDL 绑定部分
				
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
     xmlns:tns="http://test.sample/Component1/"
     xmlns:wsdl_1="http://test.sample/"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
     name="Component1"
     targetNamespace="http://test.sample/Component1/">
  <wsdl:import location="test.sample.wsdl" namespace="http://test.sample/"/>
 <wsdl:binding name="Interface1Binding" type="wsdl_1:Interface1">
    <wsdl:operation name="Operation1">
      <wsdl:input/>
      <wsdl:output/>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="interface1">
    <wsdl:port binding="tns:Interface1Binding" name="Interface1Port"/>
  </wsdl:service>
</wsdl:definitions>

  1. 您可以使用这个项目,以在下一个任务中测试您的插件项目。通过选择 File > Export 导出您的项目。

  2. Import 对话框中,将“type filter text”替换为 project

  3. 然后选择 Other 下面的 Project Interchange,如图 5 所示。


图 5. 选择项目交换作为输出的类型
选择 Project Interchange 的 导出视图


  1. 点击 Next

  2. 点击 Browse 然后切换至您选择的文件夹,并输入 TestUML2.zip 文件的名字。

  3. 点击 Save 后点击 Finish

  4. 右击项目上的 TestUML 并选择 Close Project





回页首


创建一个插件项目

现在您可以创建一个插件项目,以扩展包含 UML 到 WSDL 转换,这样它就能生成 WSDL 文件。

  1. 选择 File > New > Project。

  2. New 对话框中,将“ type filter text”替换为 plug-in,然后选择 Plug-in Project,如图 6 所示。


图 6. 创建一个插件项目



ALT:Plug-in Project 向导视图

  1. 点击 Next

  2. 命名项目为 com.ibm.uml2.wsdl.binding.extension, 并让剩下的设置保持默认值(见于图 7)。


图 7. 创建一个插件项目
只更改了项目名


  1. 将默认的 Plug-in Name 区域更改为 UML-to-WSDL Transformation Extension,并将剩下的默认设置保持不变(见于图 8)。


图 8. 创建一个插件项目
Plug-in Content 视图


  1. 点击 Next

  2. 在下一个视图中(图 9),取消 Create a plug-in using one of the templates 选项的选择,并点击 Finish


图 9. 创建一个插件项目
未选中的复选框


  1. 在 Open Associated Perspective? 对话框中(如图 10 所示),点击 Yes 以切换至 Plug-in Development 视角。


图 10. 切换至 Plug-in Development 视图
Open Associated Perspective 对话框






回页首


添加所需的插件

  1. 如果它还没有打开,那么就打开 plugin.xml 文件,切换至 Dependencies 项,并点击 Add

  2. 输入 com.ibm.xtools.transform.core, 在列表中选择第一个选项,然后点击 OK

图 11. 添加附件
List in Plug-in Selection 视图


  1. 重复前面的步骤,以添加以下的附近(如图 12 所示):
    1. com.ibm.xtools.transform.uml2.wsdl

    2. org.eclipse.xsd

    3. org.eclipse.wst.wsdl

    4. org.wsdl4j




图 12. 添加附件



  1. 切换至 Extensions 项然后点击添加 com.ibm.xtools.transform.core.transformationExtensions


图 13. 添加附件
New Extension 视图


  1. 保存 plugin.xml 文件。





回页首


定义扩展点

尽管您可以通过使用相对项来完成剩下的更高,在 plugin.xml 文件的原始代码中完成这一步会更快。

  1. 切换至 plugin.xml 项。

  2. 在扩展点,添加包含列表 2 中所示信息的以下元素(同样见于图 14)。


列表 2. 向扩展点添加一个元素
				
<TransformationExtension
  version="7.0.0"
  name="TEST-BINDING binding extension"
  enabled="true"
  targetTransformation="com.ibm.xtools.transform.uml2.wsdl.internal.Uml2WsdlTransform.RS"
  id="com.ibm.xtools.transform.uml2.wsdl.extension.TEST-BINDING">
 </TransformationExtension>


图 14. 添加至扩展点的元素
屏幕截图显示了绿色类型的表量


  1. TransformationExtension元素中,创建一个包含了列表 3 和图 15 中所示信息的属性。


列表 3. 添加的属性
				
	<Property
		id="com.ibm.xtools.transform.uml2.wsdl.bindings.TEST-BINDING"
            metatype="string"
            name="com.ibm.xtools.transform.uml2.wsdl.bindings"
            readonly="true"
            value="TEST-BINDING"/>


图 15. 添加的属性
绿色类型变量代码的屏幕截图


  1. 在您于前面步骤中创建的属性里,定义以下的规则为列表 4 和图 16 中所示的那样。


列表 4. 定义规则
				<RuleDefinition
  class="com.ibm.uml2.wsdl.binding.extension.TestBindingAddressExtensionRule"
  id="TestBindingAddressExtensionRule"
  name="TestBindingAddressExtensionRule"/>

<RuleDefinition
  class="com.ibm.uml2.wsdl.binding.extension.TestBindingBindingExtensionRule"
  id="TestBindingBindingExtensionRule"
  name="TestBindingBindingExtensionRule"/>

<RuleDefinition
  class="com.ibm.uml2.wsdl.binding.extension.TestBindingBindingOperationExtensionRule"
  id="TestBindingBindingOperationExtensionRule"
  name="TestBindingBindingOperationExtensionRule"/>


图 16. 定义的规则
代码的屏幕截图


  1. TransformationExtension元素中,创建如列表 5 和图 17 所示的 ExtendTransform 元素。


列表 5. ExtendTransform 元素
<ExtendTransform targetTransform="AddressExtensionTransform">
	<AddRule id="TestBindingAddressExtensionRule"/>
</ExtendTransform>

<ExtendTransform targetTransform="BindingExtensionTransform">
      <AddRule id="TestBindingBindingExtensionRule"/>
</ExtendTransform>

<ExtendTransform targetTransform="BindingOperationExtensionTransform">
      	<AddRule id="TestBindingBindingOperationExtensionRule"/>
</ExtendTransform>


图 17. 配置 plugin.xml文件代码
添加元素的屏幕截图


  1. 点击 File > Save。





回页首


为转换规则提供 Java 执行

  1. 对于您每一个您在 plugin.xml 中定义的规则,创建您在前面任务中创建插件中相对应的 Java 类。您创建的 Java 类必须扩展相对应的抽象类,并执行相对应的抽象方法:
    1. com.ibm.uml2.wsdl.binding.extension.TestBindingAddressExtensionRule 类必须扩展com.ibm.xtools.transform.uml2.wsdl.util.AbstractAddressExtensionRule

    2. com.ibm.uml2.wsdl.binding.extension.TestBindingBindingExtensionRule 类必须扩展com.ibm.xtools.transform.uml2.wsdl.util.AbstractBindingExtensionRule

    3. com.ibm.uml2.wsdl.binding.extension.TestBindingBindingOperationExtensionRule 类必须扩展com.ibm.xtools.transform.uml2.wsdl.util.AbstractBindingOperationExtensionRule



  2. 右击 src\com.ibm.uml2.wsdl.binding.extension 文件夹并选择 Import

  3. Import 对话框中,将 type filter text 替换为 file。然后选择 General 之下的 File System under,如图 18 所示。


图 18. 选择 File System 作为导入类型
Import 对话框


  1. 点击 Next

  2. 浏览 Java™ 文件的位置(见于 Java 文件的下载区),并只选择图 19 所示的 Java 文件。


图 19. 导入规则执行
Import 视图


  1. 点击 Finish 并花一些时间来检查导入的 Java 文件(见于图 20)。


图 20. 导入规则执行
Package Explorer 项树状视图






回页首


测试转换扩展

在这一项任务中,您将会学到在一个单独的 Eclipse 工作台中测试转换插件。您将会导入您用于 UML 到 WSDL 转换的测试 UML 模型。然后您就能够比较转换结果了。

  1. 选择 com.ibm.uml2.wsdl.binding.extension 插件项目,并从工具栏中选择 Run > Debug

  2. 双击 Run Configuration 对话框中的 Eclipse Application,然后将配置的名字更改为 Transformation Extension Launch。将剩下的设置保持默认值。

  3. 点击 Debug(如图 21 所示)。这会启动一个新的 Eclipse 工作台。


图 21. 设置启动配置
Debug 视图


  1. Welcome 界面上,点击带有黄色标记的箭头图标 以回到工作台。

  2. 切换至 Modeling 视角。

  3. 选择 File > Import

  4. 在 Import 对话框中,将“type filter text”替换为 project。然后选择 Other 下的 Project Interchange,如图 22 所示。


图 22. 选择 Project Interchange 作为导入类型
Import Select 视图


  1. 点击 Next

  2. 点击 Browse 然后导航至 TestUML2.zip 文件的位置,然后选择您在前面任务中导出的 TestUML2.zip 文件(如果您在任务 1 中还没有导出文件的话,那么您可以从下载区下载它)。点击 Open

  3. 点击 Select All

  4. 点击 Finish

  5. 双击 WSDLconfig1.tc 转化配置以打开它。

  6. 在 Project Explorer 中右击 WSDLconfig1.tc 并选择 Transform > UML to WSDL。

  7. 在 Transformation Merge 对话框中,花一些时间来浏览规范转化结果与扩展转化结果之间的更改。注意汇集会更改为 SOAP-Document-Literal,而且 SOAP 地址也会被添加(见于图 23)。


图 23. 比较转换结果
Transform Merge 视图,有四个部分


  1. 点击对话框中间第一个箭头图标:Copy All from Left to Right


图 24. 接受变更
Right-arrow 图标


  1. 点击 OK 两次以保存更改。


图 25. 保存更改
Save Target dialog with checkbox checked


现在,您的 WSDL 地址已经生成并可以编辑了。





回页首


致谢

特别感谢 Dmitry Gorelik, Lee Ackerman,Aaron Allsbrook,和 Jim Conallen 对本文所做的支持和贡献 。






回页首


下载

描述名字大小下载方法
示例项目extend_uml_wsdl_inputs.zip9 KBHTTP
关于下载方法的信息


参考资料

学习

获得产品和技术

讨论


关于作者

作者照片

Sefa Sevtekin 是 IBM Rational 软件服务部的一名高级解决方案架构师。他一直与客户一起使用 IBM Rational 工具实施模型驱动架构(MDA)。他已经交付过各种各样的国际研讨会、讨论会、技术文章、客户培训和咨询服务。




对本文的评价








IBM 和 IBM 商标属于国际商业机器公司,包括美国以及其它国家。 Java 和所有基于 Java 的商标属于 Sun 微系统公司,包括美国和其它国家。 其他公司、产品或服务的名称可能是其他公司的商标或服务标志。

IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款