Windows Workflow Foundation (WWF) – Part 1

Windows Workflow Foundation permite la automatización de tareas, actividades y procesos (manejo de estado, flexibilidad), permitiendo utilizar transacciones integradas a través de workflows (flujos de trabajo). Además, aprovecha las capacidades de BizTalk Server.

En otras palabras, Windows Workflow Foundation permite abstraer la lógica de proceso en un componente adicional, que cuenta con una serie de servicios, y está encargado de coordinar el flujo de la ejecución de todo un programa. De esta forma, permite tener bien definidos los mecanismos que puedan ofrecer el estado apropiado y la transparencia de un proceso.

¿Qué es un workflow?

Un workflow es un conjunto de unidades elementales llamadas actividades, que son almacenadas en forma de un modelo que describe un proceso del mundo real. Los workflows proveen una manera de describir el orden de ejecución y de relaciones dependientes entre piezas cortas o largas de un trabajo que se está ejecutando. Este trabajo pasa por el modelo de principio a fin, y las actividades pueden ser ejecutadas por personas o por funciones de sistema.

wwf_intro

Facilita y describe procesos del mundo real

·         Actividades que realizan personas

·         Actividades que realizan sistemas

WWF incluye soporte para workflow tanto de sistemas como humano, a través de un extenso rango de escenarios, que incluyen:

– Workflow dentro de la línea de aplicaciones de negocios.
– Flujo de página de la interfaz del usuario.
– Workflow humano.
– Workflow compuesto para aplicaciones orientadas a servicios.
– Workflow conducido por reglas de negocios.
– Workflow para manejo de sistemas.

Se asocia con otras tecnologías:

 ASP.NET
– Windows Communication Foundation.
– Windows Presentation Foundation.

Aplicaciones que podrían llegar a usar workflows

Una aplicación ASP.NET que muestre páginas a sus usuarios podría usar un workflow para controlar el orden en que esas páginas son exhibidas. Esto hace que sea más fácil cambiar el flujo de las páginas sin que ellos tengan que modificarlas, como también separar la aplicación de la interfaz del usuario de su lógica de control.

Una aplicación compuesta en un ambiente orientado a servicios podría implementar su comportamiento de base usando un workflow. Como cada vez más y más las aplicaciones exponen su lógica a través de servicios Web, crear procesos de negocios que utilicen esos servicios se vuelve más fácil. Una tecnología workflow como Windows Workflow Foundation provee un contenedor para la lógica que invocaría a esos servicios, poniéndolos juntos en una aplicación compleja.

Una aplicación que apunte a un problema específico, como, por ejemplo, el manejo de la relación con el cliente (CRM: Customer Relationship Management), o un mercado vertical concreto, como el de servicios financieros, podrían ser construidos alrededor de un workflow. Este tipo de aplicación comúnmente implementa un número diferente de procesos de negocios, construyendo la lógica que manejan esos procesos en un WF común. De esta forma, la aplicación será más rápida de construir, más rápida de cambiar y más fácil de personalizar.

Requerimientos que debe cumplir un workflow simple

1.    Debe tener la habilidad de tomar decisiones basadas en reglas de negocios.  Este requerimiento incluye reglas simples, por ejemplo, una decisión de o no basada en el resultado de un chequeo de crédito, como también reglas más complejas, por ejemplo, conjuntos potencialmente largos que deben ser evaluados para hacer una decisión inicial.

2.    Formas de comunicarse con otros programas y otros sistemas fuera de workflows. Un ejemplo son los servicios Web u otras tecnologías.

3.    Maneras de interactuar con las personas. Por ejemplo, un encargado debe aprobar a sus empleados. Por lo tanto, el workflow debe ser capaz de mostrar una interfaz para el usuario o interactuar con los seres humanos a través de otro software.

