Para ver como a transformação funciona, considere o problema que ela resolve: Suponha que você esteja criando uma transformação e deseja usar a declaração de mapeamento Class2InterfaceRealization na declaração de mapeamento Package2Package para criar a realização da interface. No entanto, o recurso de destino para um mapeamento do submapa, uma realização da interface de uma classe UML, não é visível na declaração de mapeamento Package2Package. Como você pode mapear para um recurso de destino ausente?
Para fornecer a Realização da Interface como um destino, crie um submapa do recurso packageElement para o recurso packageElement na declaração de mapeamento Package2Package (item 1 na figura). Esse submapa faz referência à sua declaração de mapeamento Package2Package pai, recursivamente, e dessa maneira, fornece suporte para pacotes aninhados e seu conteúdo. Como resultado, é possível definir agora submapas adicionais do recurso packageElement para o recurso packageElement. Os submapas podem fazer referência a outras declarações de mapeamento: Class2Class (item 2) e Class2Interface (item 3).
Ao criar a declaração de mapeamento Class2Class, você pode usar um submapa (item 4) que tem como sua entrada o elemento Class inteiro. Para a saída, selecione interfaceRealization. O resultado disso é disponibilizar a declaração de mapeamento Class2Interface, com a qual você cria dois submapas adicionais (itens 5 e 6) que também têm como sua entrada o elemento Class inteiro e como sua saída o recurso fornecedor e o recurso cliente. Ao gerar o código de transformação, os submapas definidos aqui não criam objetos de saída, mas criam referências aos objetos de saída que são criados para transformações geradas de outras declarações de mapeamento.
Ao gerar o código de transformação, os recursos de saída fornecedor e cliente devem fazer referência aos objetos UML que foram gerados dos objetos UML de entrada. Para especificar os objetos de saída a serem referidos, grave as definições de submapas, para que elas identifiquem a declaração de mapeamento, Class2Class ou Class2Interface, cuja transformação gerada é responsável por gerar o objeto de saída específico, Class ou Interface, da mesma entrada.
Para obter detalhes, examine a configuração de transformação de amostra. Na figura, as setas que apontam de um submapa para a parte superior de uma declaração de mapeamento, indicam que o submapa faz referência à declaração de mapeamento. Por exemplo, a seta etiquetada como "1" faz referência à declaração de mapeamento Package2Package.
