内容


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

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

Comments

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 下面的 ProjectInterchange
图 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 部分
转换合并视图, Source 与 Target 部分
  1. 点击 OK 以保存(见于图 4)。
图 4. 保存您选择替换的目标资源
SaveTarget 视图
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 的 导出视图
选择 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 视图
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 对话框
Open Associated Perspective 对话框

添加所需的插件

  1. 如果它还没有打开,那么就打开 plugin.xml 文件,切换至 Dependencies 项,并点击 Add
  2. 输入 com.ibm.xtools.transform.core, 在列表中选择第一个选项,然后点击 OK
图 11. 添加附件
List in Plug-in Selection 视图
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 视图
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 对话框
Import 对话框
  1. 点击 Next
  2. 浏览 Java™ 文件的位置(见于 Java 文件的下载区),并只选择图 19 所示的 Java 文件。
图 19. 导入规则执行
Import 视图
Import 视图
  1. 点击 Finish 并花一些时间来检查导入的 Java 文件(见于图 20)。
图 20. 导入规则执行
Package Explorer 项树状视图
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 视图
Debug 视图
  1. Welcome 界面上,点击带有黄色标记的箭头图标 以回到工作台。
  2. 切换至 Modeling 视角。
  3. 选择 File > Import
  4. 在 Import 对话框中,将“type filter text”替换为 project。然后选择 Other 下的 ProjectInterchange,如图 22 所示。
图 22. 选择 Project Interchange 作为导入类型
Import Select 视图
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 视图,有四个部分
Transform Merge 视图,有四个部分
  1. 点击对话框中间第一个箭头图标:Copy All from Left to Right
图 24. 接受变更
Right-arrow 图标
Right-arrow 图标
  1. 点击 OK 两次以保存更改。
图 25. 保存更改
Save Target dialog with checkbox checked
Save Target dialog with checkbox checked

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

致谢

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


下载资源


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Rational
ArticleID=434793
ArticleTitle=构建 Eclipse 插件扩展 Rational Software Architect 的 UML to WSDL 转换
publish-date=09112009