Essa amostra mostra como usar um diagrama para especificar a entrada de uma transformação de modelo-a-modelo. Este tópico explica como executar e como configurar esse tipo de transformação.
Antes de Iniciar
Use as instruções no tópico "Configurar Instruções para uma Transformação de Modelo-a-Modelo que Usa um Diagrama para Especificar a Entrada" para configurar a amostra.
- No ambiente de trabalho de tempo de execução, examine a configuração de origem e de transformação.
- Expanda Diagramas e Modelos e observe que os elementos de diagrama e modelo estão incluídos no projeto de origem.
- Clique com o botão direito do mouse em Executar test.tc em em seguida clique em .
- No editor de configuração de transformação, clique na guia Propriedades. Observe que o valor especificado para a propriedade DiagramName é Main1, que é um dos diagramas no projeto.
- No editor de configuração de transformação, clique na guia Principal e, em seguida, clique em Executar.
- Examine a saída da transformação. A saída inclui Class2, Class4 e Class6, conforme especificado no diagrama de entrada denominado Main1.
- Para compreender como a transformação é configurada, examine o projeto importado na área de trabalho.
- Expanda src, expanda com.ibm.xtools.transform.authoring.examples.classesindiagram e abra a classe TransformationProvider, ClassesInDiagramTransformationProvider.
- Observe que a classe TransformationProvider recupera o nome do diagrama do contexto de transformação e o armazena em uma variável global. O código
é semelhante a este:
protected RootTransformation createRootTransformation(ITransformationDescriptor descriptor) {
return new RootTransformation(descriptor, new MainTransform() {
@Override
public void execute(ITransformContext context) throws Exception {
diagramName = (String)context.getPropertyValue("diagramname");
super.execute(context);
}
});
}
public static String diagramName = null;
- Expanda o modelo e abra o arquivo de mapeamento que é denominado ClassesInDiagram.mapping.
- Na declaração do mapeamento Model2Model, clique com o botão direito do mouse no segundo submapa packagedElement-para-packagedElement e clique em Mostrar em Propriedades. Esse submapa é o mapeamento Class2Class.
- Na janela Propriedades, clique na guia Extrator Customizado. Observe que o extrator customizado usa a variável global para determinar quais classes devem ser processadas, fazendo referência ao conteúdo do diagrama especificado. O extrator customizado do mapeamento do submapa Class2Class na declaração do mapeamento Package2Package faz o mesmo.
- No ambiente de trabalho de tempo de execução, no editor de configuração de transformação, na página Propriedades, substitua o valor no campo diagramName por "Main2" e execute novamente a transformação. Nesse momento, a transformação falha.
A transformação falha quando o diagrama Main2 é nomeado na configuração porque o modelo de origem contém uma generalização de Class5 para Class. No entanto, a Class1 não foi copiada no modelo de destino porque ele não apareceu no diagrama especificado.
Quando você criar uma transformação, observe que a transformação deverá incluir todos os objetos referidos que estão contidos no mesmo modelo, para que todas as referências dentro do modelo possam ser resolvidas.