Autoria da Transformação - Notas sobre o Release

© Copyright International Business Machines Corporation 2006. Todos direitos reservados. Direitos Restritos para Usuários do Governo dos Estados Unidos - Uso, duplicação e divulgação restritos pelo documento GSA ADP Schedule Contract com a IBM Corporation.

Notas sobre o Release

1.0 Limitações
   1.1 Os Perfis da UML Padrão Não São Mapeados Automaticamente ao Criar um Mapeamento de um Modelo para UML
   1.2 Em Transformações de Modelo para Modelo, o Suporte a Fusão Está Disponível Apenas para Modelos de Destino com a Extensão contentTypes
   1.3 Ao Criar Transformações de Modelo para Modelo, os Modelos Ecore Especificados como Entrada ou Saída Devem Ter genmodels Correspondentes
   1.4 Você Deve Especificar um Arquivo como o Contêiner de Destino em uma Configuração de Transformação Modelo para Modelo
   1.5 A Integração da Autoria de Transformação com as Transformações JET Não é Automática
2.0 Problemas Conhecidos e Soluções Alternativas
   2.1 Os Metamodelos UML Não São Incluídos Automaticamente em Mapeamentos de Modelo para Modelo
   2.2 Transformações "para" e "de" Propriedades Filtradas Podem Aparecer Distorcidas no Editor de Mapeamento
   2.3 A Exclusão da Única Referência a um Modelo em um Arquivo de Mapeamento Faz com que o Modelo seja Eliminado do Arquivo de Mapeamento
   2.4 A Opção runSilent Pode Ser Selecionada no Editor de Configuração de Transformação de Modelo em Modelo Se o Modo de Mesclagem For Automatic ou Visual
   2.5 Podem Ocorrer Erros de Mesclagem ao Mapear de um Modelo para UML com um Perfil Registrado, Se o ID de Registro do Perfil Não For Utilizado
   2.6 Ao Gerar Código a Partir de Modelos de Mapeamento, os Arquivos do Projeto Base que Incluam 'plugin.xml' e 'MANIFEST.MF' Não Serão Gerados Novamente

1.0 Limitações

1.1 Os Perfis da UML Padrão Não São Mapeados Automaticamente ao Criar um Mapeamento de um Modelo para UML

Ao criar uma transformação de modelo em modelo, se o destino for um modelo UML 2, os perfis da UML padrão não serão mapeados automaticamente. Por exemplo, o perfil da UML default.epx não é mapeado automaticamente. Você deve mapear esses perfis manualmente ou utilizar a estrutura UMLDefaultLibrariesAddRule. Você poderá incluir manualmente essa estrutura em uma transformação se o destino for uma EClass de modelo UML.

Para incluir a estrutura em uma transformação, inclua o seguinte código na transformação:

    /**
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @generated NOT
     */
    protected void addTransformElements(Registry registry) {
 add(new UMLDefaultLibrariesAddRule());
     addGeneratedTransformElements(registry);
     // Você pode incluir mais elementos de transformação após os gerados aqui
     // Lembre-se de remover a tag @generated ou adicionar NOT a ela
    }

1.2 Em Transformações de Modelo para Modelo, o Suporte a Fusão Está Disponível Apenas para Modelos de Destino com a Extensão contentTypes

Na autoria de transformação de modelo em modelo, para ter suporte a "fusão" no modelo de destino, é necessário ter a extensão "org.eclipse.core.runtime.contentTypes" como um plug-in no espaço de trabalho do Eclipse. É possível especificar essa extensão em um plug-in que tenha um nome de domínio derivado do domínio do modelo de destino. Para obter informações adicionais sobre essa extensão, consulte a documentação do ponto de extensão no projeto Comparar/Mesclar. Isso permite construir uma estratégia de fusão sofisticada para o modelo de destino. Para obter uma estratégia EMF mais simples, é possível especificar a seguinte extensão (substitua "xxx" pela extensão de seu arquivo de destino):

<extension
  point="org.eclipse.core.runtime.contentTypes">
  <file-association
   content-type="com.ibm.xtools.comparemerge.emf.emfContentType"
  file-extensions="xxx"/>
 </extension>

1.3 Ao Criar Transformações de Modelo para Modelo, os Modelos Ecore Especificados como Entrada ou Saída Devem Ter genmodels Correspondentes

Ao criar transformações de modelo para modelo, os modelos Ecore especificados como entrada ou saída devem ter genmodels correspondentes. Para criar genmodels, é possível utilizar o assistente Modelo de EMF. Assegure-se de gerar código depois de criar os genmodels.  Os genmodels devem ser registrados no ambiente de trabalho de desenvolvimento ou devem estar no mesmo caminho que os modelos Ecore correspondentes. Os genmodels devem ter uma extensão de nome de arquivo .genmodel, um nome semelhante e a mesma capitalização que os modelos Ecore. Caso contrário, o mecanismo de autoria de transformação não poderá localizar o genmodel. Se o mecanismo de autoria de transformação não puder localizar os genmodels necessários, ele desativará a geração de códigos.

1.4 Você Deve Especificar um Arquivo como o Contêiner de Destino em uma Configuração de Transformação Modelo para Modelo

Ao criar uma configuração para uma transformação de modelo em modelo, é necessário especificar um arquivo que represente o modelo de destino, mesmo se o arquivo estiver vazio. Não é possível especificar um URI como o contêiner de destino.

