© 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.
Cuando se crea una transformación de modelo a modelo, si el destino es un modelo UML 2, los perfiles UML predeterminados no se correlacionan automáticamente. Por ejemplo, el perfil UML default.epx no se correlaciona automáticamente. Debe correlacionar estos perfiles manualmente, o utilizar la infraestructura UMLDefaultLibrariesAddRule. Puede añadir manualmente esta infraestructura a una transformación si el destino es un modelo UML EClass.
Para añadir la infraestructura a una transformación, añada el siguiente código 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 más elementos de transformación después de los generados aquí
// Recuerde eliminar el código @generated o añadir NOT al mismo
}
En la autoría de transformación de modelo a modelo, para tener soporte de "fusión" en el modelo de destino, debe tener la extensión "org.eclipse.core.runtime.contentTypes" en un conector en el espacio de trabajo Eclipse. Puede especificar esta extensión en un conector que tenga un nombre de dominio derivado del dominio del modelo de destino. Para obtener más información acerca de esta extensión, consulte la documentación del punto de extensión en el proyecto Comparar/Fusionar. Esto permite construir una estrategia de fusión sofisticada para el modelo de destino. Para una estrategia EMF más sencilla, puede especificar la siguiente extensión (sustituya "xxx" con la extensión de archivo de destino):
<extension
point="org.eclipse.core.runtime.contentTypes">
<file-association
content-type="com.ibm.xtools.comparemerge.emf.emfContentType"
file-extensions="xxx"/>
</extension>
Cuando se crean transformaciones de modelo a modelo, los modelos Ecore especificados tienen que tener genmodels correspondiente. Para crear genmodels, puede utilizar el asistente Modelo de EMF. Asegúrese de generar código después de crear los genmodels. Los genmodels deben registrarse en el área de trabajo de desarrollo o deben estar en la misma vía de acceso que los modelos Ecore correspondientes. Los genmodels deben tener la extensión de archivo .genmodel, un nombre similar y la misma disposición de mayúsculas y minúsculas que los modelos Ecore. En caso contrario, el motor de autoría de transformaciones no podrá encontrar el genmodel. Si el motor de autoría de transformaciones no puede encontrar los genmodels requeridos, inhabilitará la generación de código.
Cuando se crea una configuración de transformación para una transformación de modelo a modelo, es necesario especificar un archivo que representa el modelo de destino, incluso si el archivo está vacío. No es posible especificar un URI como el contenedor de destino.
Para crear un modelo Ecore vacío, en la página Principal del editor o asistente de configuración de transformaciones, pulse Crear contenedor de destino nuevo y especifique un archivo que tenga la extensión del modelo de destino.
Para integrar una transformación de modelo a modelo como el componente frontal de una transformación JET (de modelo a texto), deberá añadir manualmente una instancia a la infraestructura JETRule a las reglas 'postProcessing' de RootTransformation que se encuentran en el proveedor de transformaciones. El siguiente ejemplo muestra el código que es necesario incluir en la clase de proveedor de transformación. Debe sustituir 'xxx' con el ID de la transformación JET.
/**
* Crea una transformación raíz. Puede añadir más 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 introducen o extraen modelos UML, especifique un metamodelo UML como entrada raíz, salida raíz o como ambos de la especificación de correlación. Añadir un perfil UML a la especificación de correlación no añade automáticamente el modelo UML.
Método alternativo: añada el metamodelo UML pulsando el botón Añadir modelo en el asistente y editor de correlaciones de transformación de modelo a modelo.
Es posible que los puntos finales de los conectores de correlación desaparezcan si un usuario conmuta la característica de filtrado de la modalidad "Básica" a las modalidades "Intermedia" o "Avanzada", crea correlaciones y conmuta de nuevo a la modalidad "Básica" de filtrado. Esto puede provocar que aparezcan conectores de correlación que tengan puntos finales que no conectan nada. Esto sólo afecta a la apariencia de las correlaciones. Las correlaciones y el código fuente generado por la transformación a partir de la correlación no se ven afectados.
Método alternativo: corrija la apariencia de las correlaciones especificando la modalidad de filtrado que estaba activa cuando se creó la correlación.
Cuando un archivo de correlación ya no contiene correlaciones que especifican elementos de un modelo como entradas o salidas de correlación, el modelo se "descarta" del archivo de correlación. La comprobación de modelos sin utilizar se realiza independientemente de si se suprime una entrada o salida de correlación. Se mantienen listas independientes en el archivo de correlación para entradas y salidas.
Método alternativo: debe añadir el archivo de correlación antes de poder seleccionar elementos de dicho 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 configuración de transformaciones para transformaciones de modelo a modelo, es posible especificar la opción runSilent sin ninguna 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 soporte de fusión para el modelo de destino. En caso contrario, se utilizará una estrategia de alteración temporal de la fusión.
Cuando se crea un modelo de correlación de transformación a partir del metamodelo Ecore en el metamodelo UML con perfiles, debe verificar el URI del perfil que se utilizará en los modelos de UML de destino. De forma predeterminada, se utilizará el URI del perfil especificado en el editor de correlaciones. Si especifica un URI de recurso, se convierte en un URI de conector equivalente.
Método alternativo: puede especificar un URI diferente en la propiedad de alteración temporal profileURI en la página propiedades. Pulse sobre la sección raíz en el editor de correlaciones para mostrar la página de propiedades. Nota: si está utilizando un perfil registrado, puede especificar el URI con el que el perfil está registrado, si es distinto del perfil que se utiliza automáticamente. Si no lleva a cabo esto es posible que el perfil registrado se cargue más de una vez en el conjunto de recursos, lo cual puede causar problemas con la fusión.
Cuando se genera código a partir de modelos de correlación en transformaciones de modelo a modelo, los archivos de proyecto básicos como plugin.xml y manifest.mf serán generados si no pueden ser encontrados. Es posible que necesite editar estos archivos una vez han sido generados.
Método alternativo:
- Si añade modelos de entrada o modelos de salida al archivo de correlación, deberá editar el archivo manifest.mf. Añada las dependencias los conectores que contienen el código de modelo generado para el modelo de entrada/salida. Añadir estas dependencias debería corregir los errores de compilación que resultan de intentar acceder a las clases en dichos conectores. Puede añadir una dependencia en el conector que contenga el código generado del nuevo modelo de entrada/salida.
- Si crea un modelo de correlación en un conector Java que contenga los archivos plugin.xml y manifest.mf, debe añadir las dependencias requeridas al archivo manifest.mf. Añada la dependencias sobre autoría de transformaciones y la dependencia sobre los modelos de entrada/salida. También debe añadir la extensión com.ibm.xtools.transform.core.transformationProviders al archivo plugin.xml.