Artículos sobre: Desarrolladores
Este artículo también está disponible en:

Enviar y recibir archivos adjuntos por Web Service

Durante el modelado de tus procesos puedes encontrar que es necesario intercambiar archivos adjuntos con un sistema externo, ya sea para poder almacenarlos, compartirlos o procesarlos en otras aplicaciones. Los casos de uso son variados y de gran utilidad en el contexto de la automatización de procesos, por eso Flokzu ofrece 3 maneras de mover adjuntos utilizando Tareas de Servicio en el workflow.

Envío de adjuntos hacia otras instancias de Flokzu usando Flokzu Services
Envío del archivo adjunto (binario) hacia un sistema externo por REST.
Envío de una URL por REST que permite descargar un archivo desde un sistema externo de forma asíncrona.

Debido a que las tres características se configuran en tiempo de modelado, sólo es posible mover archivos que se encuentren guardados en Campos de tipo Adjunto.


Enviar adjuntos entre instancias Flokzu



Con este mecanismo podrás crear una copia del archivo en otra instancia distinta de tu organización, ya sea del mismo proceso o de uno distinto.

¿Cuándo es útil esta funcionalidad?



👉 Clonar o copiar instancias: Cuando se quiere clonar una instancia completa o crear una nueva con información que ya existe en el sistema.

👉 Modelar sub-procesos: En ocasiones te resultará útil modelar tus procesos como partes más pequeñas o aisladas de un procedimiento más grande dentro de tu organización, es decir, como un sub-proceso. En ese caso se desea que la información cargada en un proceso inicial A, continúe en otro proceso B.

¿Cómo funciona?



Para realizar alguna de estas acciones deberás agregar una Tarea de Servicio en el workflow, con una integración de Flokzu Services.
Veamos un ejemplo:

Supongamos un proceso donde se debe evaluar un cierto producto, y en caso de aprobarlo se iniciará una solicitud para su adquisición. Internamente en la organización eso se modela con dos procesos diferentes: Evaluación de producto y Solicitud de compra.

El formulario del proceso de evaluación tendrá un campo de tipo adjunto Descripción (PDF) donde se solicita al usuario que incluya la información del producto, y el workflow tendrá una Tarea Evaluar Producto donde el encargado decide si se realiza o no la compra.



Para aprender cómo crear una instancia con Flokzu Services puedes leer este post.

La integración con Flokzu Services Crear solicitud de compra se configura para crear el nuevo proceso, y además se quiere que el PDF se copie en el campo Catálogo de producto (PDF) del procesos de Solicitud de Compra.



Con esta configuración, Flokzu iniciará una nueva solicitud de compra y se creará una copia del archivo PDF en el campo indicado, de esta manera el área de administración encargada de ejecutar la compra, tendrá a disposición toda la información relevante en su propio proceso.


Del mismo modo se pueden utilizar Flokzu Services para copiar el adjunto a una instancia existente o para obtener el archivo también de otra instancia previamente creada.

Esta funcionalidad soporta la copia de adjuntos subidos por el usuario a Flokzu, así como archivos almacenados en google Drive o Microsoft OneDrive.


Enviar archivos adjuntos por Web Service



Flokzu permite integrarse con aplicaciones capaces de recibir un archivo adjunto para poder almacenarlo o procesarlo. Para ello utilizaremos Tareas de Servicio REST que podrán invocar Web Services y enviar uno o más archivos adjuntos como parámetro de entrada..

¿Cómo funciona?



Para hacer uso de esta característica se deberá agregar una Tarea de servicio REST, y personalizar la llamada seleccionando la opción form-data.

Para aprender cómo invocar un web Service con body personalizado puedes leer este post.




Form-data hace referencia a una forma de comunicación entre servicios web, donde los datos se envían como parejas clave/valor, que representan los campos de un formulario y sus valores. Si bien es útil para enviar cualquier tipo de dato que la aplicación externa requiera (texto, números, valores booleanos), es además el único mecanismo que soporta la codificación "multipart/form-data", necesario para poder enviar archivos. Si no se personaliza la llamada, o se utiliza la opción raw o x-www-form-urlencoded, será igualmente posible seleccionar campos de tipo adjunto como parámetros, pero en esos casos no se enviará el archivo.

Los adjuntos subidos con Google Drive o OneDrive no son almacenados por Flokzu y por lo tanto no pueden ser enviados con este mecanismo. Ver la sección Enviar URL de descarga de un adjunto

Flokzu permite enviar cualquier cantidad de archivos siempre y cuando el tamaño total de la llamada al servicio web no supere los 10 Megabytes de tamaño.



Enviar URL de descarga de un adjunto.



Algunos servicios web están diseñados para recibir un link que luego utilizan para descargar el archivo de forma asíncrona. Este mecanismo resulta más eficiente pues independiza los tiempos de respuesta y minimiza el tráfico de datos entre los servicios web que se ejecutan desde el workflow de tu proceso. Además, no tiene limitaciones en el tamaño de archivo a enviar.

¿Cómo funciona?



Para obtener una URL de descarga deberás agregar una Tarea de Servicio REST y configurar un campo de tipo adjunto en un parámetro sin utilizar la opción form-data

Llamada a servicio ingresando campo adjunto en el body

Campo adjunto como parámetro de entrada, sin personalizar la llamada

En lugar de obtener el archivo, tu servicio recibirá en el parámetro indicado la metadata incluyendo una URL de descarga:

{
	"file": {
    	    "attachmentId": "dc35696a412b4505bff824aa2f152642",
    	    "creationTime": "2024-04-02T20:26:27.77941695Z",
    	    "lastEditedUtc": "",
    	    "mimeType": 31,
    	    "name": "TAB-6-1.pdf",
    	    "size": 2398,
           "superType": 0,
    	    "url": "https://flokzu-storage-production...."
	},
	"sender": [{
        	"sender_email": "myemail@email.com",
        	"sender_name": "John Doe"
    	}
	]
}


Luego tu servicio deberá encargarse de invocar la URL y ejecutarla para descargar el archivo.


OpenAPI



La URL de descarga también se puede obtener al consumir el servicio GET Process Instance de la OpenAPI. La respuesta incluirá dentro del parámetro fields la metadata del archivo con la URL de descarga.

Validez de la URL



El link de descarga de Flokzu es generado cada vez que se invoca el servicio externo o que se solicita desde OpenAPI y caduca a los pocos minutos de haberse creado.
Esto quiere decir que incluso para un mismo archivo, obtendrás una URL distinta con cada solicitud y tu servicio deberá gestionar adecuadamente el tiempo de descarga.
Si un servicio necesita descargar un archivo más allá del tiempo de validez, deberá volver a hacer una solicitud y obtener un nuevo link de descarga.

En caso de adjuntos guardados en Google Drive o Microsoft OneDrive, el link de descarga es el proporcionado por estos servicios, no caduca y el control de acceso es manejado por ellos, con lo cual la descarga podría requerir autenticación adicional.

Recibir archivos por Web Service



Si el servicio web que estás invocando devuelve en su respuesta un archivo, podrás adjuntarlo en la Pestaña Adjuntos de tu instancia o en un campo del formulario.



En el tab Datos de Salida de la Tarea de Servicio deberás seleccionar la opción Binary y a continuación elegir de la lista el lugar donde se guardará el adjunto.

Ten presente que si el campo seleccionado ya contiene un archivo, el mismo será sobrescrito.

Actualizado el: 14/06/2024

¿Este artículo te resultó útil?

Comparte tu opinión

Cancelar

¡Gracias!