Integración Liferay Commerce con ETL (Parte 1: Instalación y Configuración de Talend Open Studio)

DISCLAIMER: This blog  post has Spanish and English version.

Si has asistido a los últimos Symposiums de Liferay o algún otro evento, habrás recibido alguna charla donde se enseña un sistema de ETL donde fácilmente se pueden cargar datos de sistemas externos a Liferay Commerce y viceversa. 

Antes de continuar, si no has trabajado con Liferay Commerce ni con sus integraciones, te recomiendo que veas este video de DEVCON de 2019 donde se introduce este software, cuales son las ventajas y integraciones de serie. 

Aunque aún no hay disponible una documentación amplia que nos explique paso a paso el cómo realizarlo o por dónde empezar, he decidido compartir aquí mi experiencia, montando un tutorial con ideas y trucos, para que aquellos que nunca hayan trabajado con Talend y/o Liferay Commerce antes, sean capaces de hacerlo y conozca un poco de las APIs headless que Liferay ya nos trae de serie y el componente “tLiferayOutput” desarrollado para Talend. 

Este es el primer blog de 4, pero no te asustes, el objetivo de dividirlo en varios, es hacer su lectura más liviana… 

Ni son necesarios conocimientos previos en Talend ni en Liferay Commerce para conseguir seguirlo, ya que iremos paso a paso en cada acción a ejecutar, para que puedas aprender y disfrutes de todo el camino a recorrer, desde el principio con las instalaciones y hasta el fin, con la ETL funcionando y cargando productos a Liferay Commerce.

En este primer post empezaremos con una breve introducción de cada herramienta que utilizaremos a lo largo del post actual y próximos; luego pasaremos ya a la práctica con el Talend, finalizando con una conexión con la BBDD y pintando los datos.

En el segundo post se tratara de cómo configurar Liferay Commerce en pocos pasos y una pequeña introducción sobre los puntos a tener en cuenta en la Integración entre Liferay Commerce y un sistema externo.

En el tercero post empezaremos la configuración de la carga de productos utilizando los componentes de Liferay.

En el cuarto y último crearemos las “rutinas” para tratar y transformar los datos de acuerdo con la especificación de OpenAPI, ejecución de la carga y validación en Liferay Commerce.

A partir de una instalación de Liferay Commerce con Liferay Portal CE (o con Liferay DXP), empezaremos a construir nuestra ETL en Talend 7.1, a fin de hacer la carga de productos automática consumiendo los datos de una BBDD externa. Aquí utilizaremos un MySQL, pero el sistema externo podrías ser SAP, Salesforce, un fichero csv. En ese caso, solo se cambiaria el componente de entrada; la lógica de cómo hacerlo es la misma independiente de la fuente de datos.

¿Qué necesitaremos a lo largo de esta serie?

  • Liferay Portal CE 7.2 en Tomcat y Liferay Commerce 2.0.7 instalados: 
    • Lo puedes descargarlo aquí , eligiendo la opción, “Portal CE + Commerce Bundle”.

 

  • MySQL Server 5.7
    • Si deseas utilizar la BBDD que es utilizada en este post,  será necesario importar el dump con productos para “DumpProducts.sql” disponible aqui  y hacer el download de las imagenes disponible aqui. Los datos de la BBDD están en portugués, era lo que tenía a mano más rápido cuando empecé a escribir este post.

 

  • Talend Open Studio for ESB (vesión 7.1.1) instalado y con los plugins/conectores de Liferay
    • Lo puedes descargarlo aquí directamente en a través de este enlace 
    • Los componentes de Liferay que utilizaremos en Talend. No vienen de serie, por lo que hay que compilarlos y instalarlos. Para esto, es necesario descargar de la rama master del repositorio de Liferay : https://github.com/liferay/liferay-portal
    • Los plugins conectores, que están en la siguiente ruta: liferay-portal/modules/etl/talend
    • En esa misma ruta, tenemos todas las instrucciones de instalación, tanto para Talend, como para los componentes.
 Nota: Si sigues las instrucciones anteriores, al configurar el fichero “TOS_HOME/studio/TOS_*.ini” en el parámetro “-Dos.version=10.14”, si estás utilizando el sistema operativo de MAC, has de mantener este valor. Hay un workaround por parte de Talend para que el componente “tMap” funcione y depende de tener configurado esta versión.

 

 

