导入 Rational Rose 特性

本主题说明如何进行设置以导入 IBM® Rational Rose® 特性。另外,还描述了如何在 IBM Rational® Rhapsody® 中查看已导入的特性以及如何对 Rational Rhapsody 模型中已导入的 Rational Rose 特性进行后处理。

关于此任务

导入 Rational Rose 模型详细说明了如何导入 Rational Rose 模型,在导入该模型期间,还可以导入其特性。

您必须根据工具、元类和特性名来定义所要导入的 Rational Rose 特性,为此,必须创建一个 XML 映射文件。在 Rational Rhapsody 中执行导入过程时,可以在“导入选项”窗口中指定这个 XML 映射文件。

设计 XML 映射文件

过程

  1. 确定要使用的 XML 映射文件。Rational Rhapsody 产品提供了 XML 映射文件样本,您可以使用这些样本来设计 XML 映射文件。XML 映射文件样本位于 <Rational Rhapsody installation path>/Share/etc 中。
    • rose_properties_import.xml 是基本映射文件,其中包含常用属性值的列表以及 Rose 工具列表。
    • rose_properties_import_java.xml 专门用于导入 Java Rational Rose 模型。
      注: 此 XML 映射文件的缺省位置和名称是 <Rational Rhapsody installation path>/Share/etc/rose_properties_import.xml。您可以通过将 RoseInterface::Import::PropertiesXMLPath 特性修改为指向另一 XML 映射文件路径来更改此位置。
  2. 使用任何文本编辑器来修改 XML 映射文件。对于此 XML 映射文件中的每个特性,必须包括其元类、工具和特性名以供 Rational Rose 使用。例如,假定 Rational Rose 模型中有一个 NewClass 类,并且您要将其导入到 Rational Rhapsody 中,如下图所示:
    “类规范”窗口
    XML 映射文件将包含以下映射:
    XML 映射文件

Rational Rhapsody 中查看导入的 Rational Rose 特性

过程

  1. 继续进行从 Rational Rose 导入 NewClass 的示例:在 Rational Rhapsody 中的浏览器中,展开导入的类所在的包,并对这个类打开“特征”窗口。
  2. 根据导入的类是否随缺省 Rational Rose 设置一起导入,执行以下操作:
    1. 如果该类是随 Rational Rose 缺省特性设置一起导入的,请选择已覆盖
    2. 如果该类是随 Rational Rose 缺省设置以外的特性设置一起导入的,请选择已局部覆盖。在我们这个导入 NewClass 类的示例中,其特性设置与 Rational Rose 缺省类设置有所不同,因此请选择已局部覆盖,如下图所示:
      “特征”窗口 - 显示了局部覆盖的特性的“特性”选项卡

下一步做什么

导入 Rational Rose 特性后,必须使用 Rational Rhapsody 应用程序编程接口 (API) 对模型进行后处理。有关如何使用 Rational Rhapsody API 对特性进行处理的信息,请参阅此文档

以下代码样本是对本主题中的示例的扩展,此样本说明了如何通过 Rational Rhapsody API 来检索特性值。此示例将打印包中所有符合以下条件的类的报告:这些类的 Model::Class::Java_Final 特性(导入的 Rational Rose 特性)的值为 True
Public Sub PrintFinalClasses(p As IRPPackage)
'
'Routine to print names of all final classes imported from Rose
'
    Dim allClassifiers As RPCollection
    Set allClassifiers = p.nestedClassifiers
    Dim c As RPClassifier
    For Each c In allClassifiers
        isClass = c.isOfMetaClass("Class")
        If isClass Then
            On Error Resume Next
            If c.getPropertyValue("Model.Class.Java_Final") = "True" Then
                Print c.getFullPathName
            End If
        End If
    Next
End Sub

反馈