© Copyright International Business Machines Corporation 2006. Reservados todos los derechos. US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
En la autoría de una transformación de modelo a modelo, si el destino es un modelo UML 2, los perfiles predeterminados de UML no se correlacionan automáticamente. Por ejemplo, el perfil de UML default.epx no se correlaciona automáticamente. Debe correlacionar manualmente estos perfiles o utilizar la infraestructura UMLDefaultLibrariesAddRule. Puede añadir manualmente esta infraestructura a una transformación si el destino es un modelo EClass de UML.
Para añadir la infraestructura a una transformación, añada el código siguiente a la transformación:
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated NOT
*/
protected void addTransformElements(Registry registry) {
add(new UMLDefaultLibrariesAddRule());
addGeneratedTransformElements(registry);
// Puede añadir aquí más elementos de transformación después de los generados
// Recuerde eliminar el código @generated o añadirle NOT
}
En la autoría de de transformación de modelo a modelo, para tener el soporte de "fusión" en el modelo destino, debe tener la extensión "org.eclipse.core.runtime.contentTypes" en un plug-in en el espacio de trabajo de Eclipse. Puede especificar esta extensión en un plug-in que tenga un nombre de dominio derivado del dominio de modelo destino. Para obtener más información acerca de esta extensión, consulte la documentación del punto de extensión Comparar/fusionar proyecto. Esto permite construir una estrategia de fusión sofisticada para el modelo destino. Para una estrategia EMF más simple, puede especificar la extensión siguiente (sustituya "xxx" por su extensión de archivo destino):
<extension
point="org.eclipse.core.runtime.contentTypes">
<file-association
content-type="com.ibm.xtools.comparemerge.emf.emfContentType"
file-extensions="xxx"/>
</extension>
En la autoría de transformaciones de modelo a modelo, los modelos Ecore que especifique como entrada o salida deben tener los modelos de generación correspondientes. Para crear modelos de generación, puede utilizar el asistente Modelo EMF. Asegúrese de generar código después de crear los modelos de generación. Los modelos de generación deben registrarse en el entorno de trabajo de desarrollo o deben estar en la misma vía de acceso que los modelos Ecore correspondientes. Los modelos de generación deben tener una extensión de nombre de archivo .genmodel, un nombre parecido y las mismas mayúsculas/minúsculas que los modelos Ecore. De lo contrario el motor de autoría de transformación no podrá encontrar el modelo de generación. Si el motor de autoría de transformación no puede encontrar los modelos de generación necesarios, inhabilita la generación de código.
Cuando crea una configuración de transformación para una transformación de modelo a modelo, debe especificar un archivo que representa el modelo destino, incluso aunque el archivo esté vacío. No puede especificar un URI como contenedor destino.
Para crear un modelo Ecore vacío, en la página Principal del editor de configuraciones de transformación o del asistente, pulse el botón Crear contenedor destino nuevo y especifique un archivo que tenga la extensión del modelo destino.
Para integrar una transformación de modelo a modelo como componente frontal de una transformación JET (modelo a texto) debe añadir manualmente una instancia de la infraestructura JETRule a las reglas 'postProcessing' de la transformación RootTransformation ubicada en el proveedor de transformación. El ejemplo siguiente muestra el código que debe incluir en la clase de proveedor de transformación. Debe sustituir 'xxx' por el ID de la transformación JET.
/**
* Crea una transformación raíz. Puede añadir varias reglas a la transformación aquí
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param transform The root transformation
* @generated NOT
*/
protected RootTransformation createRootTransformation(ITransformationDescriptor descriptor) {
return new RootTransformation(descriptor, new MainTransform()) {
protected void addPostProcessingRules() {
add(new JETRule("xxx"));
}
};
}
Para generar transformaciones que introduce o extraen modelos UML, especifique un metamodelo UML como una entrada y/o una salida raíz de la especificación de correlación. Al añadir un perfil UML a la especificación de correlación no se añade automáticamente el metamodelo UML.
Solución: añada el metamodelo UML pulsando el botón Añadir modelo en el asistente y el editor Correlación de transformación de modelo a modelo.
Los puntos finales de los conectores de correlación desaparecen si un usuario conmuta la modalidad del filtrado de características de "Básica" a "Intermedia" o "Avanzada", a continuación crea correlaciones y después vuelve a la modalidad de filtro "Básica". Esto puede hacer que los conectores de correlación aparezcan con puntos finales que no conecten con nada. Esto solo afecta al aspecto de las correlaciones. Las correlaciones y el código fuente generado por las correlaciones no se ven afectados.
Solución: corrija el aspecto de las correlaciones especificando la modalidad de filtro efectiva al crear las correlaciones.
Cuando un archivo de correlación ya no contiene correlaciones que especifiquen elementos de un modelo como entradas o salidas de correlación, el modelo se "elimina" del archivo de correlación. La comprobación de modelos no utilizados se realiza siempre que se suprime una entrada o una salida de correlación. En el archivo de correlación se mantienen listas distintas para entradas y salidas.
Solución: debe añadir el modelo al archivo de correlación para poder seleccionar elementos de ese modelo como entradas o salidas de correlación. Pulse el botón Añadir modelo en el Editor de correlaciones para añadir el modelo al archivo de correlación.
En el editor de configuraciones de transformación para transformaciones de modelo a modelo, la opción runSilent puede especificarse con cualquier modalidad de fusión, incluyendo 'automática' o 'visual'. Si la modalidad de fusión se establece en automática o visual, la opción runSilent fuerza la estrategia de fusión silenciosa si se encuentra el soporte de fusión para el modelo destino. De lo contrario se utiliza una estrategia de fusión de alteración temporal.
Cuando se crea un modelo de correlación de transformaciones del metamodelo Ecore al metamodelo UML con perfiles, debe verificar el URI de perfil que se utilizará en los modelos UML destino. Como valor predeterminado se utiliza el URI del perfil especificado en el editor de correlaciones. Si especifica un URI de recursos, éste se convierte en un URI de plug-in equivalente.
Solución: puede especificar un URI distinto en la propiedad de alteración temporal profileURI de la página propiedades. Pulse la sección raíz del editor de correlaciones para visualizar la página propiedades. Nota: si está utilizando un perfil registrado, puede especificar el URI con el que está registrado el perfil si es diferente del perfil que se utiliza automáticamente. Si no lo hace, el perfil registrado se cargará más de una vez en el conjunto de recursos, lo que puede originar problemas con la fusión.
Cuando se genera código a partir de modelos de correlación en transformaciones de modelo a modelo, se generan los archivos de proyecto básicos como por ejemplo plugin.xml y manifest.mf si estos no se encuentran. Deberá editar estos archivos una vez generados.
Solución:
- Si añade modelos de entrada o modelos de salida al archivo de correlación, debe editar el archivo manifest.mf. Añada las dependencias para plug-ins que contengan el código de modelo generado para el modelo de entrada/salida. Al añadir estas dependencias se deben arreglar los errores de compilación que resultan de intentar acceder a las clases que están en estos plug-ins. Puede añadir una dependencia en el plug-in que contiene el código generado para el modelo de entrada/salida nuevo.
- Si crea un modelo de correlación en un plug-in Java que contiene los archivos plugin.xml y manifest.mf, debe añadir las dependencias necesarias al archivo manifest.mf. Añada la dependencia en la autoría de transformación y la dependencia en los modelos de entrada/salida. También debe añadir la extensión com.ibm.xtools.transform.core.transformationProviders al archivo plugin.xml.