Los objetos de entrada y de salida de paquete contienen una característica que se llama packagedElement. Esta característica es una colección que consta de diferentes tipos de objetos UML válidos. Las reglas de correlación que creará en esta lección definen cómo procesa la transformación los elementos de la colección que son de tipo paquete o clase.
En Lección 3: Crear y definir con más precisión una declaración de correlación clase a clase se vio que para cada regla de correlación de movimiento de una declaración de correlación, se añade al código fuente del transforme generado una regla que copia un valor de atributo de un modelo origen en el modelo destino. Para cada regla de correlación de subcorrelación, se genera en el código fuente del transforme un extractor que extrae elementos de la colección especificada. La regla de subcorrelación se aplica a un objeto si el objeto de entrada actual es una instancia del tipo de entrada definido en la declaración de correlación.
Cuando se ejecuta la transformación generada, si el modelo origen contiene un paquete, se invoca el transforme Package2PackageTransform y se crea un paquete con el mismo nombre en el modelo destino. El transforme Package2PackageTransform atraviesa la colección de la característica packagedElement. Para cada elemento de colección que sea de tipo paquete, lo que significa que el modelo origen contiene paquetes anidados, el transforme invoca el transforme Package2PackageTransform. Para cada elemento de colección que sea de tipo clase, el transforme invoca las reglas para transformar la clase en una clase correspondiente y una interfaz en el modelo de salida destino.
Para crear una declaración de correlación paquete a paquete en el modelo de correlación:
Después de haber creado la declaración de correlación, debe añadirle un objeto de entrada y un objeto de salida. En esta lección, especificará un paquete UML para el objeto de entrada y para el objeto de salida.
Para añadir un objeto de entrada y un objeto de salida a la declaración de correlación paquete a paquete:
Para crear las reglas de correlación entre los atributos de los objetos de entrada y de salida del paquete: