Parsable a Omnicanal mediante Apache Niffi
1. Objetivo
Este documento describe el flujo de integración implementado en Apache NiFi para la extracción automática de información desde Parsable, su procesamiento y posterior integración con la base de datos Omnicanal.
La integración contempla actualmente tres procesos principales:
- Jobs: extracción de información de los trabajos mediante un reporte CSV generado de forma asíncrona.
- Deviations: extracción de información de las desviaciones mediante un reporte CSV generado de forma asíncrona.
- Imágenes: recuperación de imágenes asociadas a los registros obtenidos desde Parsable.
Los procesos de Jobs y Deviations utilizan un mecanismo asíncrono compuesto por cuatro etapas:
- Solicitud del reporte.
- Consulta del estado del reporte mediante Polling.
- Obtención de la URL temporal firmada.
- Descarga del archivo CSV.
El proceso de Imágenes utiliza un endpoint independiente para recuperar el recurso asociado a un file_parsable_id.
2. Arquitectura General
| Componente | Descripción |
|---|---|
| Origen | APIs REST de Parsable |
| Orquestador | Apache NiFi |
| Formatos | CSV / imágenes |
| Base de datos | Omnicanal |
| Esquema | general_catalogs |
| Información de Jobs | Reporte CSV de jobs-inputs |
| Información de Deviations | Reporte CSV de deviations |
| Auditoría | Jobs: alp_cat_parsable_jobs_logs.Deviations: alp_cat_parsable_deviations_logs |
3 Url's utilizadas
| Servicio | URL base | Autenticación |
|---|---|---|
| Reportes | https://api.us-west-2.parsable.net/ | Bearer <token_reportes> |
| Imágenes | https://api.parsable.net/ | Token <token_imagenes> |
| Alfresco | https://acs.alpura.com/alfresco/api/-default-/public/alfresco/versions/1/ | Basica |
3. Flujo del proceso
La integración se divide en tres flujos funcionales.
3.1. Flujo de Jobs
El flujo de Jobs permite obtener información de los trabajos registrados en Parsable.
El proceso ejecuta:
- Construcción de los parámetros de extracción.
- Solicitud de generación del reporte.
- Obtención del
report_id. - Consulta periódica del estado del reporte.
- Espera hasta alcanzar el estado
READY. - Obtención de la URL firmada.
- Descarga del archivo CSV.
- Procesamiento e inserción de la información en Omnicanal.
3.2. Flujo de Deviations
El flujo de Deviations permite obtener información de las desviaciones registradas en Parsable.
El proceso ejecuta:
- Construcción de los parámetros de extracción.
- Solicitud de generación del reporte.
- Obtención del
report_id. - Consulta periódica del estado del reporte.
- Espera hasta alcanzar el estado
READY. - Obtención de la URL firmada.
- Descarga del archivo CSV.
- Procesamiento e inserción de la información en Omnicanal.
3.3. Flujo de Imágenes
El flujo de imágenes permite recuperar recursos gráficos asociados a la información obtenida desde Parsable.
Para realizar la recuperación se utiliza el identificador:
file_parsable_id
El proceso ejecuta:
- Identificación de los file_parsable_id (Información recuperada de
JobsyDeviations). - Construcción de la URL del recurso.
- Invocación del endpoint de imágenes.
- Guardado Temporal en Apache Niffi.
- Envio de Imagen a repositorio de
Alfresco. - Eliminación de Imagen Temporal en Apache Niffi.
- Inserción de
id de Parsablecon el nuevoid de alfrescoen tablaalp_cat_parsable_alfresco.
4. Diagrama del flujo
5. Estructura del flujo en Apache NiFi
La integración en Apache NiFi está organizada en tres grupos principales, cada uno responsable de procesar un tipo específico de información proveniente de Parsable:
Esta separación permite mantener el flujo organizado por tipo de información, facilitando su mantenimiento, monitoreo y trazabilidad, además de permitir que cada proceso pueda evolucionar de manera independiente.
5.1. Jobs
Encargado de solicitar, consultar y descargar los reportes de Jobs para posteriormente procesarlos y almacenarlos en la base de datos.
5.2. Deviations
Encargado de obtener y procesar la información relacionada con las Deviations generadas en Parsable.
5.3.️ Imágenes
Encargado de obtener las imágenes asociadas a los registros, gestionar su descarga y almacenamiento.
6. Componentes de Apache NiFi
6.1. Contexto de parámetros
El flujo utiliza un Parameter Context denominado:
Parsable_Postgres
6.2 Parámetros
| Parámetro | Descripción |
|---|---|
directorio_alfresco | UUID del directorio o referencia interna utilizada en Alfresco. |
repositorio_niffi | Ruta del directorio temporal de trabajo en el servidor de Apache Niffi. |
token_alfresco | Credencial o token codificado para la conexión con Alfresco. |
token_acceso | Token JWT Bearer de autenticación para consumir las APIs de Parsable. |
team_id | Identificador único del equipo (Team ID) en Parsable. |
url_base_api | Endpoint principal de la API de Parsable en la región correspondiente. |
url_base_api2 | Segunda URL base o alternativa para las peticiones a la API de Parsable. |
url_base_alfresco | URL base completa para la integración con los servicios web de Alfresco en Alpura. |
Las credenciales nunca deben almacenarse directamente en los procesadores de NiFi.
Se recomienda utilizar Parameter Contexts para facilitar la administración entre ambientes.
7. Ventana de extracción
El proceso siempre obtiene información de las últimas 24 horas.
7.1. Fecha inicio
${now():toNumber():minus(86400000):format("yyyy-MM-dd'T'08:00:00.000'Z'", "America/Mexico_City")}
7.2. Fecha fin
${now():format("yyyy-MM-dd'T'07:59:59.000'Z'", "America/Mexico_City")}