9.30.2011

Aprendiendo WF parte 1

Una de las tecnologías que más utilizo y más me gusta de .NET es quizás una de las más subutilizadas es el Workflow Foundation. Por esta razón he decidido hacer una serie de post referente a esta tecnología con el fin de incentivar el uso de tan potente framework.

Introducción

El workflow foundation es un framework que nos permite diagramar procesos de negocio para orquestar componentes de negocio con lo cual podemos obtener una serie de beneficios tanto desde el punto de vista técnico como desde el punto de vista negocio. Entre los beneficios técnicos tenemos:

  • Los procesos gráficos son más simples de mantener.
  • Dado que el runtime del WF maneja mucho de las complejidades del framework es más simple aprovecharse de bondades tales como el paralelismo.
  • La facilidad para implementar servicios WFC a través de WF.

Entre lo más destacado desde el punto de vista negocios podemos mencionar:

  • Los analistas de negocio pueden participar más activamente de la definición y desarrollo del proceso
  • Los cambios a los procesos salen a producción más rápidamente.
  • Al exponer los procesos como servicios, permite que los mismos analistas de negocios estén conscientes de la posibilidad de reutilizar procesos de negocios ya existentes para crear nuevos procesos.

Desarrollando el primer workflow en WF

Los workflows de negocio están compuestos por actividades las cuales tiene diversas funcionalidades. Estas actividades en workflow foundation se representan tanto gráficamente como a través del código. En este primero post vamos a crear un workflow muy simple utilizando ambas presentaciones.

WF a través del diseñador

Para desarrollar nuestro primero ejemplo, vamos a crear una aplicación de consola del tipo workflow.

image

Ya en el workflow simplemente vamos a crear un flujo que simplemente escribe una hilera en la consola –> el típico hola mundo. El workflow se puede ver a continuación:

image

Este workflow simplemente tiene dos formas, una secuencia – que para este caso podría no ser necesaria ya que funciona como un contenedor secuencial de formas y en realidad la primitiva WriteLine podría funcionar sin la secuencia. Si ejecutamos este workflow el resultado se ve en la siguiente pantalla.

image

¿Y como funciona este workflow? En realidad toda la “magia” esta en el archivo program que se genera cuando creamos el proyecto, el cual vemos a continuación:

image

En el método Main, se invoca una nueva instancia del tipo Workflow1, la cual es la clase que representa nuestro workflow gráfico.

WF a través de código

Ahora vamos a construir el mismo workflow pero por código. Para esto vamos a hacer un proyecto de consola pero de los que normalmente hacemos para los ejemplos en el blog.

image

Como tenemos un proyecto normal de aplicación de consola, debemos agregar el assembly que contiene las actividades que pueden llegar a formar parte de nuestro workflow, incluso nuestro workflow es una actividad. Para esto procedemos a agregar una referencia a la librería System.Activities.

image

Ahora vamos a crear una clase que represente un workflow por código que simplemente escriba tal y como lo hicimos en el workflow gráfico el típico saludo de “Hola Mundo”. Esta clase la vamos a llamar WFSaludo y se presenta a continuación.

image

Para que la clase nos compile debemos agregar referencia a las siguientes librerías – si usan R#, la herramienta se las sugiere automáticamente:

image

Ahora vamos a invocar el workflow desde el método Main, tal y como lo hicimos con el workflow gráfico.

image

El resultado de ejecutar este workflow es el mismo que el anterior y se presenta a continuación.

image

 

Etiquetas de Technorati: ,