4.    La habilidad de mantener el estado durante el tiempo de vida de un workflow. Especialmente cuando hay gente envuelta, como el encargado en este ejemplo, un workflow puede tomar mucho tiempo en completarse (por ejemplo, ¿qué pasaría si el encargado se tomara el día o dos semanas de vacaciones?). Construir sistemas escalables requiere una manera de desactivar el workflow y almacenar su estado persistentemente, para luego reactivarlo y cargar ese estado cuando el siguiente paso sea ejecutado.

Un workflow puede ofrecer cosas como:

1.    Un componente de tipo acercamiento a workflows, donde cada paso pueda ser implementado por una porción específica de software. Como en otras tecnologías de componentes, es posible especificar declarativamente los comportamientos para estos pasos (como, por ejemplo, transacciones) en vez de escribir código que implemente estos comportamientos. También se pueden crear pasos predefinidos para workflows que son útiles en un dominio en particular, como, por ejemplo, aplicaciones de seguros o manejo de sistemas, y luego usar éstos en diferentes workflows

2.    Herramientas que crean y modifican workflows gráficamente. Como un workflow consiste en un número definido de pasos, puede ser construido usando herramientas que ilustran esos pasos y las relaciones entre ellos.

3.    La habilidad de monitorear un workflow que se está ejecutando, examinando su  ejecución en tiempo real. Por ejemplo, con la actividad Tracing.

4.    Una manera de cambiar una instancia workflow que se está ejecutando; por ejemplo, agregar un paso. Aunque esto no es típicamente necesario cuando sólo se abarca software, este tipo de flexibilidad es un requerimiento común para que Workflows interactúe con personas.

Los procesos de negocios comúnmente involucran tanto a personas como a aplicaciones y automatizan acciones entre software, la cual es muy diferente de automatizar interacciones entre personas

Workflows de sistemas

Los workflows de sistemas son interacciones automatizadas entre aplicaciones. Estas interacciones son usualmente predecibles y relativamente estáticas. La lógica que dirige esta interacción puede ser especificada una sola vez, y luego ser utilizada una y otra vez sin cambios. Los workflows de sistemas también intercambian datos bien definidos y estructurados, como, por ejemplo, documentos XML, que pueden ser procesados efectivamente por software sin ninguna intervención humana.

Workflows humanos

Un workflow humano es el que coordina interacciones con personas. Las aplicaciones que interactúan a favor de las personas tienden a necesitar más flexibilidad que aquellas que interactúan puramente con otro software.

Esto contrasta con los workflows de sistemas, ya que las personas cambian de parecer, introducen nuevas ideas y excepciones, deciden cancelar un proceso inesperadamente y realizan otras cosas que hacen a los workflows humanos más efectivos y más dinámicos.

Los programas que soportan workflows humanos deberían permitir un acercamiento más flexible orientado a eventos. Éstos también trabajan con datos menos estructurados y más comprensibles para los humanos, como, por ejemplo, mensajes de e-mail y documentos de texto, en vez de la información estructurada que es utilizada en los workflows de sistemas.

Componentes principales

Arquitectura de Windows Workflow Foundation

La arquitectura de Windows Workflow Foundation consta de seis partes principales:

          Activity: es una unidad de trabajo. El trabajo que una actividad implementa puede variar de forma muy simple a muy compleja.

          Workflow Model: es un grupo de actividades que implementa todas o algunas partes de la lógica de negocios.

          Designers: son herramientas gráficas que pueden ser usadas para crear y modificar actividades de workflows.

          Base Activity Library: es un grupo de actividades que los desarrolladores pueden usar para crear workflows.

          Runtime Engine: es una librería que ejecuta workflows. El Runtime Engine también provee otros servicios, como mecanismos para comunicarse con software fuera del workflow.

          Host Process: es una aplicación de Windows que da soporte al Windows Workflow Foundation Runtime Engine y a cualquier workflow que ejecuta. El Host Process provee servicios de soporte en ejecución para un estado persistente del workflow, para manejar transacciones y otras funciones.

wwf_architecture

Actividades

