Configuração de Amostra para uma Transformação de Modelo-a-Modelo que Gera Múltiplos Objetos de um Único Objeto de Entrada

Essa amostra mostra como usar declarações de mapeamentos interdependentes para gerar múltiplos objetos de um único objeto de entrada.
Antes de Iniciar
Para configurar a amostra, use as instruções em "Configurar Instruções para uma Transformação de Modelo-a-Modelo que Gera Múltiplos Objetos de um Único Objeto de Entrada".
Por Que e Quando Desempenhar Esta Tarefa
A transformação gera múltiplos objetos relacionados de um único objeto de entrada sem precisar que o autor da transformação grave o código customizado extensivo.
  1. No ambiente de trabalho de tempo de execução, na visualização Package Explorer, expanda o projeto de origem, expanda Modelos e expanda Source1. O Source1 contém um pacote com duas classes nele: A e B.
  2. Expanda o projeto de destino e clique duas vezes no arquivo de configuração de transformação denominado Transformar source1 em target1.tc.
  3. No editor de configuração de transformação, clique em Executar.
  4. No projeto de destino, expanda Modelos e expanda Target1. Observe que para cada classe no modelo de entrada, a transformação criou os seguintes elementos:
    • Uma interface, cujo nome é o nome da classe de origem precedido pela letra "I"
    • Uma classe de implementação, cujo nome é o nome da classe de origem seguido por "Impl"
    • Uma realização da interface da classe de implementação para a interface
Resultados

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?

Nota: Os números de itens no seguinte texto se referem aos itens na figura que acompanha.

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.

Diagrama composto que mostra os relacionamentos entre as declarações de mapeamento na amostra
Informações relacionadas
Configurar Instruções para uma Transformação de Modelo-a-Modelo que Gera Múltiplos Objetos de um Único Objeto de Entrada

Feedback