Flujos de trabajo

From SinergiaCRM
Jump to: navigation, search

Conceptos básicos

Un flujo de trabajo (o workflow, en inglés) es un proceso automático que ejecuta una o varias acciones cuando se verifican una o más condiciones.

 

Creación de un flujo de trabajo

Al crear un flujo de trabajo aparece la siguiente pantalla:

Wf01 crear.jpg

En ella se pueden diferenciar tres partes: campos básicos, condiciones y acciones del flujo de trabajo.

 

Campos básicos del flujo de trabajo

  • Nombre del flujo de trabajo. Obligatorio.
  • Módulo del Flujo de Trabajo: módulo alrededor del cual se construirá el flujo de trabajo. Obligatorio. Hasta que no se seleccione un módulo no será posible agregar ninguna condición.
  • Ejecuciones múltiples: marcar la casilla si se desea que el flujo de trabajo se ejecute más de una vez sobre un mismo registro. Dejarla sin marcar en caso contrario.
  • Estado: si es Activo se ejecutará el flujo de trabajo cuando proceda. Si es Inactivo no se ejecutará aunque se cumplan las condiciones de ejecución.
  • Ejecutar sobre: obligatorio. Ofrece tres opciones:
    • Registros nuevos: el flujo se ejecutará únicamente en el momento que se cree un registro en el módulo indicado.
    • Registros modificados: el flujo se ejecutará únicamente en el momento que se modifique un registro del módulo indicado.
    • Todos los registros: el flujo se ejecutará en el momento que se cree o modifique un registro del módulo indicado. Además se ejecutará sobre todos los registros del módulo cada vez que se lance la tarea programada asociada a los flujos de trabajo (ver más adelante).

Así pues, la decisión de cuándo y sobre qué registros debe ejecutarse un flujo de trabajo dependerá de la combinación establecida en los campos Ejecutar sobre y Ejecuciones múltiples así como del cumplimiento de las condiciones lógicas específicas establecidas para cada flujo (ver apartado siguiente).

 

Condiciones del flujo de trabajo

Para determinar en qué casos deben ejecutarse las acciones asociadas al flujo de trabajo pueden establecerse una o más condiciones, que deberán verificarse simultáneamente. Cada vez que se haga en el botón Agregar condición aparecerá una fila como la siguiente:

Wf02 condicion.jpg

Para construir una condición deben rellenarse los siguientes datos:

  • Módulo sobre el que se validará la condición. Se mostrarán el módulo elegido anteriormente así como todos los módulos relacionados con él. 
  • Campo sobre el que se validará la condición. Se mostrarán todos los campos disponibles en el módulo escogido en el desplegable anterior.
  • Operador: se mostrarán diferentes opciones en función del tipo de campo seleccionado en el desplegable anterior: si se trata de campo que contenga una fecha o un número se podrán seleccionar las opciones Igual a, No Igual a, Mayor que, Menor que, Mayor o igual que oMenor o igual que; si se trata de otro tipo de campo las opciones disponibles serán: Igual a y No igual a.
  • Tipo: las opciones disponibles serán:
    • Valor: para indicar un valor concreto con el que comparar.
    • Campo: para indicar un segundo campo con el que comparar.
    • Cualquier cambio: para ejecutar el flujo cuando se modifique el valor del campo seleccionado.
    • Fecha: esta opción sólo aparecerá en caso que el campo seleccionado sea de tipo fecha.
  • Valor: presentará diferentes alternativas en función de la opción seleccionada en el desplegable Tipo:
    • Si se selecciona Valor aparecerá una casilla de texto o el control que corresponda en función del tipo de campo: calendario desplegable, casilla de verificación, etc.
    • Si se selecciona Campo aparecerá una lista con los campos del módulo principal que sean de tipos compatibles con el tipo de campo seleccionado previamente.
    • Si se selecciona Cualquier cambio no habrá nada bajo la etiqueta Valor.
    • Si se selecciona Fecha aparecerá un desplegable con diferentes fechas disponibles (Ahora, Hoy, Aniversario más todos los campos de fecha disponibles en el módulo principal), a las cuáles se les permite sumar o restar un determinado período de tiempo (minutos, horas, días, semanas, meses o años). 

 

Acciones del flujo de trabajo

