This website uses cookies to ensure you get the best experience. Learn More.
Integración Liferay Commerce con ETL (Parte 3: Componentes de Liferay para Talend Open Studio)
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
Connection ComponentEstablece 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 ComponentEnví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 ComponentRecibe 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 FileRecibe 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
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.
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.
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).
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”.
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.