Transformar un modelo C# en un modelo Java
Este ejemplo muestra cómo transformar un modelo C# en un modelo Java. También ilustra cómo mantener sincronizados los modelos de origen y de destino, manual o automáticamente.
El proyecto de UModel que usaremos para este ejemplo se encuentra en C:\Usuarios\<usuario>\Documentos\Altova\UModel2025\UModelExamples\Bank_multiLanguage.ump. Si abre el paquete "Design View" verá que el modelo contiene dos paquetes escritos en Java y uno escrito en C#. El ejemplo asume que ahora los requisitos han cambiado y que el tercer paquete también debe implementarse en Java.
Empecemos por crear el paquete que almacenará todos los elementos del nuevo modelo de destino en Java.
1.Haga clic con el botón derecho en el paquete raíz Root, seleccione Elemento nuevo | Paquete del menú contextual.
2.Cambie el nombre del paquete a Bank Server Java.
Ahora puede ejecutar la transformación de C# en Java:
1.Haga clic con el botón derecho en el paquete de origen "Bank Server" y seleccione Transformaciones de modelos del menú contextual.
2.Cuando UModel le pida que seleccione un paquete de destino, seleccione el paquete "Bank Server Java" que creó antes y haga clic en Siguiente.
3.Seleccione C# a Java como tipo de transformación. No cambie la configuración por ahora.
4.Haga clic en Finalizar. Cuando UModel le pregunte si quiere incluir el perfil Model Transformation Profile de UModel haga clic en Aceptar.
Cuando termine la transformación observará los siguientes cambios en el proyecto:
•Se genera un paquete de diagramas llamado "Model transformation from Bank Server to Bank Server Java" en el paquete de destino y se abre automáticamente. Este diagrama ilustra la transformación que acaba de tener lugar y también le permite cambiar la configuración que definió antes, como se muestra más abajo.
•El paquete de destino "Bank Server Java" incluye todos los elementos contiene todos los elementos transformados desde el modelo de origen C# y adaptados a Java. Por ejemplo, si abre el diagrama "Bank Server" notará que contiene el tipo boolean, cuando en C# el tipo es bool.
•En la ventana Estructura del modelo el paquete "Component View" incluye un nuevo componente: "Agency". Este componente se generó automáticamente porque la opción realizacionesDeComponentes y componentes estaba habilitada y el paquete de origen contiene el espacio de nombres Agency. El nuevo componente define las opciones de ingeniería de código para el modelo de destino (en este caso, Java).
Configuremos ahora el modelo de destino en Java para ingeniería de código.
1.Haga clic en el componente "Agency" del paquete "Component View".
2.En la propiedad directorio de la ventana Propiedades, introduzca la carpeta en la que se debe generar el código (por ejemplo, C:\Bank_Sample\Java, siempre que esta carpeta exista).
A continuación generaremos el código Java a partir del modelo de destino:
1.Haga clic con el botón derecho en el paquete "Bank Server Java" y seleccione Ingeniería de código | Combinar código de programa con Paquete de Umodel.
2.Haga clic en Aceptar para confirmar la configuración de sincronización.
En este momento su proyecto de UModel contiene tanto el modelo de origen en C# Bank Server como el modelo de destino en Java (y ambos están configurados para que generen código). A partir de ahora se pueden mantener ambos proyectos sincronizados (manual o automáticamente) incluso aunque siga trabajado en el modelo de origen en C#. Para ilustrar esto, abra el diagrama "Bank Server" que encontrará en el paquete de origen en C# y añada a la clase BankServer una nueva operación llamada getNumberOfAccounts que devolverá un valor int.
Esta modificación se puede propagar manualmente al modelo de destino:
1.Haga clic con el botón derecho en el paquete de origen "Bank Server" y seleccione Actualizar la transformación de modelos | Desde "BankServer" hasta "BankServer Java..."..
2.Haga clic en Finalizar.
Ahora la operación getNumberOfAccounts que añadimos antes desde el modelo en C# se ha combinado con el modelo de destino en Java.
Por último configuraremos la transformación para que haya actualizaciones automáticas de C# a Java cada vez que modifique el modelo en C# o cuando importe el código fuente en C# al modelo en C#.
1.Abra el diagrama de paquetes "Model transformation from Bank Server to Bank Server Java".
2.Haga doble clic en el valor etiquetado AutomaticaUpdateAfterModelFromCode y establézcalo en "on".
3.Repita el paso anterior para el valor etiquetado AutomaticUpdateBeforeCodeFromModel.
Para activar las actualizaciones automáticas:
1.Regrese a la clase BankServer en el modelo de origen en C# y elimine la operación getNumberOfAccounts.
2.Haga clic con el botón derecho en el paquete Bank Server C# y ejecute el comando Combinar código de programa con Paquete de Umodel o Combinar el proyecto de UModel con el código de programa.
Al estar habilitadas las actualizaciones automáticas, en la clase de destino BankServer habrá ocurrido el mismo cambio automáticamente.