Durante el desarrollo de un sitio web utilizando Liferay, a menudo necesitamos crear aplicaciones que almacenen ciertos datos y que gestionen las acciones que los usuarios realizan sobre esos datos.
Tanto si has trabajado con Liferay como si no, las palabras “almacenar datos” y “gestionar las acciones de un usuario” ya te llevan a pensar que será necesario generar código para crear tablas, para generar la capa de persistencia, la capa de servicios, etc.
¿Y si no fuera necesario escribir ninguna línea de código y la aplicación se pudiese construir desde una interfaz gráfica? Demos la bienvenida al Low Code en Liferay.
Low code es un nuevo enfoque de desarrollo que permite que cualquier persona pueda crear aplicaciones sin necesidad de escribir código y Liferay lo ha incorporado en su versión 7.4 a través del framework Liferay Objects.
Un Object es una aplicación creada a través de una interfaz de usuario que te proporciona Liferay. Cuando creas un Object puedes indicar qué campos dispone, qué relaciones tiene con otros Objects o diseñar los formularios de creación de entradas para tu Object, entre otras cosas.
Los Objects se integran perfectamente con todos los frameworks core de Liferay: Assets, Permissions, Headless Rest APIs, Job Scheduler, Workflow o Form. Gracias a ello podremos crear automáticamente un API Rest y GraphQL, para nuestra aplicación, controlar el acceso a los datos o el flujo de trabajo que se debe seguir para publicar la información.
En pocas palabras, con cada Object que crees, Liferay creará automáticamente una tabla para almacenar los datos, todas las operaciones CRUD asociadas, los formularios de creación y edición, expondrá un endpoint que podrá ser consumido por cualquier otra aplicación y permitirá visualizar los datos en cualquier página web.
Antes de seguir, decirte que este post no pretende ser un tutorial paso a paso de cómo se gestionan los Objects, para eso está la documentación oficial de Liferay, si no que la intención es que al finalizar su lectura tengas una idea de cómo esta nueva funcionalidad puede ayudarte.
Pongámonos manos a la obra y vayamos a ver un ejemplo de cómo funciona este nuevo framework creando dos Objects de ejemplo que nos permitan poder solicitar alojamiento para nuestras mascotas.
Nuestra aplicación de alojamiento para mascotas será muy sencilla, necesitará sólo dos Objects: Mascota y Alojamiento y una relación entre ambos Objects: Solicitud.
En primer lugar, vamos a crear el Object Alojamiento, para ello iremos a Panel de control > Objectos y seleccionaremos el botón Añadir Object.
Para cada Object podremos indicar:
Para el Object Alojamiento, vamos a definir sus campos, el diseño del formulario de creación y edición y el diseño de la tabla que mostrará las entradas de nuestra aplicación:
Y para el Object Mascotas, vamos a definir sus campos y una relación con las entradas del Object Alojamiento, que representará la solicitud de alojamiento. El resto de las opciones las dejaremos por defecto.
El campo Raza, de tipo PickList es un tipo de campo especial que nos permite definir una lista de valores predefinidos. De este modo, podemos normalizar las entradas para ese campo.
Esta relación será de tipo One to Many, ¡una mascota podrá realizar muchas solicitudes de alojamiento!
Para ello, desde la pestaña Relaciones del Object Mascota crearemos una nueva relación con los siguientes datos:
Ahora que hemos creado esta nueva relación, puedes aprovechar y actualizar los diseños del formulario de creación/edición y del listado de entradas del Object Alojamiento para incluir esta relación.
Mientras estamos definiendo nuestro Object, Liferay no crea nada en su base de datos ni genera ningún código para interactuar con los Objects. Su magia no empieza hasta que decidimos publicarlos.
¿Cómo se realiza la publicación de Mascota y Alojamiento? Muy fácil, sólo tendremos que ir al listado de Objects y acceder a cada uno de ellos y pulsar el botón Publicar
Tras publicar nuestro Object, ocurre lo siguiente:
Una vez que tenemos nuestros Objects publicados, vamos a mostrar diferentes casos de usos para que podáis ver qué nos aporta esta nueva funcionalidad:
Vamos a hacer uso del API Rest que Liferay nos ha creado. Para ello, accederemos a Liferay API Explorer: http://localhost:8080/o/api y seleccionaremos el endpoint de Mascotas.
Invocaremos el endpoint postMascota proporcionando todos los datos necesarios para nuestra nueva mascota:
Al ejecutar la petición, Liferay crea una nueva mascota y nos devuelve todas las operaciones disponibles que podemos realizar sobre ella, así como los datos de la nueva mascota que acabamos de dar de alta:
Para verificar que los datos se han dado de alta correctamente, podemos acceder a nuestro Object, ¡recuerda que la publicamos en Aplicaciones > Aplicaciones personalizadas!
Y ahí podemos ver nuestra mascota “Merlí” como ha sido añadida a nuestra aplicación.
Ahora vamos a usar el formulario de alta que hemos definido anteriormente. Para ello accedemos a nuestro Object Alojamientos y creamos una solicitud de alojamiento:
Al guardar nuestra solicitud, podremos ver que esta se ha dado de alta correctamente:
Ahora que ya disponemos de mascotas y solicitudes de alojamiento podemos crearnos una página: Alojamiento para Mascotas donde podamos mostrar esta información.
Gracias a la integración de Objects con el framework Asset, al publicar nuestra aplicación ya disponemos de una colección con todas las entradas de nuestro Object. Estas colecciones, podemos agregarlas a cualquier página mediante el componente “Visor de colección” y visualizarlas:
Así, ya disponemos de nuestra página Alojamiento para mascotas en la cual podremos ver todas las mascotas que están registradas y todas aquellas solicitudes de alojamiento que se han recibido.
No todas las aplicaciones se podrán implementar a través de los Objects, pero estos nos ayudarán a crear aplicaciones sencillas y a integrarlas con otras aplicaciones sin necesidad de escribir ninguna línea de código. Sin duda alguna, pienso que nos ayudarán a reducir el Time to Market de muchos websites. Además, su fácil uso permite que este tipo de aplicaciones puedan ser creadas por los usuarios de negocio, liberando así a los equipos de IT.
Su integración con los frameworks core de Liferay los convierte en una herramienta muy potente ya que no perderemos las capacidades de publicación, gestión de permisos, comunicación con terceros, etc. que Liferay nos ofrece para sus aplicaciones o para aquellas que desarrollamos.
Si tienes ganas de saber más, te animo a que revises la documentación oficial de Liferay y sobre todo que hagas varias POCs para ver hasta dónde puedes llegar con los Objects.