El resultado final del flujo de trabajo, y su valor principal, es la ejecución automatizada de una o más acciones a partir del cumplimiento de las condiciones ya descritas. Al pulsar el botón Agregar acción aparece una fila como la siguiente

Wf03 accion general.jpg

Para definir una acción se dispone de los siguientes campos:

  • Nombre de la acción.
  • Seleccionar acción indica el tipo de acción a realizar: crear o modificar un registro o enviar un correo electrónico. En función del valor elegido aparecerán unas u otras opciones a continuación.

Wf04 accion crear.jpg

  • Si la acción elegida es Crear registro podrán indicarse los siguientes datos: 
    • Tipo de registro: desplegable con la lista de módulos disponibles en la instancia. Debe elegirse el módulo en el que se desea crear el registro. Una vez seleccionado, aparecerán los botones Agregar campo y Agregar relación.
    • Relacionar con el módulo del flujo de trabajo: si se marca la casilla, el registro creado se relacionará con el registro sobre el que se está ejecutando el flujo de trabajo.
    • Agregar campo: permite definir valores de campos para el registro de nueva creación. Al pulsar el botón aparecerá la lista de los campos disponibles del módulo y se podrá asignar el valor para el campo elegido ya sea introduciendo directamente el valor deseado, ya sea asignando el valor de un campo del registro sobre el que se está ejecutando el flujo de trabajo. En caso de que el campo seleccionado sea uno relacionado con el módulo Usuarios aparecerán también las opciones Un usuario cada vez, El menos ocupado y Aleatorio.
    • Agregar relación: permite definir una relación entre el registro de nueva creación y un registro de cualquiera de los módulos con los que el módulo del nuevo registro tiene relación.
  • Si la acción elegida es Modificar registro la casilla Relacionar con el módulo del flujo de trabajo no aparecerá y el desplegable Tipo de registro solamente contendrá los módulos que estén relacionados con el módulo principal del flujo. Una vez elegido el módulo en el que hay que modificar registros aparecerán los botones Agregar campo y Agregar condición, que permiten la funcionalidad indicada en la opción Crear registro. Cabe tener en cuenta que en este caso se van a modificar todos los registros del módulo de destino de la acción que estén relacionados con el registro sobre el que se está ejecutando el flujo de trabajo.

Wf05 accion correo.jpg

  • Si la acción elegida es Enviar correo se podrá seleccionar la Plantilla de correo que se deberá utilizar (o se podrá crear en el mismo momento) y agregar a los destinatarios. Para cada destinatario añadido se deberán indicar los siguientes datos:
    • Tipo de destinatario: se podrá escoger entre Para (destinatario principal), Cc (con copia) y Cco (con copia oculta).
    • Destinatario: el correo electrónico del destinatario se podrá obtener de diferentes formas:
      • Correo electrónico: permite introducir la dirección manualmente.
      • Registro de correo electrónico: se enviará el correo a la dirección de correo electrónico del registro sobre el que se ejecuta el flujo. Esta opción sólo existe para los módulos que contienen direcciones de correo electrónico (Personas, Organizaciones, Interesados y Usuarios).
      • Campo relacionado: se enviará el correo a la dirección de correo electrónico de los registros relacionados con el registro sobre el que se ejecuta el flujo, previa elección del módulo relacionado.
      • Usuario: permite seleccionar el usuario del CRM al que se le debe enviar el correo electrónico.
      • Usuarios: permite seleccionar si se desea enviar el correo electrónico a todos los usuarios del CRM, solo a los usuarios que tengan asignado cierto rol o, en el caso de tener instalado Security Suite, solo a los usuarios que formen parte de un determinado grupo de seguridad.

Si en una acción de tipo Enviar correo no hay destinatario o plantilla de email, el resultado del proceso de workflow será Fallido. Sucederá lo mismo en caso de que no esté configurado el envío de correo a nivel global en el CRM.

 

Ejecución de los flujos de trabajo

Los flujos de trabajo se pueden ejecutar en dos situaciones distintas:

- Al crearse o modificarse un registro en un módulo cualquiera que tenga flujos de trabajo asociados. La creación o modificación puede realizarse en el interfaz de usuario del CRM (incluyendo, por ejemplo, la funcionalidad de actualizació masiva de registros), a través de un formulario web, mediante una importación de registros, etc. En cualquier operación de creación o modificación de registros en el CRM se verificará el cumplimiento de las condiciones de los flujos existentes y, en caso de que se cumplan, se ejecutarán las acciones asociadas a dichos flujos.

- Mediante una tarea programada. En el Planificador del CRM existe una tarea programada que por defecto se ejecuta de madrugada con periodicidad diaria. Esta tarea, a su vez, ejecuta todos los flujos de trabajo vinculados a cualquier módulo que tengan indicado que deben aplicarse sobre Todos los registros. Así pues, es posible provocar la ejecución de flujos de trabajo de forma periódica y sin necesidad de que un usuario realice una acción concreta en el CRM. Este tipo de flujos pueden ser interesantes para realizar acciones determinadas cuando se cumplan condiciones vinculadas a valores temporales. Por ejemplo: enviar un correo electrónico de felicitación a los socios por su cumpleaños. En el apartado de ejemplos de aplicación puede verse el diseño de este tipo de flujos con detalle.

Se recomienda no modificar la periodicidad de la tarea programada para que se ejecute más de una vez por día (que es como se configura por defecto), pues podría provocar efectos de sobrecarga en los servidores. De hecho, en la práctica totalidad de los casos aumentar dicha frecuencia no generará efectos distintos sobre los datos del CRM.

 

Procesos auditados

En la vista de detalle de cada flujo de trabajo aparece un subpanel de Procesos auditados en el que aparecen todos los registros sobre los que en cualquier momento se ha ejecutado el flujo de trabajo porque cumplían las condiciones para ello. Si el flujo se ha ejecutado correctamente, es decir, se han podido realizar las acciones configuradas, el Estado será Completado. En caso contrario, será Fallido. Y si todavía no ha terminado, será En ejecución.

En el menú del módulo Flujos de Trabajo aparece la opción Ver Procesos auditados, que permite acceder a una vista de lista específica en la que se muestran todos los procesos auditados de todos los flujos.

 

Consideraciones adicionales

1) Es posible crear flujos de trabajo en cascada, de forma la acción realizada por un flujo de trabajo provoque que se cumpla la condición para la ejecución de otro flujo.

2) No pueden programarse flujos en los cuales las acciones indicadas se apliquen únicamente sobre uno de los registros entre los que cumplen las condiciones. Si más de un registro cumple las condiciones el flujo se aplicará sobre todos ellos.

3) Es posible duplicar un flujo de forma similar a como se duplica un registro en cualquier módulo del CRM. De realizarse, es aconsejable revisar siempre que todos los campos se mantengan con los valores adecuados, pues en algunos casos es posible que queden en blanco.

4) En algunas circunstancias, si se crea un registro en los módulos Relaciones con personas o Relaciones con organizaciones mediante un flujo, el valor que se asigne al campo Tipo de relación del registro creado no será asignado al campo equivalente del módulo Personas o Organizaciones (como sí ocurre cuando se crea manualmente). De todos modos, la tarea programada de validación de datos que se ejecuta diariamente corregirá esta situación.

5) Los flujos funcionan de forma homogénea en la mayor parte de los módulos del CRM. Sin embargo, cabe tener en cuenta que módulos como Informes o Mail Merge Reports no participarán habitualmente de los flujos o lo harán de forma limitada.

6) Las plantillas de correo que se asocien a un flujo únicamente deben contener variables propias del módulo principal del flujo o de aquellos módulos con un primer nivel de relación con dicho módulo.

7) Cuando se realiza una actualización masiva los flujos potencialmente implicados se ejecutarán con normalidad, como en cualquier otra modificación de registros.

8) Como se ha indicado, las condiciones de ejecución de un flujo, cualquiera que sea su número, deben verificarse de forma completa (modo AND) para que el flujo se aplique sobre un registro determinado. Si se quisiera, por ejemplo, aplicar un flujo con dos condiciones pero que sólo fuera necesario que se cumpliera una de ellas (modo OR), entonces deberían crearse dos flujos similares, aplicando una de las condiciones en cada uno.

9) Cuando se programan acciones de creación de registros es conveniente que se asignen datos por lo menos para todos los campos obligatorios del módulo en el que se crea el registro.

10) En la detección de condiciones basadas en fecha de tipo Aniversario, la detección del 29 de febrero sólo funcionará los años bisiestos.

11) Aunque el interfaz permita elegir dicha posibilidad, al definir una acción no tiene sentido usar la opción Aniversario.

 

Ejemplos de aplicación

 

Programar una llamada y enviar un email cuando se da de alta un nuevo interesado

Al dar de alta un nuevo interesado en el CRM (puede ser vía formulario web, vía la propia aplicación, etc.) se desea enviarle un correo de bienvenida y programar una llamada para conocer de primera mano su interés en la organización.

Wf06 ejemplo 01.jpg

  • Propiedades: el flujo se ejecutará únicamente sobre los nuevos registros del módulo Interesados.
  • Condiciones: en este caso no se exige ninguna condición específica, las acciones se harán sobre todos los nuevos interesados.
  • Acciones: por un lado, crear un registro en el módulo Llamadas y vincularlo al registro de Interesados en cuestión, marcando la casilla Relacionar con el módulo del Flujo de Trabajo y estableciendo la fecha de la llamada para tres días después del alta así como el asunto de la llamada. Por el otro, enviar un correo a la dirección del nuevo interesado (Registro de correo electrónico), seleccionando la plantilla adecuada. En este caso, la inserción de variables en la plantilla de correo permitiría personalizar el cuerpo del mensaje para cada interesado, indicando, por ejemplo, su nombre.

 

Añadir un donante a una LPO

Cuando una persona adquiere la condición de donante se desea incorporarla una lista de público objetivo para este colectivo con el objetivo de usarla en campañas posteriores.

Wf06 ejemplo 02.jpg

  • Propiedades: el flujo se ejecutará de forma múltiple sobre Todos los registros del módulo Personas. Si hubiéramos indicado Registros modificados, el flujo se ejecutaría de forma individual sobre cada persona que se modificara por cualquier vía. Al indicar Todos los registros, aparte de lo anterior, el flujo también se ejecutará periódicamente vía tarea programada. Esto puede servir, por ejemplo, para incorporar a la lista donantes que ya lo eran antes de la creación del flujo de trabajo y que no hubieran sido integrados en la LPO por otras vías o que por cualquier otra razón no hubieran sido incorporados a la lista en cualquier momento posterior. De todos modos, la ejecución de los flujos es una tarea que potencialmente puede consumir recursos importantes de servidor, con lo que se recomienda ajustar el diseño a las necesidades reales y evitar sobrecargas. Por otro lado, se ha marcado la casilla Ejecuciones múltiples para que un mismo donante que modifique su situación como tal a lo largo del tiempo pueda ser nuevamente incluido en la LPO. Aquí cabe tener en cuenta que un donante que pierda la condición de tal no será eliminado automáticamente de la LPO ni por este ni por otro flujo de trabajo, por lo que debería realizarse una desvinculación manual.
  • Condiciones: la persona debe tener asociado el tipo de relación Donante. Es interesante observar el uso de la cláusula Uno de. Dado que el campo Tipo de relación en el módulo Personas es multiselección, debe usarse esta cláusula para que donantes que tengan otros tipos de relación activos sean reconocidos como tales.
  • Acciones: se debe crear una relación con el módulo Lista de público objetivo, añadiendo la persona a la lista seleccionada. Es interesante observar que en este caso la acción seleccionada, Modificar registro, no tiene efecto alguno sobre el registro del módulo Personas y sirve exclusivamente como vía de acceso a la creación de un registro de relación entre los módulos de Personas y Listas de Público Objetivo.

 

Generar un aviso por devolución

En caso de recibir una devolución de un recibo y que así quede registrada en el CRM (ya sea por edición manual, ya sea por carga automàtica del fichero bancario) se desea reasignar el pago al usuario encargado de los impagos y notificarle el hecho por correo electrónico. 

Wf07 ejemplo 03.jpg

  • Propiedades: el flujo se ejecutará de forma múltiple (por si un mismo pago es devuelto en más de una ocasión) sobre los Registros modificados del módulo Pagos.
  • Condiciones: el Estado del pago debe ser Impagado y su Fecha de devolución debe haber cambiado.
  • Acciones: se modificará el registro del pago, reasignándolo a un usuario concreto (el encargado de gestionar los impagos), y se notificará el hecho por correo al mismo usuario.

 

Enviar un agradecimiento a los socios al cumplir 10 años

Se desea enviar un correo de felicitación y agradecimiento a los socios que cumplen 10 años como tales. Al mismo tiempo, se desea notificar esta situación al departamento de atención a los socios para que puedan llevar a cabo otras acciones de fidelización, agradecimiento, homenaje, etc.

Wf08 ejemplo 04.jpg

  • Propiedades: el flujo se ejecutará sobre Todos los registros del módulo Relaciones con Personas.
  • Condiciones: la persona debe tener una relación de tipo socia activa (sin fecha de baja) y cuya fecha de alta sea 10 años atrás.
  • Acciones: se enviará un mensaje a la dirección de correo electrónico de la persona relacionada con el registro sobre el que se ejecuta el flujo. Se enviará otro mensaje a todos los usuarios del CRM que se encuentren en el rol de Atención a socios.

 

Felicitar a los socios por su cumpleaños

Se desea enviar un correo de felicitación a los socios en el día de su cumpleaños.

Wf09 ejemplo 05.jpg

  • Propiedades: el flujo se ejecutará sobre Todos los registros del módulo Personas. Se activa la casilla Ejecuciones múltiples para que un mismo socio sea felicitado todos los años.
  • Condiciones: la persona debe tener asociado el tipo de relación Socio. Es interesante observar el uso de la cláusula Uno de. Dado que el campo Tipo de relación en el módulo Personas es multiselección, debe usarse esta cláusula para que socios que tengan otros tipos de relación activos sean reconocidos como tales. Además se usa el parámetro Aniversario para indicar que la comparación se verificará en todos los casos en los que coincidan día y mes con la fecha indicada, omitiéndose el año. 
  • Acciones: se enviará un mensaje a la dirección de correo electrónico del registro sobre el que se ejecuta el flujo.

 

 

Incidencias conocidas

En el proceso de análisis y mejora del módulo de Flujos de Trabajo se han detectado algunas casuísticas de flujos que no se ejecutan según lo que sería de esperar. Se describen a continuación, a la espera de que investigaciones más detalladas o nuevas versiones del módulo permitan explicar o corregir los comportamientos anómalos.

 

No se valida la condición "Cualquier cambio" sobre campos auditados

Cuando un flujo tiene una condición del tipo Cualquier cambio aplicada sobre un campo auditado, la condición no valida cuando debería y, por lo tanto, las acciones vinculadas al flujo no se ejecutan. En estos casos se recomienda buscar una forma alternativa de definir la condición, de modo que no incluya la opción Cualquier cambio. De no ser posible, correspondería valorar si es más importante disponer del flujo o de la auditoría y, según lo decidido, podría desactivarse esta última sobre el campo en cuestión. Esta incidencia quedará resuelta con el paso a SuiteCRM.

 

El módulo no funciona durante el proceso de importación

A pesar de que una importación supone la creación o modificación de registros en el CRM, los flujos de trabajo asociados a los módulos sobre los que se realiza la importación no se ejecutan durante dicho proceso. En caso de necesitarlo, se recomienda usar un campo auxiliar del módulo para poder seleccionar los registros recién importados (sean nuevos o modificados) y a continuación realizar una actualización masiva sobre dichos registros (modificando el valor del citado campo auxiliar) para forzar el lanzamiento del flujo de trabajo.

 

No se inserta el valor del campo correo electrónico en una plantilla de correo a enviar

En algunos casos, al ejecutarse una acción de envío de correo como resultado de un flujo, es posible que si se introduce un campo de dirección de correo electrónico en la plantilla, este quede en blanco y no sea sustituido por el valor correspondiente, como si sucede con el resto de campos. Esto sucede cuando el registro es de nueva creación, pues primero se crea el registro de persona o interesado, a continuación se ejecuta el flujo de trabajo y finalmente se guarda en el CRM el dato del correo electrónico del registro creado, que se almacena en un módulo distinto (aunque en pantalla parezca ir todo junto). Por esta razón, al ejecutarse el flujo el dato del correo todavía no está disponible. Esta incidencia quedará resuelta con el paso a SuiteCRM.