Vinculando Saída de Transformação a outras Transformações

Você pode vincular saída de uma transformação a outra transformação para criar combinações de transformações de modelo em modelo e transformações de modelo em texto Java™ Emitter Templates (JET). Essa funcionalidade possibilita criar transformações mais complexas, como a transformação UML em Java.
Antes de Iniciar
A transformação à qual você vincula deve ser registrada antes ou durante a execução da transformação de modelo em modelo.
Por Que e Quando Desempenhar Esta Tarefa
Para vincular saída da transformação de modelo em modelo a outra transformação:
  1. Na visualização Explorador de Projetos, no projeto de mapeamento de transformação, dê um clique duplo no arquivo Java TransformationProvider gerado. Por exemplo, se o modelo de mapeamento no projeto de mapeamento chamar-se Source2Target, dê um clique duplo no arquivo Source2TargetTransformationProvider.java.
  2. No método createRootTransformation, chame o método addPostProcessingRules.
  3. No método addPostProcessingRules, inclua uma regra para vincular à transformação apropriada.
    • Para vincular-se a uma transformação de modelo em modelo, crie uma instância da classe ChainRule.
    • Para vincular-se a uma transformação de modelo em texto JET, crie uma instância da classe JETRule.
    Para ver os parâmetros exigidos pelos construtores dessas classes, consulte os links relacionados no final deste tópico.
    Nota: Algumas informações, como links para a documentação do Eclipse ou para guias de desenvolvedor, estão disponíveis apenas a partir dos tópicos na ajuda do produto.
  4. Remova ou edite a tag @generated do método createRootTransformation.
  5. Clique em Arquivo > Salvar.
Resultados
Na próxima vez que você executar a transformação de modelo em modelo, o modelo de destino gerado pela transformação se tornará a entrada para a transformação especificada na regra de processamento.
Exemplo
Os fragmentos de código a seguir mostram uma tag @generated modificada no método createRootTransformation e uma regra de pós-processamento add que chama outra transformação:
  • A regra de pós-processamento add no fragmento de código a seguir chama uma transformação de modelo em modelo com um ID de transformação que é configurado como MyM2MTransformation:
    /**
         * Cria uma transformação-raiz. Você pode 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 ChainRule("MyM2MTransformation", TARGET_CONTAINER)); //$NON-NLS-1$
                }
            };
        }
  • A regra de pós-processamento add no fragmento de código a seguir chama uma transformação JET com um ID de transformação que é configurado como MyJetTransformation:
    /**
         * Cria uma transformação-raiz. Você pode 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(“MyJetTransformation")); //$NON-NLS-1$
                }
            };
        }

Feedback