Articulo de referencia

Patrón de flujo de trabajo

Un patrón de flujo de trabajo es una forma especializada de patrón de diseño, tal como se define en el ámbito de la ingeniería de software o la ingeniería de procesos de negocio...

Un patrón de flujo de trabajo es una forma especializada de patrón de diseño, tal como se define en el ámbito de la ingeniería de software o la ingeniería de procesos de negocio . Los patrones de flujo de trabajo se refieren específicamente a problemas recurrentes y soluciones probadas relacionadas con el desarrollo de aplicaciones de flujo de trabajo en particular y, de forma más general, con aplicaciones orientadas a procesos .

Concepto

Los patrones de flujo de trabajo son conceptos de desarrollo optimizado. Su uso debe seguir estrategias que simplifiquen el mantenimiento y reduzcan el trabajo de modelado. El flujo de trabajo se ejecuta en tiempo real. Los mecanismos de control deben soportar el ritmo de trabajo habitual. Los patrones de diseño deben retrasar la ejecución del flujo de trabajo.

Agregación

Los patrones de flujo de trabajo generalmente se pueden agrupar en cadenas y las condiciones para su inicio y finalización deben definirse explícitamente.

Solicitud

Los patrones de flujo de trabajo pueden aplicarse en diversos contextos, por lo que las condiciones de uso deben definirse y mostrarse explícitamente para evitar interpretaciones erróneas.

Clasificación de Van der Aalst

Fuente: [ 1 ]

Una colección bien conocida de patrones de flujo de trabajo es la propuesta por Wil van der Aalst et al. (2003) en su artículo Workflow Patterns [ 2 ] , con versiones anteriores publicadas en 2000-2002. Esta colección de patrones se centra en un aspecto específico del desarrollo de aplicaciones orientadas a procesos, concretamente la descripción de las dependencias del flujo de control entre las actividades de un flujo de trabajo/proceso. Estos patrones se dividen en las siguientes categorías:

Patrones de control básicos

  • Secuencia: ejecutar dos o más actividades en secuencia.
  • División en paralelo: ejecutar dos o más actividades en cualquier orden o en paralelo.
  • Sincronizar: sincronizar dos o más actividades que pueden ejecutarse en cualquier orden o en paralelo; no continuar con la ejecución de las actividades subsiguientes hasta que todas las actividades precedentes hayan finalizado; también conocido como sincronización de barrera.
  • Elección exclusiva: seleccione una ruta de ejecución entre varias alternativas en función de los datos disponibles cuando la ejecución del proceso alcance la opción exclusiva.
  • Fusión simple: espera a que una de las actividades de un conjunto se complete antes de continuar; se supone que solo se ejecutará una de estas actividades; normalmente, estas actividades siguen rutas diferentes derivadas de una elección exclusiva o una elección diferida (ver más abajo).
  • Finalizar: finaliza la ejecución de las actividades ante un evento definido o un cambio de estado.

Patrones avanzados de ramificación y sincronización

  • Opción múltiple: elige varias rutas de ejecución entre muchas alternativas.
  • Elección condicional: elige una ruta de ejecución entre varias alternativas según condiciones de estado diferenciadas.
  • Sincronización de fusión: fusiona varias rutas de ejecución; sincroniza si se toman varias rutas; realiza el mismo procedimiento que para una fusión simple si solo se toma una ruta de ejecución.
  • Fusión múltiple: espera a que una de las actividades de un conjunto finalice antes de continuar; si se ejecutan varias de las actividades que se están esperando, la fusión simple se activa cada vez que una de ellas finaliza.
  • Discriminador: espera a que se complete una de las actividades de un conjunto antes de continuar; si se ejecutan varias de las actividades que se están esperando, el discriminador se activa solo una vez.
  • Unión N de M: igual que el discriminador, pero ahora es posible esperar hasta que se complete más de una de las actividades anteriores antes de continuar, estableciendo un parámetro N en algún número natural mayor que uno.

Patrones estructurales

  • Ciclo arbitrario: no impone ninguna restricción estructural sobre los tipos de bucles que pueden existir en el modelo de proceso.
  • Finalizar implícitamente: finaliza una instancia del proceso si no hay nada más que hacer.

Instancias Múltiples (IM)

  • MI sin sincronización: genera múltiples instancias de una actividad sin sincronizarlas posteriormente.
  • MI con conocimiento previo del tiempo de diseño: generar múltiples instancias de una actividad cuando se conoce el número de instancias en el momento del diseño (con sincronización).
  • MI con conocimiento previo del tiempo de ejecución: genera muchas instancias de una actividad cuando se puede determinar el número de instancias en algún momento durante el tiempo de ejecución (como en un bucle FOR, pero en paralelo).
  • MI sin conocimiento previo del tiempo de ejecución: genera muchas instancias de una actividad cuando no se puede determinar el número de instancias (como en un bucle WHILE pero en paralelo).

