Una aplicación de flujo de trabajo es una aplicación de software que automatiza, al menos en cierto grado, un proceso o procesos. Los procesos suelen estar relacionados con el negocio, pero pueden ser cualquier proceso que requiera una serie de pasos para automatizarse mediante software . Algunos pasos del proceso pueden requerir la intervención humana, como una aprobación o el desarrollo de texto personalizado, pero las funciones que pueden automatizarse deben ser manejadas por la aplicación. Las aplicaciones avanzadas permiten a los usuarios introducir nuevos componentes en la operación. [1]
Por ejemplo, considere una orden de compra que se mueve a través de varios departamentos para su autorización y eventual compra. El pedido se puede mover de un departamento a otro para su aprobación automáticamente. Cuando se obtienen todas las autorizaciones, se notifica al solicitante de la orden de compra y se le otorga la autorización. Un proceso de flujo de trabajo puede implicar un mantenimiento frecuente. Por ejemplo, el aprobador normal de órdenes de compra puede estar de vacaciones, en cuyo caso, la aplicación solicitará la aprobación de aprobadores alternativos.
Desarrollo
Las aplicaciones de flujo de trabajo se pueden desarrollar utilizando un diseñador gráfico, un lenguaje de programación o una combinación de ambos.
Algunos productos de software proporcionan un medio para crear aplicaciones de flujo de trabajo solo con un diseñador gráfico basado en diagramas. Estos tipos de sistemas se basan en la capacidad de capturar toda la información relevante para el proceso de flujo de trabajo a través de una interfaz especializada dirigida a no programadores y luego compilar esa información en una aplicación de flujo de trabajo funcional. A veces, sin embargo, surge la necesidad de utilizar un lenguaje de programación cuando es necesario integrar reglas más complejas en el flujo de trabajo, como cálculos para validar datos en formularios de entrada.
Para el diseño de flujo de trabajo basado en código, las aplicaciones de flujo de trabajo se pueden desarrollar con cualquier lenguaje de programación de propósito general , pero también existen lenguajes de flujo de trabajo especializados. Estos generalmente vienen con una notación gráfica asociada (como BPMN ), pero algunos son textuales o basados en XML . Los lenguajes especializados que se pueden usar para la definición del flujo de trabajo de esta manera incluyen:
Los lenguajes anteriores se basan en la sintaxis XML y, si bien son adecuados para la manipulación por software, pueden resultar difíciles de trabajar para personas sin conocimientos técnicos. Por lo tanto, su uso generalmente se ve aumentado por notaciones gráficas que permiten la creación de diagramas similares a diagramas de flujo que son más fáciles de desarrollar e interpretar para las personas: la creación de tales diagramas es en efecto una forma de programación "gráfica". El paquete de software que permite a un usuario desarrollar un diagrama de flujo de trabajo normalmente traducirá un diagrama a su equivalente XML.
Otro enfoque para desarrollar aplicaciones de flujo de trabajo es utilizar un lenguaje de programación junto con bibliotecas e interfaces que capturan abstracciones para la coordinación de tareas. Los siguientes son ejemplos de dichas bibliotecas e interfaces:
El uso de bibliotecas es generalmente complementario a las técnicas de diagramación, que no siempre son suficientes por sí mismas para crear aplicaciones completamente funcionales (a menos que la herramienta de diagramación sea parte de un sistema de gestión de flujo de trabajo específico). Los flujos de trabajo de WF, por ejemplo, se pueden crear usando Microsoft Visual Studio en forma de diagrama (su equivalente XML es XAML ), y su funcionalidad aumentada con código escrito en C # o VB.NET: una aplicación de software existente puede llamar a un flujo de trabajo dado como una aplicación web. Servicio. Las herramientas de desarrollo de software como Visual Studio o los numerosos entornos de codificación para Java también permitirán que determinados componentes se diseñen completamente en código y luego se utilicen como bloques de construcción en los diagramas de flujo de trabajo una vez compilados.
Una limitación de ciertas técnicas puramente basadas en diagramas, como BPMN anterior, es que para ajustarse al propósito de la especificación del flujo de trabajo, dichas notaciones deben mejorarse con construcciones adicionales para capturar el paso de datos, las transformaciones de datos y las condiciones de enrutamiento, para vincular las tareas a sus implementación, etc. BPMN, aunque está destinado a servir como estándar, es deficiente en este sentido, por lo que varios paquetes comerciales (como Microsoft Biztalk ) abordan estas necesidades de manera patentada (específicamente, mejorando el conjunto básico de iconos de diagramación con iconos que admiten la funcionalidad necesaria).
Para el propósito del análisis estático, por ejemplo, para detectar errores semánticos en tiempo de diseño, también es posible representar el flujo de trabajo en una forma matemática usando una notación formal como las redes de Petri .
Referencias
- ^ Jörg Becker; Michael zur Muehlen; Marc Gille (2002). "Arquitecturas de aplicaciones de flujo de trabajo: clasificación y características de los sistemas de información basados en flujo de trabajo". En Fischer, L. (ed.). Manual de flujo de trabajo 2002 . Lighthouse Point, FL: Estrategias futuras. CiteSeerX 10.1.1.24.2311 .