Gerenciando Referências não Resolvidas a Objetos Gerados Anteriormente em Transformações de Modelo em Modelo

Quando uma transformação de modelo em modelo é executada, ela gera outros objetos ou referências aos objetos gerados, dependendo das configurações de recursos nesse metamodelo. Se a transformação gerar objetos, ela registrará informações de identificação sobre esses objetos em um mapa de hash. A transformação resolve referências em objetos durante o pós-processamento com base nesse mapa de hash. No entanto, se o mapa hash não contiver informações suficientes, você deverá gerenciar as referências.
Por Que e Quando Desempenhar Esta Tarefa

Em metamodelos UML, os recursos de elementos possuem uma propriedade booleana chamada containment. Se a propriedade containment estiver configurada como true, os objetos serão colocados no recurso de uma instância do elemento. Se a propriedade containment estiver configurada como false, apenas uma referência ao objeto será colocada nesse recurso de uma instância. A transformação resolve a referência durante o pós-processamento.

Durante o pós-processamento, a transformação utiliza uma regra chamada FinalizeRule para procurar cada registro de referência adiado para localizar um objeto para resolver a referência. Se a transformação localizar um objeto, ela criará a referência no recurso de saída designado da instância. Se o tempo de execução da autoria de transformação localizar um mapa hash que tenha o ID da transformação, ele utilizará o objeto de origem para localizar o objeto de destino no mapa hash. Se o tempo de execução localizar mais de um objeto candidato, ele chamará o filtro de saída, se definido, para selecionar um. Se o submapa não tiver um filtro de saída definido, a transformação utilizará o primeiro objeto de destino que localizar para resolver a referência. Se nenhum objeto de destino for localizado, a transformação registrará um erro e exibirá uma mensagem.

Para gerenciar referências a objetos:

  1. Antes de executar a transformação, se você souber que existem vários objetos candidatos para uma referência, crie um filtro de saída para os submapas correspondentes para que o objeto correto seja utilizado para resolver a referência.

    Para obter instruções detalhadas, consulte o tópico "Especificando Filtros de Objetos de Entrada e Saída nas Regras de Mapeamento do Submapa".

  2. Execute a transformação.
  3. Se for exibida uma mensagem de erro indicando que um objeto de destino não foi localizado, crie ou modifique o filtro de saída para que a transformação possa localizar o objeto correto, no caso de ter sido gerado.
    Nota: Muitas vezes, um objeto de destino não é localizado porque não foi gerado. Certifique-se de que todas as transformações relevantes tenham sido executadas para que todos os objetos de destino necessários fiquem disponíveis.
  4. Execute novamente a transformação para verificar se todas as referências foram resolvidas.

Feedback