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:
- 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.
- No método createRootTransformation, chame o método addPostProcessingRules.
- 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.
- Remova ou edite a tag @generated do método createRootTransformation.
- Clique em .
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$
}
};
}