En 10 pasos: Entendiendo Windows Workflow Foundation

|

Windows Workflow Foundation es una tecnología disponible en Visual Studio para diseñar flujos de trabajo en aplicaciones Windows y Web que utilizan Microsoft .Net Framework 3.0 en adelante. En esta entrada intentaré mostrar tan rápido como sea posible una visión general de WF y como comenzar.

Que es un Workflow.

Un Workflow (Flujo de Trabajo) es una serie de procesos o tareas que tienen que ejecutarse en un orden, secuencia y prioridades determinadas, cada proceso debe persistir la información de entrada a medida en que se ejecuta hasta el último paso, obteniendo así un visión de cual fue la secuencia de actividades que se realizaron y como esto afecto el contenido de los datos del usuario.

Sin WF cada tarea o paso estaría representado por clases e Interfaz de Usuario independientes como piezas de software a lo largo de la aplicación pero en el caso de WF cada proceso es visualmente depurable, mantenible y presentable a través del diseñador de flujos disponible en Visual Studio 2008.

En 10 pasos:

En Microsoft Visual Studio 2008:

1. Creamos un nuevo proyecto del tipo Workflow y seleccione Sequential Workflow. Un Workflow Secuencial es aquel que se basa en la presendencia de un paso ejecutar otro hasta llegar a una ultima actividad.



2. Dado a que necesitamos una aplicacion donde hospedar la ejecución del flujo creamos una aplicación consola como a continuación.




3. Lo más común es que las reglas de negocio estén definidas en una librería de clases independiente en la solución, así que a fines de demostración crearemos otro proyecto que incluirá las actividades dentro del WF.

4. Una vez que le hagamos doble clic a Workflow1.cs en el explorador de soluciones notaremos una serie de elementos en el toolbar de Visual Studio para diseñar el flujo, en este caso solo utilizaremos un Delay el cual arrastraremos hasta el punto entre el fin e inicio de mi flujo.


5. Para crear una actividad propia eliminaremos Class1.cs del proyecto librería de clases y agregaremos MyOwnActivity.cs, adicionalmente al mismo proyecto, crearemos una referencia a System.Workflow.ComponentModel.dll.

6. En el proyecto Sequential Workflow, agregaremos una referencia al proyecto que contiene mi nueva actividad, compilamos, cerramos y reabrimos el diseñador de Workflow y debemos ver MyOwnActivity esta vez como actividad disponible en el Toolbox.


7. Hecho esto podemos ahora arrastrar nuestra actividad justo debajo de delayActivity1. Luego presionamos F4 mientras seleccionamos delayActivity1 y establecemos la propiedad TimeoutDuration a 00:00:05 (5 segundos). A nuestra actividad no le haremos ningún cambio.


8. En la aplicación de consola, agregamos referencias a System.Workflow.Activies.dll, System.Workflow.ComponentModel.dll, System.Workflow.Runtime.dll y a nuestros otros dos proyectos.

9. En el program.cs, de nuestra aplicación cónsola escribo las líneas de código que muestro a continuación en la imagen. El uso del AutoResetEvent es necesario para esperar la finalización del flujo dado a que WF ejecuta cada flujo en un hilo independiente. Para señalar el evento y continuar con el curso de la aplicación al momento de salir los eventos WorkflowTerminated (En caso de error) y WorkflowCompleted (En caso de exito) señalan a la variable ev que debe pasar la ejecución a la aplicación.


10. Establecemos el proyecto de cónsola como proyecto de inicio y presionamos F5.


Espero que sea de su utilidad!


Saludos.

3 comentarios:

Jesus dijo...

Hola, tengo un problema en el paso 5, ya que no se como crear una actividad propia, creo una clase con el nombre de myOwnactivity, pero no me aparece nada, tambien creo un componente con ese mismo nombre, al parecer me aparece el nombre del proyecto library pero no me aparece el componente, no se si me explique, saludos

Jesus dijo...

Lo siento, retiro lo dicho, no estaba bien cargada la imagen del código, cuando escribi el comentario anterior, se actualizo bien la pagina,
aprovecho para preguntarte si tienes algun libro electronico sobre workflow, saludos y muy buen material.

Unknown dijo...

muchas gracias, me sirvio de mucho!!!

Publicar un comentario