可从单个输入对象生成多个对象的模型到模型变换的样本配置

本样本说明如何使用互相依存的映射声明从单个输入对象生成多个对象。
开始之前
要设置样本,请使用“可从单个输入对象生成多个对象的模型到模型变换的设置指示信息”中的指示信息。
关于此任务
该变换将从单个输入对象生成多个相关对象,而不需要变换的编写者编写大量的定制代码。
  1. 在运行时工作台的“包资源管理器”视图中,展开源项目,展开模型并展开 Source1。 Source1 包含具有两个类(A 和 B)的包。
  2. 展开目标项目并双击名为将 source1 变换为 target1.tc 的变换配置文件。
  3. 在变换配置编辑器中,单击运行。
  4. 在目标项目中,展开模型并展开 Target1。 请注意,对于输入模型中的每个类,变换都创建以下元素:
    • 接口,该接口的名称是具有字母“I”前缀的源类的名称
    • 实现类,该实现类的名称是具有“Impl”后缀的源类的名称
    • 从实现类至接口的接口实现
结果

要查看变换如何工作,请考虑它解决的问题:假设您正在编写变换并且要使用 Package2Package 映射声明中的 Class2InterfaceRealization 映射声明来创建接口实现。但是,子图映射的目标功能部件(UML 类的接口实现)在 Package2Package 映射声明中不可见。如何映射至已缺失的目标功能部件?

注: 以下文本中的项编号指的是附带的图中的项。

要将接口实现作为目标提供,请在 Package2Package 映射声明中创建从 packageElement 功能部件到 packageElement 功能部件的子图(图上的项 1)。此子图递归地引用了它的父 Package2Package 映射声明并以这种方式提供对嵌套包及它们的内容的支持。因此,您现在可以定义从 packageElement 功能部件到 packageElement 功能部件的其他子图了。子图可以引用其他映射声明:Class2Class(项 2)和 Class2Interface(项 3)。

创建 Class2Class 映射声明时,可以使用将整个类元素作为其输入的子图(项 4)。对于输出,请选择 interfaceRealization。此操作的结果是使 Class2Interface 映射声明可用,通过使用该映射声明,您可以创建将整个类元素作为它们的输入并将供应端功能部件作为它们的输出的其他子图(项 5 和项 6)以及客户端功能部件。生成变换代码时,此处定义的子图将不创建输出对象,而创建对输出对象(由从其他映射声明生成的变换创建)的引用。

生成变换代码时,供应端功能部件和客户端功能部件都必须引用从输入 UML 对象生成的 UML 对象。要指定要引用的输出对象,请编写子图定义,以便定义标识映射声明(Class2Class 或 Class2Interface),这些映射声明的生成的变换负责从同一输入生成特定的输出对象(类或接口)。

有关详细信息,请检查样本变换配置。在图中,从子图指向映射声明顶部的箭头指示该子图引用该映射声明。例如,标签为“1”的箭头引用 Package2Package 映射声明。

用于显示样本中映射声明之间的关系的组合图
相关信息
可从单个输入对象生成多个对象的模型到模型变换的设置指示信息

反馈