6. Definiendo Workflows

​​​Los workflows permite definir acciones de como enviar correos electrónicos, o actualizar otros CFOs, leer datos de otras fuentes.. al producirse un evento de inserción (on.insert), modificación (on.update) y/o borrado (on.delete). O se puede indicar que el workflow se evalúe siempre (common)

En caso de que exista (common) y un evento (on.xxx) se ejecutarán primero los procesos de common

Para definir workflows podemos indicar internamente en el CFO o definirlo en workflows externos vinculados al CFO. La ventaja de definirlos externamente es que permite una mejor gestión de la complejidad. Si se definen workflows internos y externos se ejecutarán ambos.

Configuración de la plataforma

La Plataforma CLOUD tiene que estar configurada correctamente para poder ejecutar workflows en general se necesitará:

  • Tener la variable de plataforma [PlatformVariables.cfo_api_key] con un valor de API-KEY válido para interactuar con CFOs
  • Tener configurado CLOUD CHANNEL/Email/Config con el API KEY de mandrill que se utilizará para enviar correos.

Estructura de un workflow asociado a un evento

Los elementos de Workflows asociados a un evento es un array de objetos que incluyen de forma común cuatro atributos:

  • action: El tipo de acción que ejecutará el workflow
  • active: Que debe valer 'true' para que se evalúe el workflow
  • id: Que identifique de forma sencilla el workflow
  • conditional: [opcional] Que establece una linea programada que se evaluará para decidir si el workflow se va a ejecutar o no.
  • message: [opcional] array para establecer un mensaje de salida en caso de que el workflow se ejecute de forma satisfactoria.

Atributo [action]

Este atributo determina los tipos de acciones que puede ejecutar un workflow:

  • setLocalizationLang: Asigna un idioma por defecto que podrá ser utilizado en el resto de workflows
  • setVariables: Asigna variables que se utilizarán en los siguientes workflows
  • readRelations: Lee datos de otros CFOs para que la información pueda ser utilizada por workflows siguientes.
  • sendEmail: Envía un correo electrónico
  • updateCFOData: Actualiza información de un CFO
  • insertCFOData: Inserta información en un CFO
  • hook: Establece una llamada a un API externo
  • slack: [in-development] envía un slack a un canal previamente configurado en el sistema
  • whatsapp: [in-development] envía un whatsapp a un teléfono previamente configurado en el sistema

Atributo [id]

Sirve para identificar de forma más sencilla el elemento del workflow.

Atributo [active]

Debe valer 'true' para que el elemento del workflow se ejecute. Sirve para desactivar elementos de una forma sencilla.

Atributo [conditional]

Este atributo permite indicar una línea programativa (similar a php o javascript) donde se pueden realizar sustituciones de valor con la información que tenga el CFO. En el ejemplo de arriba se asume que el CFO dispone de dos campos (Department,Type) y que cuando se inserta un registro se evalúan los valores introducidos y si estos equivalen a SOPORTE e INCIDENCIAS el workflow se ejecutará.

Cuando estamos en una actualización (on.update) podemos necesitar comparar valores antiguos antes de la actualización para definir una condición. El acceso a los valores antiguos se realizada poniendo el prefijo 'OLD_' al nombre de la variable. De esta manera podríamos poner condiciones que fueran verdad cuando algún valor haya cambiado:

{"conditional":"'{{OLD_Department}}' != '{{Department}}'",..}

Si la condición devuelve algún error por sintaxis errónea o excepción, esta se mostrará en el resultado de la llamada y el workflow no se ejecutará.

Si este atributo no es enviado, el workflow se ejecutará siempre.

Atributo [message]

Sirve para mostrar un mensaje en pantalla en el caso de que el workflow se ejecute con éxito. La estructura es un array con las siguientes características:

atributo
Descripcion
Ejemplo
*title
Título del mensaje. Admite Tags de sustitución con los datos actualizados, modificados o borrados.
{"message":{"title":"Proceso ejecutado correctamente"}}
type
[opcional] Tipo de mensaje (success por defecto). Muestra un color asociado al tipo: success, error, warning, default, info
​{"message":{
"title":"Proceso ejecutado correctamente",
"type":"success"}
}
description
​[opcional] Descripción del mensaje. Admite Tags de sustitución con los datos actualizados, modificados o borrados.
​{"message":{
"title":"Proceso ejecutado correctamente",
"type":"success",
"description":"El registro se ha actualizado de forma satisfactoria"}
}
time
[opcional] Tiempo que el mensaje durará en segundos. (por defecto -1 indicando que quede permanente hasta que el usuario cierre el mensaje)
​{"message":{
"title":"Proceso ejecutado correctamente",
"type":"success",
"description":"El registro se ha actualizado de forma satisfactoria",
"time":5}}
url
[opcional] Url al que redirigir al usuario en caso de que pinche en la notificación
​{"message":{
"title":"Proceso ejecutado correctamente",
"type":"success",
"description":"El registro se ha actualizado de forma satisfactoria",
"time":5,"url":"https://cloudframework.io"}}

Otros atributos

En función del atributo [action] se requerirán más atributos que definiremos en los subcontenidos.

Cesta de compras