…dado por supuesto que ya hemos aclarado todo que iremos utilizar y tenemos todo instalado y configurado, manos a la obra...

  1. Inicia el servidor Liferay Portal con Commerce ya instalados.

  2. Inicia MySQL con el dump ya importado (deberá tener la tabla “commerce-products”).

  3. Inicia Talend Open Studio con un nuevo workspace.

A partir de Talend Open Studio: 

Crearemos nuestro primer Job.

1. En repositorio, botón derecho sobre él “Job Design” > “Create Job”. Yo le he puesto el nombre de “insertProduct”, pero eso a gusto del desarrollador. 


 

2.  A la derecha tendremos entonces la “Paleta de Plugins”, se puede buscar por el nombre “liferay” y si tu instalación ha ido bien, se presentará 5 componentes de Talend para ser utilizado.


 

3. Ahora en la paleta de plugins, busca por “tDBInput” y arrastralo a la vista “designer”. Este componente es el que utilizaremos para la conexión a la BBDD con los productos. Para configurarlo, de dos cliques sobre el componente y te presentará las configuraciones. En la imagen he señalado los campos a tener en cuenta, cumplimentar estos campos de acuerdo con vuestra BBDD para la conexión:

4. Haz click en “Guess Schema” para validar que la conexión es correcta, y después haz click en “Table Name” y seleccione la tabla de “products”.


 

5. En el campo “Query”, escribe la consulta para recuperar la tabla “select * from products” y haz click en “Edit Schema” y se presentará la lectura de la tabla entera.


 

6. Ahora que la configuración de la BBDD externa está configurada y validada, podemos probar la salida de estos datos que luego enviaremos a Liferay Commerce. Para esto, utilizaremos solo los nombres de los productos limitados a 10. 

Para esto, haremos:

  • En el campo “Query” escriba “select name from products limit 10”, clique en “Guess Schema”, validamos que tenemos la columna selecciona en la query y damos al botón OK.


 

Nota: Siempre que se cambie la query, hay que pinchar en “Guess Schema” para que te pille el cambio de la query a ser ejecutada.

 

  • Un modal preguntará siempre que cambie la query, si quieres propagar el cambio, entonces es importante siempre aceptar, clicando en el botón “yes”. Del contrario cuando vayamos a hacer el mapeo, no traerá los valores como variables automáticamente. 


 

7. Volviendo a los componentes, vamos a la “Paleta” y buscamos por el componente “tLogRow” y lo arrastramos.


 

8. Haz clic en el componente “tDBInput” y se presentará una flecha roja, haz click en ella y arrastra hasta el componente “tLogRow”:


 

9. Haz doble clic en “tLogRow”, y desde “Basic Settings” pincha en la opción de “Edit Schema”. Aquí podemos ver la entrada y la salida de los datos, que como hemos aceptado la propagación anteriormente, el “tLogRow” pilla el mapeo automáticamente, tal como se ve en la imagen de abajo (aquí no es necesario hacer nada, es solo a modo de explicación, para aquellos que nunca hayan trabajado con Talend vayan entendiendo).


 

10. Ahora selecciona el Job (el cuadrado azul que engloba los dos componentes), haz click en “Run” para ejecutarlo. En los logs de ejecución del Job, deberá mostrar los 10 nombres del producto de acuerdo con la query que hicimos anteriormente.

Muy bien, si has conseguido llegar hasta aquí sin nunca haber trabajado con Talend en una ETL antes, ya te sonará más familiar en los próximos pasos y será capaz de crear la integración para el catálogo de productos de Liferay Commerce. 

Hemos finalizado este primer paso introductorio para principiantes.

En el siguiente post, iremos crear un commerce con pocos pasos y entender los puntos necesarios para la integración.