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 área de ingeniería de software o ingeniería de procesos empresariales . L...

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

Concepto

Los patrones de flujo de trabajo son conceptos de desarrollo económico. Su uso debe seguir estrategias de simplificación del mantenimiento y reducción del trabajo de modelado. El flujo de trabajo se realiza en tiempo real. Los mecanismos de control deben soportar el ritmo típico de trabajo. 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 agregar como cadenas y las condiciones de inicio y finalización deben definirse explícitamente.

Solicitud

Los patrones de flujo de trabajo se pueden aplicar en varios contextos, por lo tanto, las condiciones de uso deben definirse y mostrarse explícitamente para evitar malas interpretaciones.

Clasificación de Van der Aalst[1]

Una colección 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 entre 2000 y 2002. Esta colección de patrones se centra en un aspecto específico del desarrollo de aplicaciones orientadas a procesos, a saber, 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 paralela: 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 proceder con la ejecución de actividades subsiguientes hasta que se hayan completado todas las actividades anteriores; también conocido como sincronización de barrera.
  • Elección exclusiva: elija una ruta de ejecución entre muchas alternativas según los datos que estén disponibles cuando la ejecución del proceso llegue a la elección exclusiva
  • Fusión simple: esperar a que se complete una de un conjunto de actividades antes de continuar; se supone que solo se ejecutará una de estas actividades; normalmente, estas actividades se encuentran en caminos diferentes que surgen de una elección exclusiva o una elección diferida (ver a continuación)
  • Terminar: finalizar la ejecución de actividades tras un evento definido o un cambio de estado

Patrones avanzados de ramificación y sincronización

  • Opción múltiple: elija varias rutas de ejecución entre muchas alternativas
  • Elección condicional: elija una ruta de ejecución entre muchas alternativas según las condiciones de estado discriminadas
  • Sincronización de fusión: fusionar muchas rutas de ejecución; sincronizar si se toman muchas rutas; hacer lo mismo que para una fusión simple si solo se toma una ruta de ejecución
  • Fusión múltiple: espera a que se complete una de un conjunto de actividades antes de continuar; si se ejecutan varias de las actividades que se están esperando, la fusión simple se activa cada vez que se completa una de ellas.
  • Discriminador: espera a que se complete una de un conjunto de actividades antes de continuar; si se ejecutan varias de las actividades que se están esperando, el discriminador solo se activa una vez.
  • Unión N-fuera-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.
  • Terminar implícitamente: terminar una instancia del proceso si no hay nada más que hacer

Instancias múltiples (MI)

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

Patrones basados ​​en estados

  • Elección diferida: ejecutar uno de varios subprocesos alternativos. La elección del subproceso que se va a ejecutar no se basa en los datos que están disponibles en el momento en que la ejecución ha llegado a la opción diferida, sino que está determinada por un evento (por ejemplo, un usuario de la aplicación que selecciona una tarea de la lista de trabajo o un mensaje que recibe el motor de ejecución del proceso).
  • Enrutamiento paralelo intercalado: ejecuta una serie de actividades en cualquier orden (por ejemplo, según la disponibilidad de recursos), pero no ejecuta ninguna de estas actividades simultáneamente.
  • Hito: permite realizar una determinada actividad en cualquier momento antes de que se alcance el hito, después del cual la actividad ya no podrá ejecutarse.

Patrones de cancelación

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

Los patrones de flujo de trabajo anteriores se han utilizado para evaluar la funcionalidad de productos comerciales que respaldan el desarrollo de aplicaciones orientadas a procesos. También se han utilizado para evaluar una serie de estándares propuestos, incluidos BPEL , BPMN , diagrama de actividad UML , XPDL , etc. Se ha observado que no todos estos patrones son relevantes en todos los dominios de aplicación, por lo que se debe tener cuidado al utilizar los patrones de flujo de trabajo anteriores para seleccionar un lenguaje o sistema en particular 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 del conjunto de patrones de flujo de trabajo antes mencionado. 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 con servicios.

Otra clasificación

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

Independiente/Agrupado
donde cada componente del trabajo programado se completa independientemente de cada uno de los otros componentes y ningún componente tiene una dependencia específica de ningún otro componente. Un ejemplo sería cuando el personal está atendiendo en un mostrador: Raoul puede atender a un cliente en su cola sin esperar a que Jamie atienda a un cliente en su cola.
Secuencial
donde cada componente del trabajo programado depende del componente anterior. En este caso, el componente anterior controla el avance del flujo de trabajo a través de los componentes subsiguientes. Un ejemplo sería una línea de producción: Betty no puede colocar la tapa del radiador del Ford Modelo T hasta que Verónica haya colocado el radiador en su lugar.
Interdependiente/En red
donde cada componente del trabajo programado depende de que se complete uno o varios componentes más. En este caso, los componentes anteriores controlan el flujo de trabajo a través de los componentes posteriores. Un ejemplo sería un equipo de proyecto: Sarah debe esperar a que Kevin y George completen varias tareas antes de poder ejecutar su tarea.

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 servicios. [8]
  • paralelismo y patrones de canalización. [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

  • Tavaxy [11] es un sistema de flujo de trabajo basado en la nube que implementa un enfoque basado en patrones para permitir la interoperabilidad entre Galaxy y Taverna, dos motores de flujo de trabajo populares en el dominio de la bioinformática, [12]
  • YAWL , otro lenguaje de flujo de trabajo más
  • Cameleon (lenguaje de programación) , lenguaje gráfico basado en flujo de trabajo para programación funcional.

Referencias

  1. ^ "Página de inicio 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: Distributed and Parallel Databases 14 (1): págs. 5-51. doi :10.1023/A:1022883727209.
  3. ^ N. Russell, AHM ter Hofstede, WMP van der Aalst y N. Mulyar. Control de flujo de trabajo: patrones de flujo: una visión revisada. Informe BPM-06-22 del BPM Center, BPMcenter.org, 2006.
  4. ^ N. Russell, WMPvan 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 Avanzada (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 WMPvan 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, 24th International Conference on Conceptual Modeling (ER 2005), volumen 3716 de Lecture Notes in Computer Science , páginas 353-368. Springer-Verlag, Berlín, 2005.
  6. ^ N. Trcka, WMPvan 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, Ingeniería de sistemas de información avanzada, Actas de la 21.ª Conferencia internacional sobre ingeniería de sistemas de información avanzada (CAiSE'09), volumen 5565 de Lecture Notes in Computer Science , páginas 425-439. Springer-Verlag, Berlín, 2009.
  7. ^ N. Russell, WMPvan 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 avanzada de sistemas de información (CAiSE'06), volumen 4001 de Lecture Notes in Computer Science , páginas 288-302. Springer-Verlag, Berlín, 2006.
  8. ^ WMPvan 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, editores, 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 cuadrícula", en Proc. 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 WMPvan 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-flujos de trabajo". Actas del 1.er Taller internacional sobre enfoques de flujo de trabajo para la nueva ciencia centrada en los datos - Wands '10 . p. 1. doi :10.1145/1833398.1833400. ISBN 9781450301886. Número de identificación del sujeto  17343728.

Lectura adicional

  • 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 IBM WebSphere Integration Developer basada en patrones de flujo de trabajo.
  • Patrones de flujo de trabajo
  • BPMN 2 ejemplos de 20 patrones de flujo de trabajo originales
Obtenido de "https://es.wikipedia.org/w/index.php?title=Patrón_de_flujo_de_trabajo&oldid=1187098590"