Patrones basados ​​en estados

  • Elección diferida: ejecuta uno de varios subprocesos alternativos. La elección del subproceso que se ejecutará no se basa en los datos disponibles en el momento en que la ejecución alcanza la opción diferida, sino que se determina mediante un evento (por ejemplo, cuando un usuario de la aplicación selecciona una tarea de la lista de trabajo o cuando el motor de ejecución de procesos recibe un mensaje).
  • Enrutamiento paralelo intercalado: ejecuta varias actividades en cualquier orden (por ejemplo, en función de la disponibilidad de recursos), pero no ejecuta ninguna de estas actividades simultáneamente.
  • Hito: permite realizar una determinada actividad en cualquier momento antes de alcanzar el hito, tras lo cual la actividad ya no podrá ejecutarse.

Patrones de cancelación

  • Cancelar actividad: detiene la ejecución de una actividad habilitada.
  • Cancelar caso: detiene la ejecución de un proceso en curso.
  • Cancelar espera: continuar la ejecución de un proceso en curso sin un evento de finalización previo.

Los patrones de flujo de trabajo descritos anteriormente se han utilizado para evaluar la funcionalidad de productos comerciales que facilitan el desarrollo de aplicaciones orientadas a procesos. También se han empleado para evaluar diversos estándares propuestos, como BPEL , BPMN , el diagrama de actividad UML , XPDL , etc. Cabe destacar que no todos estos patrones son relevantes en todos los dominios de aplicación, por lo que se debe tener precaución al utilizarlos para seleccionar un lenguaje o sistema específico para una aplicación determinada.

Los patrones de flujo de trabajo también se han utilizado como requisitos iniciales en el diseño de un lenguaje de flujo de trabajo y un sistema de código abierto llamado YAWL (Yet Another Workflow Language).

Se han propuesto varias extensiones al conjunto de patrones de flujo de trabajo mencionados anteriormente. En particular, los mismos grupos de investigación que desarrollaron estos patrones también han propuesto un conjunto de patrones de datos de flujo de trabajo, patrones de recursos de flujo de trabajo, patrones de manejo de excepciones de flujo de trabajo y patrones de interacción de servicios.

Otra clasificación

Otra clasificación de patrones de flujo de trabajo es la siguiente:

Independiente/Compartido
donde cada componente del trabajo programado se completa de forma independiente y ningún componente depende específicamente de otro. Un ejemplo sería cuando el personal atiende en un mostrador: Raoul puede atender a un cliente en su fila sin esperar a que Jamie atienda a otro.
Secuencial
donde cada componente del trabajo programado depende del componente precedente. En este caso, el componente precedente controla el avance del flujo de trabajo a través de los componentes subsiguientes. Un ejemplo sería en una línea de producción: Betty no puede colocar la tapa del radiador en el Ford Modelo T hasta que Verónica haya colocado el radiador.
Interdependientes/En red
donde cada componente del trabajo programado depende de que uno o varios componentes se hayan completado. En este caso, los componentes precedentes controlan el flujo de trabajo a través de los componentes subsiguientes. Un ejemplo sería un equipo de proyecto: Sarah debe esperar a que Kevin y George completen varias tareas antes de poder ejecutar la suya.

Otras perspectivas

Los patrones de flujo de trabajo no se limitan al flujo de control. [ 3 ] Otras colecciones de patrones (de flujo de trabajo) incluyen:

  • patrones de recursos, [ 4 ]
  • patrones de datos, [ 5 ] [ 6 ]
  • patrones de excepción, [ 7 ]
  • patrones de interacción de servicio. [ 8 ]
  • Patrones de paralelismo y procesamiento en paralelo. [ 9 ]

Estas colecciones de patrones se han utilizado para evaluar una variedad de procesos de flujo de trabajo, tanto comerciales (Websphere, Oracle BPEL, Staffware, SAP workflow, Windows Workflow Foundation , etc.) como de código abierto. [ 10 ]

Sistemas de flujo de trabajo que implementan patrones

