.NET For Your Information

Un blog más sobre tecnología .NET

Utilidad de Windows Workflow Foundation

with 2 comments


El presente post intentará dar un overview a Windows Workflow Foundation, incluyendo las ventajas y desventajas que pueda traer para nuestros desarrollos de aplicaciones.

Resumidamente, Windows Workflow Foundation es el modelo de programación, motor y herramientas para generar con rapidez aplicaciones basadas en flujos de trabajo en aplicaciones .NET a partir de su versión 3.0.

WF está conformado principalmente por dos categorías, aunque podríamos añadir una tercera que sería un híbrido de las dos primeras:

  • WWF SecuencialWorkflow Secuencial. Está basado en diagramas de flujo y realiza progresos de una etapa a otra sin regresar a etapas anteriores, al menos que se haya definido así en un bucle. Esta categoría es usada para workflows donde no haya interacción con el usuario. Por ejemplo, desarrollar el flujo de trabajo donde se calcule el monto final de una factura donde hayan condiciones como cantidad de productos vendidos, fidelidad del cliente, descuentos propios del producto, y así podríamos seguir añadiendo condiciones hasta llegar a calcular el monto final.
  • Workflow de Máquinas de Estado. Como su nombre lo dice, está basado en el funcionamiento de máquinas de estado, donde al cumplirse un conjunto de condiciones en los atributos de un objeto, pues tendrá un estado en específico que definirá su comportamiento, posibles futuros estados (inclusive estados previamente adquiridos). Esta categoría sí permite la interacción con humanos, por lo que se hace más notable su utilidad. Por ejemplo, cuando necesitamos distintas aprobaciones para una orden de compra, en este caso dicha orden tendrá varios estados a lo largo del flujo de trabajo, e interactuará con distintos roles de usuarios, hasta llegar a su aprobación o rechazo.

Ahora bien, más allá de su concepto teórico, se deben tener varias consideraciones al adoptar una aplicación WF en alguno de los proyectos que vayamos a desarrollar. La primera, y más importante, es que no se puede desarrollar una aplicación en su totalidad únicamente utilizando WF. Para poder incluir WF en un proyecto, debe existir una aplicación capaz de alojar o de comportarse como host de dicha aplicación WF. Esto trae varias ventajas:

  • Al desarrollar una aplicación en WF, luego podrá ser usada por cualquier aplicación que desarrollemos, siempre y cuando la adaptemos para que se comporte como host de la misma, y se mantenga su misma interfaz de comunicación.
  • Si hubiera algún cambio en el flujo de trabajo (por ejemplo, la nueva regla de negocio requiere que se hagan 3 aprobaciones de una orden en vez de 1), sólo tendría impacto en la aplicación WF. Luego de realizar los cambios pertinentes, todas las aplicaciones que alojen a dicha aplicación WF estarán actualizadas automáticamente, siempre y cuando dichos cambios no afecten la interfaz de comunicación entre ellas, lo que pudiera ocurrir si se necesitara enviar o recibir parámetros adicionales.

Sin embargo, a pesar de estas ventajas, el uso de WF aún no resulta del todo atractivo para las fábricas de SW por varios motivos. El primero es que, por ser una tecnología relativamente nueva, no existe un gran número de personal suficientemente capacitado en el mercado laboral, lo que dificulta la puesta en marcha de un proyecto con estas características. En segundo lugar, desarrollar una aplicación WF puede costar más recursos que desarrollar el flujo de trabajo embebido dentro de la aplicación host (como se ha hecho tradicionalmente), debido a que, además de tener que desarrollar todo el código, también se debe lograr la interfaz de comunicación entre ambas aplicaciones considerando componentes como el WorkflowRuntimeManager, cuyo objetivo es gestionar las interacciones con cada instancia del WorkflowRuntime de manera consistente llevando a cabo tareas rutinarias del workflow como su creación o inicialización, o el WorkflowInstanceWrapper que es usado para encapsular cada instancia del workflow aislando su estado de otras instancias. Ambos componentes requieren un conocimiento medio/avanzado para su desarrollo.

Por último, para el que guste seguir profundizando en el tema, recomiendo ampliamente el libro de Bruce Bukovics, Pro WF de editorial Apress, el cual ofrece tanto conocimiento teórico como práctico.

Espero haber aportado nuevos elementos de interés a su conocimiento.

De más está decir, agradecido estaré de cualquier comentario que tengan a bien.

Anuncios

Written by Alejandro Afonso Spinola

4 agosto 2009 a 10:29 AM

2 comentarios

Subscribe to comments with RSS.

  1. Mi pana, interesante el trabajo que estás realizando por la comunidad, keep it up, sin embargo una observación, cambia el nombre de WWF por WF (porque el primero es WWF o World Wild Fund for Nature = http://en.wikipedia.org/wiki/World_Wide_Fund_for_Nature) por lo que MS lo cambío a WF = http://msdn.microsoft.com/en-us/netframework/aa663328.aspx) justo antes de liberar WinFX (.NET 3.0)

    Saludos,

    Angel

    Angel Hernández

    11 agosto 2009 at 2:48 AM

    • Gracias por tu observación Angel. En seguida haré los cambios pertinentes. Saludos

      Alejandro Afonso Spinola

      11 agosto 2009 at 8:43 AM


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: