En este caso vamos a utilizar Talend para formatear el JSON que se va a enviar por el API de Zauru y enviarlo al correr el trabajo.
Este flujo de la información lo vamos a separar para aclarar mejor el proceso completo:
Primero y más importante es el excel de donde vamos a obtener los datos. Este excel debería de estar lo más ordenado posible para que podamos manipularlo rápidamente y dejarlo listo para que el proceso de digitalización con Talend sea lo más rápido posible.
Este es el Excel que el cliente debe de llenar:
Antes de utilizar Talend, hay que limpiar los datos obtenidos y cambiar algunos nombres que se ingresaron en el excel para cambiarlos a IDs. Esto incluye cambiar las columnas para que se asemeje al nombre de los campos en el API:
Además se debe de cambiar el nombre de todas las columnas para que coincida con los nombres del API. Ver el API de Zauru para referencia.
Esto nos dejará con un excel (xlx y no xlxs) similar a este:
Con el poder de Talend Open Studio se pueden construir flujos de limpieza, manipulación y publicación de datos. El flujo que tuvimos que construir para cargar esta información a Zauru fue el siguiente:
A continuación vamos a revisar cada uno de los componentes que se utilizaron y algunas recomendaciones de cada componente para que funcione correctamente.
Este es el componente que lee el excel y lo convierte en algo que entiende Talend (schema) y que puede enviar a los otros componentes para su proceso. En este componente lo más importante es colocar el tipo de dato correcto en cada campo del esquema.
Esta imagen muestra los tipos de dato en cada columna por si hay necesidad de cambiarla.
Nótese también que se agregó la columna "json" como un string para que allí se coloque la orden de compra de la forma que lo entiende Zauru según el API.
Este componente convierte los datos del schema del Excel y los convierte en un JSON para que lo pueda entender el API de Zauru. Para utilizar este componente hay que hacer 2 cosas:
Nótese que hay que seleccionar al menos 1 elemento de "loop element" en la columna de Node Status
Al enlazar el componente de Map y con el siguiente componente de RESTClient automáticamente genera un schema de salida requerido para mandar los argumentos al RESTClient y nosotros tenemos que transformar el schema de entrada (que viene del WriteJSONField) a este formato requerido.
Nótese que colocamos el campo y sustituimos la cadena de caracteres "asdf1" por "1" ya que el componente WriteJSONField no deja colocar nodos con nombres sin letras y que empiecen con letras, por eso decidimos colocar ese código raro en el nodo y cambiarlo con un "replace"
Este módulo se encarga de enviar lo que viene en el schema de entrada (del componente Map) a la página que configuremos. La configuración necesaria debe ser:
Además, en las configuraciones avanzadas hay que ingresar las credenciales del API en los Headers para poder procesar la solicitud en Zauru:
Este componente sirver para mostrar el esquema con los datos que genera cada componente, coincidentemente, RESTClient puede generar 2 salidas, las 2 opciones que responde el servidor: respuesta correcta del servidor (HTTP Status 200) y la respuesta con error del servidor (HTTP status 50X, 40X, 30X, etc) después de mandar una solicitud. Al correr el trabajo va a mostrar cuantas respuestas salieron positivas y cuantas negativas.
Adjunto el archivo de Talend para que puedan jugar con todo lo que se discutió en este manual