< Anterior | Próximo >

Lição 7: Criar e Refinar uma Declaração de Mapeamento de Modelo para Modelo

Esta lição mostra como gerar uma declaração de mapeamento de modelo para modelo no modelo de mapeamento. Essa declaração de mapeamento contém uma regra de mapeamento customizada que, no momento em que você executar a transformação gerada, criará um modelo de saída de destino cujo nome é derivado do modelo de entrada de origem. Esta lição também mostra como alterar a ordem na qual a transformação processa as declarações de mapeamento no modelo de mapeamento.
Por Que e Quando Desempenhar Esta Tarefa

Para renomear o modelo de destino gerado pela transformação, você pode criar uma regra de transformação customizada entre os objetos de entrada e saída, em vez de criar uma regra de mapeamento entre os recursos dos objetos de entrada e saída.

Para criar uma declaração de mapeamento de modelo para modelo:

  1. Se o modelo de mapeamento não estiver aberto no editor de mapeamentos de transformação, na visualização Package Explorer, dê um clique duplo no arquivo .mapping na pasta model.
  2. No editor de mapeamentos de transformação, na seção Raiz do Mapeamento, clique com o botão direito em Generalize_Classes e clique em Criar Mapa.
  3. Na janela Novo Mapa, no campo Nome do mapa, digite Model2Model e clique em OK. O mapa é exibido na visualização Esboço e é aberto na seção Raiz do Mapeamento da área do editor.

Incluir Objetos de Entrada e Saída na Declaração de Mapeamento de Modelo para Modelo

Por Que e Quando Desempenhar Esta Tarefa

Depois de criar a declaração de mapeamento de modelo para modelo, você precisa incluir nela um objeto de entrada e um objeto de saída. Nesta lição, você especificará um modelo como objeto de entrada e saída.

Para incluir um objeto de entrada e um objeto de saída na declaração de mapeamento de modelo para modelo:

  1. Clique no ícone Incluir um objeto de entrada, que corresponde ao ícone na extremidade esquerda da barra de ferramentas referente ao mapa que você está editando.
  2. Na janela Incluir Entrada, no painel Elemento, expanda uml, clique em Modelo e em OK.
  3. Clique no ícone Incluir um objeto de saída, que corresponde ao segundo ícone a partir da esquerda na barra de ferramentas referente ao mapa que você está editando.
  4. Na janela Incluir Saída, no painel Elemento, expanda uml, clique em Modelo e em OK.
  5. Clique em Arquivo > Salvar.
Resultados
Agora, você já pode definir as regras de mapeamento entre os objetos de entrada e saída.

Definir as Regras de Mapeamento de Submapa e Customizada

Por Que e Quando Desempenhar Esta Tarefa
Nesta lição, você criará as seguintes regras de mapeamento:
  • Uma regra de mapeamento customizada que renomeie o modelo de destino gerado pela transformação
  • Uma regra de mapeamento de submapa que invoque a transformação Package2PackageTransform, para transformar os pacotes no modelo

Para criar as regras de mapeamento na declaração de mapeamento:

  1. Crie uma regra de mapeamento customizada que renomeie o modelo de destino:
    1. Na área do editor, clique no compartimento superior do objeto de entrada de Modelo. O objeto de entrada de modelo inteiro fica realçado.
    2. Arraste a alça do objeto de entrada de Modelo até o objeto de saída de Modelo.
    3. No novo elemento Submapa, clique na seta para baixo e Customizado.
    4. Clique com o botão direito no elemento Customizado e clique em Mostrar em Propriedades.
    5. Na visualização Propriedades, na guia Detalhes, clique em Seqüencial.
    6. Na área de texto abaixo do campo Código, na assinatura de método, especifique o seguinte código: Model_tgt.setName(Model_src.getName()+"TgtModel");
    7. Clique em Aplicar.
    Nota: Para renomear o modelo de destino, você também pode criar uma regra de mapeamento customizada entre o atributo name do objeto de entrada e do objeto de saída e especificar o mesmo código na guia Detalhes, em vez de criar uma regra de mapeamento entre os objetos de entrada e saída.
  2. Crie uma regra de mapeamento de submapa que invoque o mapeamento Package2Package criado na Lição 6: Criar e Refinar uma Declaração de Mapeamento de Pacote para Pacote:
    1. Arraste a alça do recurso packagedElement até o atributo packagedElement no objeto de saída de modelo.
    2. Clique com o botão direito no novo elemento Submapa e clique em Mostrar em Propriedades.
    3. Na visualização Propriedades, na guia Detalhes, a partir da lista Mapa, selecione Package2Package.
  3. Clique em Arquivo > Salvar.
Resultados
Você criou todas as declarações de mapeamento e regras de mapeamento que são necessárias para este tutorial. Agora, já pode especificar a ordem de processamento das declarações de mapeamento.

Alterar a Ordem de Processamento das Declarações de Mapeamento

Por Que e Quando Desempenhar Esta Tarefa

Você pode alterar a ordem de processamento de declarações de mapeamento em um modelo de mapeamento. A visualização Esboço lista as declarações de mapeamento na ordem em que serão processadas quando você executar o código de transformação gerado. Ao alterar a ordem de processamento, você pode especificar instruções de processamento para objetos de entrada que possam ser processados e consumidos por uma declaração de mapeamento menos específica.

Para este tutorial, especifique que a transformação gerada processe as declarações de mapeamento na seguinte ordem:
  • Model2Model
  • Package2Package
  • Class2Class
  • Class2Interface
  • Operation2Operation
  • Parameter2Parameter
  • Primitive2Primitive
Nota: Neste tutorial, a ordem das declarações de mapeamento Model2Model e Package2Package mapping é a mais importante. Quando você executar a transformação gerada, já que um modelo é um pacote, a transformação Package2Package aceitará um modelo ou um pacote. Se a transformação Package2Package for a primeira listada na transformação, ela processará e consumirá o objeto de entrada de modelo. Neste cenário, a transformação Model2Model não processa o objeto de entrada de modelo e, portanto, a regra customizada criada na transformação Model2Model não é executada.

Para alterar a ordem de processamento das declarações de mapeamento:

  1. Se a visualização Esboço não estiver visível, clique em Janela > Mostrar Visualização > Esboço.
  2. Na visualização Esboço, clique com o botão direito na declaração de mapeamento Model2Model, clique em Ordem de Execução e em Mover para cima. Repita esta etapa até que a declaração de mapeamento Model2Model esteja no topo da lista.
  3. Repita a etapa 2 para cada declaração de mapeamento até que as declarações de mapeamento estejam na mesma ordem que a lista acima.
  4. Clique em Arquivo > Salvar.
Resultados
Agora, você já pode gerar o código-fonte da transformação.
< Anterior | Próximo >

Feedback