miércoles, 24 de febrero de 2016

¿Cómo cargar documentos y sus metadatos de forma masiva al gestor documental? Parte 2

Esta es la segunda entrada que dedicamos a los métodos de carga masiva de documentos a Athento ECM (basado en Nuxeo Platform).
En la primera, vimos un método de carga mediante CSV. En esta segunda entrada vamos a ver también un método que utiliza ficheros CSV, pero la diferencia es que en este caso hablamos de una carga desatendida.

Vamos a hacer un pequeño cuadro resumen antes de empezar:

Método
Carga desatendida mediante CSV.
Recomendado para
Realización de cargas masivas de forma constante mediante ficheros CSV.
Importa
Ficheros y metadatos.

Entremos en materia.

Motivación

La creación de documentos puede ser un proceso tedioso cuando se realiza de forma manual. Hay que seleccionar el documento a cargar, darle un título, una descripción,...







Crear un documento require rellenar un formulario para cada uno.


La plataforma Nuxeo soluciona parcialmente esto mediante un módulo que permite cargar un fichero en formato CSV con toda la información necesaria para la creación de un documento. De este modo, incluyendo varias filas en el fichero CSV, se pueden crear automáticamente varios documentos en la plataforma. Aquí se puede ver un ejemplo de ese fichero CSV.

"name","type","dc:title","dc:description"
"my-file","File","My file","This is my file's description"
"my-file-2","File","My file 2","This is my 2nd description"

De este modo, es posible crear documentos de forma muy rápida cargando un CSV que referencie a estos ficheros, los cargue, y cree los documentos con los metadatos indicados en el CSV. Más información aquí

¿Qué permite?

En Athento, hemos detectado que esta forma de cargar ficheros se queda corta en algunos aspectos y por eso hemos decidido ir un paso más allá y ampliar su funcionalidad de modo que:
  1. permita cargar esos ficheros CSV de forma automática. Ya no será necesario cargar los ficheros CSV de 1 en 1, esperando el resultado de la carga, como se hace en la carga CSV normal.
  2. registre los ficheros CSV procesados, tanto los que han sido procesados exitosamente, como los que hayan encontrado algún error.
  3. utilice el sistema de eventos de Nuxeo para registrar la actividad de carga.
  4. permite configurar fácilmente nuevos automatismos de carga. Esto permite ampliar las carpetas que serán monitorizadas para la carga de CSV.

En otras palabras, con este plugin vamos dejando los ficheros CSV en una determinada ruta (folderToCheck) que el sistema va revisando deforma constante para ver si hay nuevos CSVs cargados. A medida que Athento procesa las líneas de cada CSV, va cogiendo los ficheros físicos (binarios) que queremos crear en el gestor desde una ruta especificada en nuxeo.conf(nuxeo.csv.blobs.folder) y los va a subir junto con sus metadatos a partir de una ruta determinada (folderToPut). Durante todo este proceso, el sistema va registrando los eventos que tienen lugar durante la carga.

¿Cómo funciona?

El módulo realiza 2 contribuciones a la plataforma. Por un lado, despliega una nueva operación que, partiendo de una carpeta origen y una carpeta destino indicadas:
  1. Crea un almacén temporal donde mover los documentos CSV que va a procesar. Esta carpeta se llamará "processing". De este modo, se evitan duplicidades en importación.
  2. Revisa la carpeta indicada y mueve todos los CSV que encuentre a la carpeta de procesamiento temporal.
  3. Procesa 1 a 1 todos los ficheros de la carpeta temporal y, para cada uno, revisa el estado de su importación, moviéndolo tras finalizar a la carpeta correspondiente ("processed_ok" o "processed_with_errors").

La operación está disponible en la plataforma.

La otra contribución es al sistema de registro de eventos de Nuxeo para poder registrar la actividad del plugin.

Los eventos de la operación se registran en la plataforma.


Además de liberar a los usuarios de  realizar manualmente el proceso de carga, y de registrar eventos en relación a dichas cargas, otra de las ventajas del módulo de carga desatendida de documentos es que está construído de modo que sea fácilmente utilizable por otros componentes del sistema, a modo de ejemplo, se pueden citar:
- Invocación directa: la operación se puede invocar directamente utilizando la API REST de Nuxeo.
La operación puede llamarse con cualquier cliente REST como Postman.

- Invocación a través de eventos. Es sencillo contribuir un módulo que periódicamente invoque a esta operación con las carpetas de entrada y salida específicas para el caso concreto. Tenemos un ejemplo aquí para mayor detalle. Podemos hacer por ejemplo que el plugin revise cada 5 minutos la carpeta /default-domain/workspaces/CSV/src, si encuentra ficheros CSV, los procesa y crea el contenido que en ellos se indique sobre la carpeta destino /default-domain/workspaces/CSV/dst. Es posible contribuir tantos eventos como se desee.

