Continuamos el post anterior, en el que planteábamos escenarios o ecosistemas híbridos donde convivían varios frameworks. En este post trataremos de poner con ejemplos prácticos un escenario híbrido de este tipo.
Sobre todo nos centraremos en ADF, ORDS y JET. Respecto a JET ya comentamos por encima en el post anterior, que era el toolkit JavaScript de Oracle para desarrollo Front e Híbrido.
Manos a la obra
Por un lado tenemos una aplicación ADF. Se trata de una aplicación que realiza un mantenimiento sencillo sobre la tabla EMPLOYEES del esquema HR de la base de datos Oracle XE.
En esta aplicación utilizamos:
- ADF Business Components: Para recuperar los Empleados almacenados en la BBDD.
- PL/SQL:
- Procedimiento INSERTNEWEMPLOYEE para insertar un empleado.
- Función VALIDATE_EMAIL para validar que la dirección de email no está en uso (Unique Key Constraint existente en el esquema HR).
La idea aquí es simular un entorno de evolución de un sistema tipo Forms, por lo que tendremos muchas reglas de negocio en PL/SQL que querremos aprovechar y reutilizar.
A continuación, podemos ver como sería la aplicación ADF:
Por otro lado tendremos una serie de necesidades de presentación, que abordaremos con Oracle JET. Esta aplicación muestra una tabla con los empleados existentes en la tabla EMPLOYEES del esquema HR de la BBDD Oracle XE. También dispone de un pequeño formulario que permite insertar nuevos empleados y validación de email.
Todas estas funcionalidades se basan en servicios REST consumidos desde la aplicación:
- Oracle REST Data Service (ORDS):
- La colección de empleados se recupera directamente de BBDD a través de ORDS usando el recurso employee definido (operación GET).
- Para insertar el nuevo empleado se utiliza el recurso employee (operación POST).
- Para validar que el email no está en uso se utiliza el recurso VALIDATE_EMAIL (operación GET) definido en ORDS.
Por último puede que tengamos una sección que requiera de movilidad, por lo que necesitaremos que parte de nuestro negocio se pueda consumir desde plataformas móviles.
En este caso crearemos una aplicación híbrida JET, que se basará en:
- ORDS: Para la colección de datos.
- Librería Leaflet para la integración de mapas con OpenStreetMaps.
- Plugin Cordova para posicionamiento.
La inclusión de librerías de terceros en JET, se hace de manera muy sencilla gracias a
Node.js con su package manager (npm).
En este caso, tal como se ve en la imagen, hemos incluido un mapa donde ademas de gestionar nuestras rutas con posicionamiento GPS podremos dibujar rutas alternativas y ver los Km realizados de manera sencilla, gracias a un plugin concreto de la librería Leaflet:
En este sentido el papel de ORDS es fundamental, ya que nos permitirá poder tener una capa REST de la lógica de nuestra base de datos y poder reutilizar reglas y modelo desde diferentes frameworks.
Aunque la creación de servicios REST con ORDS se puede hacer por línea de comandos, si lo conectamos desde SQL Developer podemos crear los servicios de una manera muy cómoda.
Una de las ventajas de usar JET es que tendremos una experiencia a nivel de componentes unificada con nuestra parte ADF y que a nivel de desarrollo parte de la experiencia obtenida en Front también nos servirá en el desarrollo híbrido.
En este post hemos querido mostrar mediante pequeños escenarios de demo, creados por la comunidad Oracle de atSistemas, algunos de los diferentes tipos de integración que hay.
Pero las combinaciones son diversas, y por tanto podríamos haber planteado otros escenarios igualmente validados como publicar lógica de nuestro aplicativo ADF vía REST y que lo consuma JET o crear un Datacontrol REST para consumir servicios desde ADF, además de otras soluciones personalizadas siempre en función de los aplicativos o lógica a reutilizar.
Para el desarrollo de estas demos se ha utilizado:
- JDeveloper ADF 12.2.1.2.
- Oracle JET 3.1.0.
- Netbeans 8.2.
- ORDS 3.0.9.
Si te ha gustado este post, ¡síguenos en Twitter!