Para criar um modelo Ecore vazio, na página Principal do assistente ou do editor de configuração de transformação, clique no botão Criar Novo Contêiner de Destino e especifique um arquivo que tenha a extensão do modelo de destino.

1.5 A Integração da Autoria de Transformação com as Transformações JET Não é Automática

Para integrar uma transformação de modelo em modelo como o front end para uma transformação JET (modelo para texto), você deve incluir manualmente uma instância da estrutura JETRule nas regras 'postProcessing' da RootTransformation que está localizada no provedor de transformação. O exemplo a seguir mostra o código que deve ser incluído na classe do provedor de transformação. Você deve substituir 'xxx' pelo ID da transformação JET.

    /**
     * Cria uma transformação raiz. É possível incluir mais regras na transformação aqui
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @param transform A transformação raiz
     * @generated NOT
     */
    protected RootTransformation createRootTransformation(ITransformationDescriptor descriptor) {
        return new RootTransformation(descriptor, new MainTransform()) {
                   protected void addPostProcessingRules() {
                            add(new JETRule("xxx"));
                   }
        };
   }

2.0 Problemas Conhecidos e Soluções Alternativas

2.1 Os Metamodelos UML Não São Incluídos Automaticamente em Mapeamentos de Modelo para Modelo

Para gerar transformações que recebem ou geram modelos UML, especifique um metamodelo UML como a entrada raiz e/ou a saída raiz da especificação do mapeamento.  A inclusão de um perfil da UML na especificação de mapeamento não inclui automaticamente o metamodelo da UML.

Solução alternativa: Inclua o metamodelo UML clicando no botão Incluir Modelo no editor e no assistente Mapeamento de Transformação Modelo para Modelo.

2.2 Transformações "para" e "de" Propriedades Filtradas Podem Aparecer Distorcidas no Editor de Mapeamento

Os terminais de conectores de mapeamento podem desaparecer se um usuário comutar a filtragem de recursos do modo "Básico" para "Intermediário" ou "Avançado" e então criar mapeamentos e, em seguida, comutar de volta para o modo de filtro "Básico". Isso pode causar o aparecimento de conectores de mapeamento que têm terminais que não se conectam a nada. Isso afeta apenas a aparência dos mapeamentos. Os mapeamentos e o código-fonte que a transformação gera a partir dos mapeamentos não são afetados.

Solução alternativa: Corrija a aparência dos mapeamentos especificando o modo do filtro que estava em efeito quando os mapeamentos foram criados.

2.3 A Exclusão da Única Referência a um Modelo em um Arquivo de Mapeamento Faz com que o Modelo seja Eliminado do Arquivo de Mapeamento

Quando um arquivo de mapeamento não mais contiver mapeamentos que especifiquem elementos de um modelo como entradas ou saídas de mapeamento, o modelo será "eliminado" do arquivo de mapeamento. A verificação por modelos não utilizados é feita sempre que uma entrada ou saída de um mapeamento for excluída. Listas separadas são mantidas no arquivo de mapeamento para entradas e saídas.

Solução alternativa: Você deve incluir o modelo no arquivo de mapeamento antes de poder selecionar elementos desse modelo como entradas ou saídas de mapeamento. Clique no botão Incluir Modelo no Editor de Mapeamento para incluir o modelo no arquivo de mapeamento.

2.4 A Opção runSilent Pode Ser Selecionada no Editor de Configuração de Transformação de Modelo em Modelo Se o Modo de Mesclagem For Automatic ou Visual

No editor de configuração de transformação para transformações de modelo em modelo geradas, a opção runSilent pode ser especificada com qualquer modo de mesclagem, incluindo 'automatic' ou 'visual'. Se o modo de mesclagem for configurado como automatic ou visual, a opção runSilent forçará a estratégia de mesclagem silenciosa se o suporte a fusão for localizado para o modelo de destino. Caso contrário, uma estratégia de mesclagem substituta será utilizada.

2.5 Podem Ocorrer Erros de Mesclagem ao Mapear de um Modelo para UML com um Perfil Registrado, Se o ID de Registro do Perfil Não For Utilizado

Ao criar um modelo de mapeamento de transformação a partir do metamodelo Ecore para um metamodelo UML com perfis, você deverá verificar o URI do perfil que será utilizado em modelos UML de destino. Por padrão, será utilizado o URI do perfil especificado no editor de mapeamento. Se você especificar um URI de recurso, ele será convertido em um URI de plug-in equivalente.

Solução alternativa: É possível especificar um URI diferente na propriedade de substituição profileURI na página de propriedades. Clique na seção raiz no editor de mapeamento para exibir a página de propriedades. Nota: Se você estiver utilizando um perfil registrado, poderá especificar o URI com o qual o perfil está registrado, se ele for diferente do perfil que é utilizado automaticamente. Se não fizer isso, o perfil registrado poderá ser carregado mais de uma vez no conjunto de recursos, o que pode causar problemas com mesclagem ou fusão.

2.6 Ao Gerar Código a Partir de Modelos de Mapeamento, os Arquivos do Projeto Base que Incluam 'plugin.xml' e 'MANIFEST.MF' Não Serão Gerados Novamente

Ao gerar código de modelos de mapeamento em transformações de modelo para modelo, os arquivos básicos do projeto como plugin.xml e manifest.mf serão gerados se não puderem ser localizados. Pode ser necessário editar esses arquivos depois que eles forem gerados.

Solução alternativa: