El flujo de trabajo en paralelo es una potente función que permite dividir una instancia del flujo de trabajo en rutas paralelas y, posteriormente, volver a combinarlas. Se basa en los conceptos siguientes:
•La división en distintas rutas que se procesan en paralelo. Por ejemplo, un proceso de fabricación en el que deben realizarse varias tareas simultáneamente. •Una tarea individual que deben procesarla múltiples usuarios. Por ejemplo, un contrato que debe ser aprobado por varios directores.
Un elemento clave de los flujos de trabajo paralelos es el token del flujo de trabajo. Cuando se divide una instancia, se crean tokens que progresan a través del flujo de trabajo. Un flujo de trabajo puede tener de 1 a tokens de flujo de trabajo que se desplazan por el proceso. Para el usuario de un flujo de trabajo no hay diferencia entre un token y una instancia estándar; la bandeja de entrada del flujo de trabajo mostrará cada tarea y al solicitar una tarea se abrirá un cuadro de diálogo de tarea como antes. La tarea de combinación espera a que lleguen el número configurado de tokens antes de combinarlos en una instancia única.
Pueden crearse flujos de trabajo paralelos utilizando cuatro tareas especiales. Dividir, Dividido por usuarios, Combinar y Combinar por excepción. Cada tarea Dividir debe tener su correspondiente tarea Combinar para garantizar que el número configurado de tokens se combinan de nuevo en uno solo.
Este primer ejemplo muestra cómo dividir una instancia de un flujo de trabajo en múltiples rutas empleando las tareas Dividir y Combinar. En este ejemplo tenemos un contrato que se envÃa a los directores financiero y de ventas para su aprobación y si supera un valor de 100.000 € también se envÃa al Consejero Delegado. La tarea Combinar calcula dinámicamente cuántos tokens hay pendientes y espera a que vuelva el número correspondiente de tokens (configurados en tarea combinar) antes de combinarlos.
Sin embargo, no es necesario que una tarea Dividir se combine en una única tarea Combinar. Es posible combinar distintos tokens de la instancia del flujo de trabajo en cualquier momento a lo largo del proceso. Cada tarea Combinar calcula dinámicamente qué tokens están pendientes potencialmente y espera a que vuelva el número configurado de tokens. El siguiente ejemplo muestra el mismo proceso, pero después de que los directores financiero y de ventas hayan aprobado el contrato, éste debe pasar por un corrector para la comprobación final de errores. La primera tarea de combinación calcula dinámicamente los tokens pendientes y espera a los tokens de los directores financiero y de ventas antes de combinarlos; "sabe" que se ha creado un tercer token para dividir al Consejero Delegado, pero dado que no es posible combinarlo, lo ignora. Del mismo modo, la tarea de combinación final comprueba dinámicamente el número de token posibles que siguen pendientes. Para contratos por un valor inferior a 100.000 € "sabe" que sólo debe esperar el token del corrector, mientras que para contratos de más de 100.000 € esperará a los tokens del corrector Y del Consejo Delegado.
|
A continuación examinaremos la tarea Combinar por excepción, que esencialmente anula todas las divisiones activas. Por ejemplo, si la otra parte en la negación del contrato decide de pronto detener todas las negociaciones, todas las demás tareas dejarán de tener sentido y deberá terminar el flujo de trabajo. Cuando se desencadena una tarea Combinar por excepción, "recoge" TODOS los tokens pendientes y los combina. En el ejemplo siguiente, en el momento que se cancela el contrato, se recogen y combinan inmediatamente TODOS los tokens activos en cualquier punto del proceso. Esto significa que las tareas del flujo de trabajo se eliminarán de la bandeja de entrada del flujo de trabajo del usuario y el flujo de trabajo continuará con la tarea siguiente (en nuestro caso, esto es el final del flujo de trabajo).
|
Por último, examinemos la tarea Dividido por usuarios, que permite asignar dinámicamente las divisiones en tiempo de ejecución. Por ejemplo, en lugar de crear tareas manuales individuales para cada director, puede emplearse una tarea Dividido por usuarios que divide el flujo de trabajo de acuerdo con los usuarios asignados a la tarea manual después de la división por usuarios.
En el ejemplo siguiente, el contrato se enruta a una tarea Dividido por usuarios, que divide el flujo de trabajo automáticamente en el número de tokens requerido que defina la tarea manual.
Sólo hay una tarea de aprobación, pero cada usuario asignado recibe un token independiente y puede trabajar en la tarea de la misma forma que con la tarea Dividir estándar. Cuando todos los usuarios asignados hayan terminado la tarea, volverá a combinarse.Â
También puede utilizarse una tarea Combinar por excepción, en cuyo caso en cuanto un director rechaza el contrato, se recogerán todos los tokens y se anulará la división.
|
1. Toda tarea Dividir necesita como mÃnimo una tarea Combinar correspondiente. En el ejemplo siguiente no hay ninguna tarea Combinar definida, lo que invalida esta definición del proceso.
2. En una tarea Dividir/Combinar no está permitido hacer un bucle a la tarea Dividir o a una tarea anterior a la división. Dicho bucle podrÃa llevar a crear nuevos tokens sin necesidad.
|
Naturalmente, los bucles están permitidos, pero deben estar dentro de la tarea dividir/combinar o completamente fuera de ella. En el ejemplo siguiente, el bucle desde Verificar hasta Enviar para aprobación es válido, porque se produce completamente fuera de la tarea dividir/combinar.
|
3. Dos tareas de combinación no se pueden conectar nunca con una transición, ya que cada una de las tareas de combinación esperará a que termine la otra.
Â
|
|