Skip to main content

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:

  1. Solicitud del reporte.
  2. Consulta del estado del reporte mediante Polling.
  3. Obtención de la URL temporal firmada.
  4. 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​

ComponenteDescripción
OrigenAPIs REST de Parsable
OrquestadorApache NiFi
FormatosCSV / imágenes
Base de datosOmnicanal
Esquemageneral_catalogs
Información de JobsReporte CSV de jobs-inputs
Información de DeviationsReporte CSV de deviations
AuditoríaJobs: alp_cat_parsable_jobs_logs.
Deviations: alp_cat_parsable_deviations_logs

3 Url's utilizadas​

ServicioURL baseAutenticación
Reporteshttps://api.us-west-2.parsable.net/Bearer <token_reportes>
Imágeneshttps://api.parsable.net/Token <token_imagenes>
Alfrescohttps://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:

  1. Construcción de los parámetros de extracción.
  2. Solicitud de generación del reporte.
  3. Obtención del report_id.
  4. Consulta periódica del estado del reporte.
  5. Espera hasta alcanzar el estado READY.
  6. Obtención de la URL firmada.
  7. Descarga del archivo CSV.
  8. 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:

  1. Construcción de los parámetros de extracción.
  2. Solicitud de generación del reporte.
  3. Obtención del report_id.
  4. Consulta periódica del estado del reporte.
  5. Espera hasta alcanzar el estado READY.
  6. Obtención de la URL firmada.
  7. Descarga del archivo CSV.
  8. 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:

  1. Identificación de los file_parsable_id (Información recuperada de Jobs y Deviations).
  2. Construcción de la URL del recurso.
  3. Invocación del endpoint de imágenes.
  4. Guardado Temporal en Apache Niffi.
  5. Envio de Imagen a repositorio de Alfresco.
  6. Eliminación de Imagen Temporal en Apache Niffi.
  7. Inserción de id de Parsable con el nuevo id de alfresco en tabla alp_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:

info

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ámetroDescripción
directorio_alfrescoUUID del directorio o referencia interna utilizada en Alfresco.
repositorio_niffiRuta del directorio temporal de trabajo en el servidor de Apache Niffi.
token_alfrescoCredencial o token codificado para la conexión con Alfresco.
token_accesoToken JWT Bearer de autenticación para consumir las APIs de Parsable.
team_idIdentificador único del equipo (Team ID) en Parsable.
url_base_apiEndpoint principal de la API de Parsable en la región correspondiente.
url_base_api2Segunda URL base o alternativa para las peticiones a la API de Parsable.
url_base_alfrescoURL base completa para la integración con los servicios web de Alfresco en Alpura.
info

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")}