Este ejemplo muestra cómo utilizar un diagrama para especificar la entrada para una transformación de modelo
a modelo. Este tema explica cómo utilizar y cómo configurar esta especie de transformación.
Antes de empezar
Utilice las instrucciones del tema "Instrucciones de configuración para una transformación de modelo a modelo
que utiliza un diagrama para especificar la entrada" para configurar el ejemplo.
- En el entorno de trabajo de tiempo de ejecución, examine el origen y configuración de transformación.
- Expanda Diagramas y modelos y tenga en cuenta que ambos elementos de diagrama y modelo
están incluidos en el proyecto origen.
- Pulse con el botón derecho sobre run test.tc y a continuación pulse
.
- En el Editor de configuraciones de transformación, pulse la pestaña Propiedades. Tenga en cuenta el valor especificado para la propiedad DiagramName es
Main1, que es uno de los diagramas del proyecto.
- En el Editor de configuraciones de transformación, pulse la pestaña Principal y a
continuación pulse Ejecutar.
- Examine la salida de la transformación. La salida incluye Class2, Class4 y Class6, tal como se especifica en el diagrama de entrada llamado
Main1.
- Para entender cómo está configurada la transformación, examine el proyecto importado en el espacio de trabajo.
- Expanda src, expanda
com.ibm.xtools.transform.authoring.examples.classesindiagram, y abra la clase
TransformationProvider ClassesInDiagramTransformationProvider.
- Fíjese en que la clase TransformationProvider recupera el nombre del diagrama del contexto de transformación y lo
almacena en una variable global. El código tiene el aspecto siguiente:
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 el modelo y abra el archivo de correlación que se llama ClassesInDiagram.mapping.
- En la declaración de correlación Model2Model, pulse con el botón derecho sobre la segunda subcorrelación
packagedElement-to-packagedElement y pulse Mostrar en propiedades. Esta subcorrelación es la correlación Class2Class.
- En la ventana Propiedades, pulse la pestaña Extractor personalizado. Fíjese en que el extractor personalizado utiliza la variable global para determinar qué clases deben procesarse
haciendo referencia al contenido del diagrama especificado. Esta misma variable global la utiliza el extractor
personalizado en la subcorrelación Class2Class de la declaración de correlación Package2Package.
- En el entorno de trabajo de tiempo de ejecución, en el editor de configuraciones de transformación, en la página
Propiedades, sustituya el valor del campo diagramName por "Main2" y vuelva a ejecutar la
transformación. Esta vez, la transformación falla.
La transformación falla cuando el diagrama Main2 se denomina en la configuración porque el modelo origen contiene
una generalización de Class5 a Class; sin embargo, Class1 no se copió en el modelo destino porque no aparecía en el
diagrama especificado.
Cuando cree una transformación, tenga en cuenta que la transformación debe incluir todos los objetos a los que se
hace referencia que estén contenidos en el mismo modelo para que se puedan resolver todas las referencias internas del
modelo.