Las activities son la unidad elemental de un workflow. Son agregadas de manera similar a como se añade en XML un Child Node a un Root Node. Una vez que todas las actividades en el camino de un flujo dado terminan de ejecutarse, la instancia Workflow se completa.

Windows Workflow Foundation contiene una librería de mecanismos estándar que permiten crear actividades propias. Esto permite también extensibilidad y reutilización entre workflows.

Las activities se implementan en clases. Son heredables, anidables y, por supuesto, reutilizables

Dentro de la Base Activity Library, las más relevantes son:

          Code: ejecuta código C# para acciones personalizadas.

          EventDriven: representa una sucesión de actividades cuya ejecución es iniciada por un evento.

          EventSink: le permite al workflow recibir información de un Data Exchange Service (DES) registrado en el Workflow Runtime.

          Invoke Method: permite al workflow invocar un método en la interfaz para mandar un mensaje al DES.

          Invoke WebService: permite al workflow invocar un Web Service.

          Invoke Workflow: permite que el workflow llame o inicie otro workflow totalmente independiente.

          Select Data: le permite al workflow realizar queries indirectamente a través del host.

Workflow Model Layer

La Capa de Modelo de Workflow (Workflow Model Layer) es donde muchos de los desarrolladores pasarán la mayor parte de su tiempo escribiendo código para sus aplicaciones en Windows Workflow Foundation. Esta capa incluye soporte para tipos de modelos de workflow, actividades y la programación principal de APIs, que es usada por muchos desarrolladores.

A pesar de que Windows Workflow Foundation incluye estos dos modelos, los clientes pueden heredar de ellos, para crear sus propios modelos específicos o nuevos.

Capa de Diseño

Dentro de Visual Studio .NET, Windows Workflow Foundation provee un conjunto de herramientas gráficas que apuntan a los diseñadores. El objetivo es que la experiencia de desarrollo en Visual Studio .NET sea lo más familiar posible a las ya existentes aplicaciones de desarrolladores .NET en C# y VB.NET; y que se puedan construir aplicaciones utilizando Windows Presentation Foundation (WPF) y Windows Communication Foundation(WCF).

wwf_design_layer

Estas herramientas gráficas facilitan el desarrollo en Workflows. Esto es similar a las herramientas que se pueden usar en Visual Studio 2008, donde se arrastran hasta un formulario y luego se sueltan, para crear una interfaz gráfica para el usuario.

Runtime Layer

La capa Runtime (Runtime Layer) cumple un papel esencial en Windows Workflow Foundation e incluye:

          Execution: es el servicio de ejecución que programa actividades y soporta comportamientos comunes, tales como el manejo de eventos, excepciones, rastreo y transacciones.

          Tracking: este servicio crea los eventos de rastreo y son serializados a través de la misma interfaz.

          State management: es el servicio de manejo de estado que, como su nombre lo indica, maneja estados que puedan ser retenidos a través de la interfaz de la persistencia.

          Scheduler: es el servicio programador que programa la ejecución de actividades.

          Rules: es el servicio de reglas que provee la funcionalidad de política de ejecución y la evaluación de condición de CodeDOM (Code Document Object Model).

Jonnathan De La Barra Acalorado

About justindeveloper

I am MCP (Microsoft Certified Professional). MCTS (Microsoft Certified Technology Specialist) and MCPD (Microsoft Certified Professional Developer), also I am SAP Business One Certified!! Desarrollando desde el IDE de Visual Studio NET 2003 hasta ahora con el Visual Studio NET 2010. Desde Microsoft SQL Server 2000 hasta ahora con el Microsoft SQL Server 2008 R2 y tambien con SharePoint, desde WSS 3.0 y MOSS 2007 y ahora familirizandome con el Sharepoint Foundation 2010 & Sharepoint Server 2010. The software development will follow being every time more wonderful!
This entry was posted in Development. Bookmark the permalink.

One Response to Windows Workflow Foundation (WWF) – Part 1

  1. Sergio says:

    como monitoreo los flujos que se han creado con wwf?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s