Windows Workflow Foundation en .NET Framework 4.0

Publicación del inglés original: lunes, 22 de marzo de 2010 a las 16:17 PST por Somasegar

Windows Workflow Foundation (WF4) en .NET Framework 4.0 está diseñado para que los nuevos desarrolladores lo aprendan más fácilmente, solucina una gama más amplia de escenarios de clientes y es más eficaz.

WF es un modelo de programación para redactar la lógica de aplicación y coordinar la ejecución, lo que permite a los desarrolladores abstraer código complicado mientras se aprovechan de un conjunto de servicios en tiempo de ejecución. Las actividades son los bloques de creación que se unen para crear flujos de trabajo. El motor en tiempo de ejecución proporciona la capacidad de guardar el estado de los flujos de trabajo, realizar un seguimiento de la información acerca del flujo de trabajo y administrar la coordinación de varios flujos de trabajo que se ejecutan al mismo tiempo.

Diseñar el flujo de trabajo

Visual Studio 2010 representa una actualización importante en la experiencia de diseño de WF. El rendimiento y la extensibilidad han mejorado considerablemente y la superficie del diseñador tiene una apariencia mejorada, basada en WPF.

El nuevo diseñador tiene mejoras de productividad importantes para los autores de flujos de trabajo grandes, incluida la capacidad para expandir y contraer las actividades secundarias, el navegador en la parte superior del diseñador que permite a los usuarios explorar dentro y fuera de los flujos de trabajo y mejores capacidades de visualización para descubrir y arreglar los errores de validación.

El diseñador de flujo de trabajo de WF4 es un control WPF que puede utilizar para el alojar el diseñador dentro de sus aplicaciones personalizadas con unas pocas líneas de código. Esto le permite crear una experiencia de edición de flujo de trabajo personalizada dentro de la aplicación y permite a los usuarios visualizar un flujo de trabajo en ejecución dentro de sus aplicaciones.

Introducción a Flowchart: El nuevo estilo de flujo de control

WF4 presenta un estilo de control de diagrama de flujo que permite crear flujos de trabajo flexibles que requieren la capacidad de un volver a pasos anteriores, así como omitir pasos basados en condiciones dentro del flujo de trabajo. Está emparejado con el nuevo sistema de herramientas que permite contruir diagramas de flujo visualmente. El nuevo control de diagrama de flujo de WF4 permite que la lógica de negocios se componga de tal forma que le sea más natural al autor del flujo y sea visualmente más pequeño. En la figura siguiente se utiliza el estilo de diagrama de flujo para crear un flujo de trabajo del proceso de contratación.

Un modelo simplificado de actividad

En el corazón de WF está la creación de actividades personalizadas para su uso en flujos de trabajo de orden superior y WF4 facilita más que nunca crear actividades personalizadas. WF4 reduce considerablemente la cantidad de código que los programadores necesitan escribir para implementar la lógica de aplicación personalizada para una gran variedad de escenarios. Al simplificar el modelo de actividad, ha aumentado considerablemente el rendimiento del motor en tiempo de ejecución.

La forma en que se crean las actividades también se ha actualizado para proporcionar opciones optimizadas para escenarios específicos, proporcionando una gran variedad de clases de base de actividad que permiten a los desarrolladores hacer la experiencia de creación tan eficaz o compleja como sea necesario. El modelo de actividad también admite la ejecución asincrónica, lo que permite que un flujo de trabajo pueda crear y coordinar varias ramas simultáneas de lógica asincrónica. Además, el modelo incluye ahora una función de ActivityAction, que le permite escribir una actividad que se puede personalizar al ofrecer al usuario de la actividad la capacidad para enchufar devoluciones de llamada de seguridad de tipos para la lógica personalizada. Esto, por ejemplo, le permitiría crear una actividad ProcessOrder que permite al usuario proporcionar sus implementaciones de HandlePayment.

Creación de un flujo de trabajo

Para demostrar WF, vamos a construir un flujo de trabajo para recuperar las fuentes de sindicación de un número de blogs. Aquí, generaremos un flujo de trabajo que va a utilizar una actividad personalizada GetWebPage para recuperar un número de fuentes en paralelo. Además, utilizamos CompletionCondition del ParallelForEach para detener la recuperación fuentes de una vez que se hayan completado la mitad de las solicitudes. Esto permite al flujo de trabajo avanzar una vez que la primera mitad de las solicitudes se ha procesado correctamente (y controlar correctamente la cancelación de las otras solicitudes pendientes).

Ahora que hemos creado el flujo de trabajo, podemos incorporarlo a una aplicación de ASP.NET MVC. Aquí vamos a utilizar el WorkflowInvoker para ejecutar el flujo de trabajo desde un controlador.

public ActionResult GetBlogs()

{

var results = WorkflowInvoker.Invoke(

new GetSomeBlogs(),

new Dictionary<string, object>

{

{

"Urls", new List<string>

{

"http://blogs.msdn.com/somasegar/atom.xml",

"http://blogs.msdn.com/brada/atom.xml",

"http://blogs.msdn.com/endpoint/atom.xml",

"http://blogs.msdn.com/mwinkle/atom.xml"

}

}

});

var feeds = results["Feeds"] as List<SyndicationFeed>;

ViewData["Message"] = "You received " +

feeds.Count.ToString() +

" feeds with a total of " +

feeds.Sum(feed => feed.Items.Count()) +

" posts.";

return View("Index");

}

Flujos de trabajo y los servicios WCF

Cuando hablamos con clientes descubrimos que muchos están interesados en utilizar WF con servicios para redactar y coordinar mensajería en su aplicación. En .NET Framework 4.0 hemos hecho que sea fácil usar flujos de trabajo con servicios para redactar y coordinar mensajería mediante la integración de WF con Windows Communication Foundation (WCF).

WF contiene actividades que permiten exponer operaciones de servicio como parte del flujo de trabajo y pueden utilizarse para habilitar un control específico sobre la forma en que se correlacionan los mensajes entrantes a las instancias de flujo de trabajo de mensajería. Además, puede utilizar WorkflowServiceHost para alojar sus servicios dentro de IIS 7 y Windows Server AppFabric, lo que elimina la necesidad de escribir lógica personalizada de alojamiento. Si está escribiendo un flujo de trabajo que utiliza servicios web para comunicarse, WorkflowServiceHost evita que tenga que escribir una aplicación alrededor de su servicio de flujo de trabajo. WorkflowServiceHost y motor de ejecución del flujo de trabajo garantizarán que los flujos de trabajo se conserven y se reinician automáticamente cuando sea necesario, con la información de estado correcto cargada. El motor en tiempo de ejecución trata las complejidades de administrar los recursos y el estado del flujo de trabajo, incluida la administración del flujo de las transacciones de entrada y salida del flujo de trabajo.

Descubre más

Visite el Centro de desarrollo de MSDN de WF (en inglés) y el blog del equipo Endpoing (en inglés) para obtener más información o póngase en contacto con el equipo de Workflow en los foros de MSDN (en inglés). Para empezar a trabajar con Workflow Foundation, eche un vistazo a los siguientes documentos: La forma flujo de trabajo: Entendiendo el Windows Workflow Foundation (en inglés) y Introducción del programador de WF4 (en inglés).

¡Namaste!