Para cada declaración de correlación del modelo de correlación, la infraestructura de autoría de transformaciones genera un archivo fuente Java cuyo nombre es nTransform.java, donde n representa el nombre de la declaración de correlación. En conjunto, estos archivos Java componen el código de la transformación. Además de generar el código de implementación para la transformación, la infraestructura de autoría de transformaciones genera asimismo código para registrar la transformación en el servicio de transformaciones. Después de crear una declaración de correlación, puede añadir reglas de correlación incrementalmente y generar el código fuente, o las implementaciones, para las reglas de correlación. No hace falta que defina primero todas las reglas de correlación para poder generar el código fuente.
Las declaraciones de correlación suelen seguir el convenio de denominación x2y, donde x representa el tipo de objeto de entrada e y representa el tipo de objeto de salida. Por ejemplo, la declaración de correlación llamada Package2EPackage especifica que Package es el objeto de entrada, y EPackage es el objeto de salida.
Una correlación entre elementos establece la correspondencia entre sus atributos, lo que permite intercambiar datos entre ellos. La mayoría de las correlaciones proporcionan la capacidad de manipular adicionalmente los datos entre el origen y el destino. Por ejemplo, podría optar por especificar cálculos o hacer otras modificaciones en los datos, creando para ello código personalizado, que le permite asignar valores al destino.
Para crear una declaración de correlación clase a clase en el modelo de correlación:
Para añadir un objeto de entrada y un objeto de salida a la declaración de correlación clase a clase:


Después de haber añadido los objetos de entrada y de salida a la declaración de correlación, ya puede definir las reglas de correlación entre los atributos. Las reglas de correlación, que también se llaman correlaciones, especifican cómo hay que asignar un valor a un atributo de un objeto de salida, en función de los valores de los atributos de un objeto de entrada.
Creará una regla de correlación entre el atributo name de los objetos de entrada y de salida. La clase destino tiene el mismo nombre que la clase que hay en el modelo de entrada; este proceso equivale a crear una copia de la clase. En una lección posterior, añadirá las operaciones de correlación a la regla de correlación.
Creará una regla de correlación de subcorrelación entre el atributo ownedOperation de los objetos de entrada y de salida. Para cada operación de la colección ownedOperation, la operación generada en el modelo destino tiene el mismo nombre y la misma visibilidad que la operación en el modelo de entrada.
Subcorrelación es una invocación de una correlación desde dentro de otra correlación. La subcorrelación que se invoca puede estar definida, aunque no es necesario que lo esté, en el mismo archivo de correlación que la correlación que la invoca. La subcorrelación le permite correlacionar un tipo complejo del modelo de entrada con un tipo complejo del modelo de salida. La subcorrelación creada puede invocar una correlación que exista en el mismo archivo de correlación. El hecho de definir subcorrelaciones en distintos archivos de correlación anima a la reutilización de correlaciones; sin embargo, el hecho de crear múltiples archivos de correlación podría aumentar las tareas de mantenimiento del proyecto. Las subcorrelaciones también pueden incluir otras subcorrelaciones, dando como resultado una estructura jerárquica.
También puede crear reglas de correlación de subcorrelaciones entre los objetos de entrada y los objetos de salida de una declaración de correlación.
Para cada subcorrelación de una declaración de correlación, se genera un extractor llamado getInputFeatureToOutputFeature_UsingMap_Extractor en el transforme continente, donde InputFeature representa el nombre del atributo de entrada, OutputFeature representa el nombre del atributo de salida y Map representa el nombre de la declaración de correlación.
Puede especificar definiciones semánticas más precisas utilizando la API de lenguaje de restricciones de objeto (OCL) proporcionada por Eclipse.
Una regla de correlación heredada, así como la regla o extractor generada a partir de esa correlación, mantiene la misma posición relativa en el orden de proceso que la regla de correlación alterada temporalmente y su regla o extractor generada.
Para cada regla de correlación de movimiento o personalizada de una declaración de correlación, se añade una regla al código fuente de la transformación generada. Para cada regla de correlación de subcorrelación, se genera un extractor de contenido en el código fuente de la transformación. Cuando crea una regla de correlación, su tipo vendrá determinado por los atributos de entrada y de salida que seleccione. Por ejemplo, si los atributos de entrada y de salida son tipos primitivos compatibles, como las series o los enteros, se especifica una regla de correlación de movimiento. Si los atributos de entrada y de salida son tipos complejos, se especifica una regla de subcorrelación. Si los tipos de reglas de correlación de movimiento y de subcorrelación no son pertinentes, se especifica una regla de correlación personalizada.
Para definir las reglas de correlación de la declaración de correlación clase a clase (Class2Class):
Al llegar a este punto de la lección, en el área del editor, la subcorrelación tiene un adorno con una X rodeada de un círculo rojo, lo que indica un error. Ponga el puntero del ratón sobre este adorno para ver el mensaje de error. El mensaje de error indica que debe seleccionar una declaración de correlación para que la invoque la regla de correlación de subcorrelación. Para resolver este error, cree una declaración de correlación operación a operación.
Para crear una declaración de correlación operación a operación: