Blogs

Blogs

Integración Liferay Commerce con ETL (Parte 3: Componentes de Liferay para Talend Open Studio) 

 

DISCLAIMER:  This blog  post has Spanish and English version.

Finalizado la etapa de Parte 2: Configurando Liferay Commerce en 3 pasos

En los dos anteriores blogs, trabajamos con la configuración de Talend Open Studio y de Liferay Commerce. Hoy, podemos empezar a construir nuestro job que ejecutará la carga de productos al portal y servirá también para actualizaciones futuras.

                                          ...antes una breve explicación sobre los componentes de Liferay en Talend…

Todos los componentes de Liferay se basan en conexión y E/S con las APIs Headless de Liferay, ya sea las que vienen de serie (/o/headless-commerce...) o las generadas por el propio desarrollador a través de RESTBuilder.

Ejemplos de endpoints válidos para la llamada de la API desde el component: 

  • /headless-commerce-admin-catalog/v1.0

  • /headless-commerce-admin-order/v1.0

Lista de componentes

  • Connection Component
    Establece la conexión con el servidor de Liferay, debes configurar el dominio raíz como "http://localhost:8080" o "https://liferay.com" y puede ser reutilizado para todas las conexiones de los otros componentes de Liferay, evitando así tener de configurar en cada componente la conexión. 

  • Liferay Input Component
    Envía solicitudes GET a la API headless configurada, recibe los datos, los convierte al esquema descrito por OpenAPI Specification y los pasa al flujo de Talend.

  • Liferay Output Component
    Recibe los datos, los convierte al esquema descrito por el esquema OpenAPI Specification y envía solicitudes POST / PUT con datos a la API headless configurada.

  • Liferay Batch File
    Recibe los registros en el formato descrito por el esquema OpenAPI Specification y los agrega al fichero batch.

  • Liferay Batch Output File

Envía el fichero batch al endpoint “headless-batch-engine”. Este fichero deberá ser generado por el componente anterior “Liferay Batch File”.

Referencia sobre los componentes: https://github.com/liferay/liferay-portal/tree/master/modules/etl/talend

 

Creando la carga de productos (catalog synchro)

Partiremos de nuestro Talend (ya abierto siguiendo con el mismo proyecto creado en la primera parte), MySql y la instancia de Liferay Commerce arrancada.

1. Borraremos el componente “tLogRow” que teníamos en el proyecto. 

2. En la “Paleta” buscaremos por el componente “tMap” y lo traemos al área de diseño.

3. Cambia la “Query” del componente “tDBInput”, a select * from products, para que traiga todas las columnas del producto, como se enseña en la imagen abajo (no olvides el paso de cómo propagar el cambio en una query, visto en la primera parte de este post).

4. Ahora arrastra la flecha roja del componente “tDBInput” hacia el “tMap

5. Seleccione el “tMap” y te presentará las configuraciones básicas, haz click en “Map Editor

6. Valida que está todo correcto, deberá presentarse así, la entrada al “tMap” automáticamente con las columnas de nuestra tabla. 

 7. Haz clic en Ok.

Nota: A través de este componente, podemos tratar los datos de los productos que enviaremos al catálogo de Liferay Commerce, como se puede ver en la imagen arriba, los campos de entrada (todas las columnas de la BBDD) ya se reflejan como entrada en nuestro tMap.

8. Busca en la “Paleta” por el componente “tLiferayOutput” y arrastra al área de diseño.

9. Haz doble clic en el componente “tLiferayOutput” y te presentará la configuración básica; configura los campos señalados.

  • Liferay Host URL : incluye el host y puerto del servidor.
  • User ID : incluye un usuario de aplicación que tenga los permisos adecuados para la llamada de la API headless (como aquí se trata solo de un test nuestro en local, si no quieres dar de alta a un usuario y configurarlo para acceso a la API, puedes utilizar el usuario administrador de Liferay Portal).
  • Password: incluye la password del usuario de aplicación. 
  • OpenAPI Module Path: incluye el endpoint de la API, en nuestro caso utilizaremos "/headless-commerce-admin-catalog/v1.0".

10. Tras rellenar los campos indicados, haz clic en el botón de “Operation Path” y selecciona “/products” y haz clic en Ok.

11. Arrastra la flecha al componente de Liferay y acepta el mensaje de “get schema”.


 

                                                                                               ...ya estamos casi ...

12. Crearemos 4 contextos, para los datos que no tenemos en la fuente de datos original (BBDD). 

  • Un contexto con la constante del idioma, en mi caso como la BBDD está en Portugués de Brasil, la he puesto con el valor “pt_BR” (configúralo con el idioma que hayas puesto en tu configuración de Canal y Catálogo)
  • Los otros 3, “CATALOG_ID”, “PRODUCT_ENABLE”, “PRODUCT_TYPE” son obligatorios pasarlos a la API que utilizaremos y que ya hemos visto cómo podemos obtenerlos en la parte 2: Configurando Liferay Commerce en 3 pasos. 

13. Ahora haz doble click en el componente “tMap” y te presentará la columna de la entrada y salida del mapeo. Aquí se puede ir mapeando los campos que queramos y principalmente, los 4 obligatorios que hemos visto en el “SwaggerHub”. 

Nota: puede que te encuentres con posibles problemas en los componentes de Talend, entre las veces en que se abre y cierra… si tienes ese problema, de ver una exclamación y el “warning” diciendo que necesita instalar el external “jar.” (como en la imagen abajo)                                     ***Haz click en install, y apunta manualmente la ruta de las dependencias que hagan falta.***

Aquí finalizamos la configuración de los componentes, para que veas lo fácil que es, con solo 3 componentes, siendo uno la “fuente de los datos”, otro para hacer el “mapeo de los campos” y por último el componente “tLiferayOutput” para el envío de los datos a Liferay Commerce. 

Nos podemos preguntar… ¿pero si lo ejecutamos así funcionará? 

La respuesta es no, porque aunque hemos puesto el “tMap” conectando los dos componentes, no hemos hecho el tratamiento de los datos para enviarlo al formato que espera la API Headless que estamos llamando (“/headless-commerce-admin-catalog/v1.0"). Veremos cómo hacerlo y finalizar esta serie en el siguiente y último blog.