¿En qué casos se aplica?

Hemos encontrado este plugin especialmente útil en 2 escenarios.

Carga masiva de documentos

Algunos de nuestros clientes tienen la necesidad de cargar ingentes cantidades de documentos de forma diaria o muy frecuente. Gracias a este plugin, tan sólo han de obtener el listado de documentos a crear (algo que es fácilmente automatizable) y colocar los ficheros CSV en la ubicación monitorizada por el sistema. El planificador se encargará de revisar la carpeta cada cierto tiempo y procesar los ficheros CSV creando los documentos en la ubicación configurada en la operación.

Migración de documentos

Cuando una organización se lleva sus documentos de un sistema a otro, éste módulo ha demostrado su utilidad para cargar de forma ordenada y sin saturar el sistema grandes cantidades de documentos. 

Caso práctico

Supongamos que tenemos que cargar 1.000.000 documentos en el sistema al día. Usando el sistema clásico de CSV, podríamos generar un CSV con un millón de líneas y lanzarlo usando la interfaz de Nuxeo. Probablemente tarde una barbaridad y no podamos analizar sus resultados, pero este es el mal menor. Lo más probable es que el sistema se quede inutilizado durante varias horas debido a que le estamos exigiendo gran actividad de forma continuada. Seguramente sea necesario interrumpir la carga para poder dar servicio a los usuarios y al mismo tiempo, los usuarios estarán descontentos por un rendimiento pobre del sistema.  Es decir, nos encontrariamos ante serios problemas de rendimiento.
Con el módulo de Athento, es posible dividir esta carga en trozos más pequeños (por ejemplo, 1000 ficheros CSV de 1.000 líneas cada uno) y lanzarlo a lo largo de todo el día de modo que la carga de documentos pueda llevarse a cabo sin afectar a sus usuarios. Tan sólo habría que cargar en el momento deseado el fichero CSV correspondiente en la ubicación monitorizada (esto se puede automatizar fácilmente. Ver documentación).

Velocidad de carga

El módulo, registra el tiempo que tarda en procesar cada CSV. Hemos hecho algunas pruebas y, partiendo de las siguientes premisas:
  • cada fichero CSV contiene 1.000 líneas,
  • en cada línea del CSV, se crea 1 documento con un contenido de 431 kb,
Esta medida únicamente recoge la creación de documentos (obviando el movimiento de los CSV por las carpetas "processing" y "processed").
Extrapolando datos, podemos decir que en 1 segundo, se crean 11 documentos, y que a lo largo de un día (24 horas) podriamos migrar ese millón de documentos a Athento.

Ventajas

Como hemos visto, la principal ventaja de este módulo es su versatilidad: podemos lanzar la operación de forma manual (mediante API REST) y cargar los CSV de una determinada ubicación creando documentos en otra determinada ubicación, incluso cambiando las ubicaciones de origen y destino "sobre la marcha" sin tener que navegar por el sistema.
Por otro lado, permite una gran variedad de configuraciones cuando se hace uso del sistema de eventos de Nuxeo vinculados a cadenas de operaciones. Esto permite monitorizar carpetas y hacer cargas desatendidas en las que el sistema pueda estar menos ocupado con actividad de usuarios.
En ambos casos, el módulo deja constancia de todo lo que hace en el registro de eventos de Nuxeo además de crear las carpetas "processed_ok" y "processed_with_errors" que permiten reintentar cargas fallidas o reutilizar cargas recurrentes.


Demo

Aquí os dejamos un vídeo con un ejemplo. En él, se cargan 2 ficheros CSV, cada uno, creará 100 documentos de ejemplo. Fijaos en la carpeta monitorizada (folderToCheck) y en que cada minuto, se revisa para procesar los CSV que en ella se encuentren. Tras el procesamiento, los ficheros nuevos aparecen en la carpeta destino dst (folderToPut) y los CSV son movidos a "processed_ok".

video


En un ejemplo real, la carpeta sería monitorizada cada hora o cada 12 horas, para evitar colapsar el sistema. Los ficheros CSV podrían ser de varios miles de líneas en lugar de 100. Hemos cogido estos valores para poder hacer un vídeo cortito y que se pueda ver.
Desde Athento esperamos que encontréis este módulo útil especialmente si deseais cargar documentos en vuestro sistema de forma desatendida. Nuestra experiencia con él ha sido muy buena :)

Descarga este white paper gratuito y aprende sobre gestión documental en la nube

No hay comentarios:

Publicar un comentario en la entrada

AddThis