Referencias

  1. "Página principal de patrones de flujo de trabajo" . Workflowpatterns.com . Consultado el 26 de noviembre de 2021 .
  2. Wil van Der Aalst , Arthur HM Hofstede , Bartek Kiepuszewski y Alistair P. Barros (2003). "Patrones de flujo de trabajo" . En: Bases de datos distribuidas y paralelas 14 (1): págs. 5-51. doi : 10.1023/A:1022883727209 .
  3. N. Russell, AHM ter Hofstede, WMP van der Aalst y N. Mulyar. Patrones de control de flujo de trabajo: una perspectiva revisada. Informe del BPM Center BPM-06-22, BPMcenter.org, 2006.
  4. N. Russell, WMP van der Aalst , AHM ter Hofstede y D. Edmond. «Patrones de recursos de flujo de trabajo: identificación, representación y soporte de herramientas». En O. Pastor y J. Falcao e Cunha (editores), Actas de la 17.ª Conferencia sobre Ingeniería de Sistemas de Información Avanzados (CAiSE'05), volumen 3520 de Lecture Notes in Computer Science , páginas 216-232. Springer-Verlag, Berlín, 2005.
  5. N. Russell, AHM ter Hofstede, D. Edmond y WMP van der Aalst . «Patrones de datos de flujo de trabajo: identificación, representación y soporte de herramientas». En L. Delcambre, C. Kop, HC Mayr, J. Mylopoulos y O. Pastor (editores), 24.ª Conferencia Internacional sobre Modelado Conceptual (ER 2005), volumen 3716 de Lecture Notes in Computer Science , páginas 353-368. Springer-Verlag, Berlín, 2005.
  6. N. Trcka, WMP van der Aalst y N. Sidorova. «Antipatrones de flujo de datos: Descubrimiento de errores de flujo de datos en flujos de trabajo». En P. van Eck, J. Gordijn y R. Wieringa (editores), Advanced Information Systems Engineering, Actas de la 21.ª Conferencia Internacional sobre Ingeniería de Sistemas de Información Avanzados (CAiSE'09), volumen 5565 de Lecture Notes in Computer Science , páginas 425-439. Springer-Verlag, Berlín, 2009.
  7. N. Russell, WMP van der Aalst y AHM ter Hofstede. «Patrones de excepción de flujo de trabajo». En E. Dubois y K. Pohl (editores), Actas de la 18.ª Conferencia Internacional sobre Ingeniería de Sistemas de Información Avanzados (CAiSE'06), volumen 4001 de Lecture Notes in Computer Science , páginas 288-302. Springer-Verlag, Berlín, 2006.
  8. WMP van der Aalst , AJ Mooij, C. Stahl y K. Wolf. «Interacción de servicios: patrones, formalización y análisis». En M. Bernardo, L. Padovani y G. Zavattaro (eds.), Métodos formales para servicios web, volumen 5569 de Lecture Notes in Computer Science , páginas 42-88. Springer-Verlag, Berlín, 2009.
  9. C. Pautasso, G. Alonso. "Patrones de computación paralela para flujos de trabajo en malla" Archivado el 30-12-2017 en Wayback Machine , en Actas del Taller HPDC2006 sobre flujos de trabajo en apoyo de la ciencia a gran escala (WORKS06), París, Francia, junio de 2006.
  10. P. Wohed, NC Russell, AHM ter Hofstede, B. Andersson y WMP van der Aalst . «Evaluación basada en patrones de sistemas BPM de código abierto: los casos de jBPM, OpenWFE y Enhydra Shark». En: Information and Software Technology , 51(8):1187-1216, 2009.
  11. Abouelhoda, M.; Issa, S.; Ghanem, M. (2012). "Tavaxy: Integración de flujos de trabajo de Taverna y Galaxy con soporte de computación en la nube" . BMC Bioinformatics . 13 : 77. doi : 10.1186/1471-2105-13-77 . PMC 3583125. PMID 22559942 .  
  12. Abouelhoda, M.; Alaa, S.; Ghanem, M. (2010). «Meta-workflows». Actas del 1er Taller Internacional sobre Enfoques de Flujo de Trabajo para la Nueva Ciencia Centrada en Datos - Wands '10 . p. 1. doi : 10.1145/1833398.1833400 . ISBN  9781450301886. S2CID 17343728 . 

Lecturas adicionales

  • Marlon Dumas , Wil van der Aalst y Arthur HM ter Hofstede ed. (2005). Sistemas de información conscientes de los procesos . John Wiley e hijos. ISBN 0-471-66306-9.
  • Volker Kramberg (2006) Evaluación basada en patrones de IBM WebSphere BPEL: Evaluación de WebSphere Integration Developer de IBM basada en patrones de flujo de trabajo.
  • Patrones de flujo de trabajo
  • BPMN 2 ejemplos de patrones de flujo de trabajo originales de 20