Beruflich Dokumente
Kultur Dokumente
Contents
Mantiene el Estado, el cual est representado por una simple variable de tipo
texto.
Obtiene entrada del mundo exterior, tal como recibir una peticin de un cliente.
Una aplicacin simple puede solamente leer de la consola, mientras que una
ms compleja puede recibir una peticin HTTP desde un navegador Web o un
mensaje SOAP de otra aplicacin.
Otro costo de esta mejora en escalabilidad es que el cdigo no proporciona una vista unificada de la
lgica general del programa. En la versin mostrada en la Figura 1, el orden en el cual el programa
espera datos es obvio Solamente hay una trayectoria posible por el cdigo. Con la versin de la
Figura 2 , sin embargo, el control de flujo no es evidente. En Efecto, el pedazo de cdigo que maneja
la segunda peticin del cliente puede necesitar verificar si el primer pedazo de cdigo ya fue ejecutado.
Para una aplicacin que implementa cualquier clase de proceso de negocio significante, el
entendimiento y la correcta implementacin del control de flujo a travs de varios pedazos de cdigo
puede ser un reto.
La situacin es esta: Escribir aplicaciones unificadas hace la vida del programador mas facil y el codigo
fcil de entender, pero el resultado no escala bien. Escribir aplicaciones en pedazos de codigo que
comparten un estado externo, tal como las aplicaciones ASP.NET, permite la escalabilidad pero hace
el manejo del estado difcil y hace perder el control de flujo unificado. Lo que queremos es una forma
de hacer ambas cosas: escribir lgica de negocio escalable con una administracin del estado simple,
y que permita tener una vista unificada del control de flujo de la aplicacin.
Esto es exactamente lo que Workflow proporciona. La siguiente seccin muestra como:
En este simple ejemplo, el flujo de trabajo empieza con una actividad ReceiveMessageque obtiene la
entrada del mundo exterior. Esto es seguido por una actividad If , la cual implementa una bifurcacin.
. If es tambien una actividad compuesta, conteniendo otras actividades (etiquetadas X y Y) que
ejecutan el trabajo realizado en cada bifurcacin. La Actividad If es seguida por una actividad
SendMessage que enva alguna salida al mundo exterior. Otra actividad ReceiveMessageapacere a
continuacin, la cual obtiene ms entradas, y despus es seguida por una actividad While . La
actividad While contiene otra actividad, Z, que hace el trabajo del ciclo while. El workflow completo
termina con una actividad SendMessage enviando como salida el resultado del programa.
Un corolario importante de esto es que WF no define un lenguaje particular para describer workflowstodo depende de las actividades que un programador elija utilizar. Para hacer la vida ms fcil, WF
incluye una biblioteca de Actividades Base (Base Activity Library , BAL) que proporciona un amplio y
til conjunto de actividades (De hecho todas las actividades utilizadas aqu son parte del BAL) . Pero
los programadores son libres de crear cualquier otra actividad que ellos quieran. Incluso podran
ignorar completamente el conjunto de actividades de BAL.
La pregunta obvia aqu: Porque todo este Lio? Crear un programa usando actividades es diferente de
lo que los programadores estn acostumbrados, Porque no utilizar cdigo ordinario?
La respuesta, por supuesto, es que este procedimiento puede ayudarnos a crear ,mejor cdigo. Note
por ejemplo, que el estilo workflow da al programador un control de flujo unificado. Igual que en el caso
mostrado anteriormente en la figura 1, La logica del programa principal es un flujo coherente. Esto
hace fcil de entender, y debido a que la logica no esta separada en pedazos, no hay necesidad de
verificaciones adicionales. El workflow por si mismo expresa el control de flujo permitido.
Esto representa la mitad de nuestra meta: Crear lgica de aplicacin unificada. Pero las aplicaciones
WF pueden tambin cumplir con la segunda parte, crear aplicaciones escalables con manejo sencillo
del estado. La siguiente seccin explica como el workflow hace esto posible.
Proporcionando Escalabilidad
Para ser escalable una aplicacin de servidor no puede estar encadenada a un solo proceso sobre
una sola mquina. Mas an explcitamente dividiendo la aplicacin en pedazos de cdigo, como
paginas ASP.NET rompe lo que debera ser un control de flujo unificado. Tambin forza al
programador a trabajar con el estado explcitamente. Lo que realmente queremos es una forma de
tener nuestra lgica automticamente dividida en pedazos que puedan ejecutar en diferentes procesos
en diferentes maquinas. Tambin quisiramos que nuestra aplicacin manejara su estado por
nosotros, de tal forma que todo lo que tuviramos que hacer es acceder a variables.
Esto es exactamente lo que workflow proporciona. La Figura 5 muestra los fundamentos de como WF
realiza estas cosas.
10
11
12
En Efecto echmosle otra mirada a la Figura 6. Acaso No luce muy similar que la Figura 2, la cual
muestra como un pedazo de aplicacin (ej. Una construida solamente con ASP.NET) alcanza
escalabilidad? Y de hecho, No acaso la Figura 6 tambin tiene una similaridad con la Figura 1, la cual
muestra una aplicacin unificada construida con control de flujo lineal? WF logra ambas cosas: El
control de flujo de la aplicacin es expresado en una forma unificada y comprensible, y la aplicacin
puede escalar, puesto que no est bloqueada a un solo procesador de una sola mquina. Esta es la
belleza del estilo de programacin workflow.
Y esto no es todo, usando WF tiene adems otras ventajas. Puede hacer coordinar trabajo paralelo
fcilmente, por ejemplo, ayuda a rastrear el progreso de una aplicacin y mucho ms. La siguiente
seccin revisa estos aspectos de la tecnologa.
13
14
15
Para hacer esto possible, WF permite crear actividades personalizadas. Por ejemplo , las actividades
etiquetadas X, Y, y Z en los workflows mostrados anteriormente son en efecto actividades
personalizadas, com o la Figura 9 lo hace explcito.
16
17
18
19
le permiten a un cliente reservar vuelos o realizar compras electrnicas, o realizar algn otro proceso
de negocio. En casos como estos, es mejor seleccionar WF para implementar la lgica del servicio.
Esta combinacin tiene un nombre: Lgica implementada usando WF y expuesta va WCF es
conocida como un servicio de workflow (workflow service). La Figura 12 ilustra esta idea.
Figura 12: Un Servico de workflow usa WCF para exponer lgica basada en
WF.
Como la figura muestra, WCF permite exponer uno o mas puntos de service (endpoints) que un cliente
puede invocar va SOAP, REST, o cualquier otro. Cuando un cliente llama la operacin inicial en este
servicio de ejemplo, la solicitud es manejada por la primera actividad ReceiveMessagedel workflow.
Si una actividad If sigue a continuacin, y cuyas actividades personalizadas incluidas sean
ejecutadas depende de del contenido de la solicitud del cliente. Cuando la actividad Ifes terminada,
una respuesta es regresada va la actividad SendMessage .La segunda peticin del cliente invocando
otra operacin es manejada de manera similar: Es aceptada por la actividad ReceiveMessage,
procesada por la lgica del workflow, y despus respondida usando la actividad SendMessage.
Porque es buena la idea de escribir lgica de negocio orientada a servicios? La respuesta es obvia:
Permite crear una aplicacin unificada y escalable. En vez de que cada aplicacin requiera una
verificacin ---Es legal invocarme ahora? Este conocimiento est embebido en la lgica misma del
workflow. Esto hace la aplicacin fcil de escribir e igual de importante, fcil de entender para
20
personas que eventualmente le darn mantenimiento. Y en vez de escribir su cdigo propio para
manejar escalabilidad y estado, el runtime de WF hace todo esto por usted.
Un servicio de Workflow adems de permitir todos los beneficios anteriores, como cualquier aplicacin
WF incluye lo siguiente:
Implemenatcin de servicios que hacen trabajo en paralelo es directo: solamente arrastre actividades
dentro de una actividad Parallel.
Rastreo del servicio es proporcionado por el runtime de WF.
Dependiendo del dominio del problema, es possible crear actividades personalizadas reutilizables para
usar en otros servicios.
El workflow puede ser creado grficamente, con la lgica de proceso visible directamente en el
diseador de workflows grfico.
Usando WF y WCF juntos creando servicios de workflow nunca fu tan fcil en otras versiones
de WF. Con NET Framework 4, la combinacin de esta tecnologa viene integrada de una manera
ms natural. La meta de crear lgica de negocio en este estilo es lo ms simple posible.
21
22
23
Debido a que un servicio de workflow no est atado a un proceso especfico sobre una maquina
especfica, puede ser cargado y balanceado a travs de mltiples instancias de Dublin. La Figura 15
muestra un ejemplo de como esto podra verse.
24
Tipos de Workflows
En el .NET Framework 4, los programadores de WF tpicamente eligen entre dos diferentes estilos de
workflow eligiendo diferentes actividades como la ms externa, estas Actividades son:
Sequence: Ejecuta actividades en secuencia una despus de la otra. Estas secuencias pueden
contener actividades If , actividades While ,y cualquier otra clase de control de flujo. Sin embargo, no
es posible regresar hacia atrs. La ejecucin siempre debe ir hacia adelante
Flowchart: Las Actividades ejecutan una despus de otra, como en la actividad Sequence, pero se
permite regresar el control a una actividad anterior. Este procedimiento ms flexible, es nuevo en la
version de .NET Framework 4, y es ms parecido a como un proceso real funciona y a la forma en que
muchos de nosotros pensamos.
25
Mientras que Sequence y Flowchart pueden actuar como actividades ms externas de un workflow,
tambin pueden ser utilizadas dentro de un workflow. Esto permite que estas actividades compuestas
sean anidadas en forma arbitraria.
En sus primeras dos versiones, WF tambin incluyo otra opcin de actividad ms externa para un
workflow llamada StateMachine. Como su nombre sugiere, esta actividad permite a un programador
explcitamente crear una mquina de estados, permitiendo que eventos externos disparen actividades
dentro de esta mquina de estados. WF en el .NET Framework 4 es un gran cambio, sin embargo, es
un cambio que requiere reescribir la mayora de actividades de versiones anteriores y construir un
nuevo diseador grfico. Debido al esfuerzo involucrado, los creadores de WFno estn distribuyendo
la actividad State Machine con la versin inicial de.NET Framework 4. Pero a pesar de esto, los
recursos de Microsofts no estn limitados, la nueva actividad Flowchart deber poder resolver
muchas de las situaciones que anteriormente requirieron de la actividad State Machine.
26
Sequence: Agrupa un conjunto de actividades que son ejecutadas secuencialmente. Aparte de actuar
como una actividad mas externa de un workflow, Sequence es tambien tila dentro de workflows. Por
ejemplo una actividad While puede contener solamente una actividad. Si esa actividad es la actividad
Sequence, un programador puede ejecutar un numero arbitrario de actividades dentro de un ciclo
Switch: proporciona una forma de multi-bifurcacin de la ejecucin
Throw: Dispara una excepcin (Exception).
TryCatch: permite crear bloques try/catch para manejar excepciones (exceptions.)
While: ejecuta una sola actividad de manera indefinida siempre que la condicin sea verdadera (true)
Esta no es la lista completa de actividades deWF. .NET Framework 4 incluye ms actividades.
Adems, Microsoft tiene previsto realizar nuevas actividades WF disponibles en el portal CodePlex, el
sitio de alojamiento de proyectos de cdigo abierto. Por ejemplo despus de la liberacin de NET
Framework. 4, agrega actividades que permiten a los workflows consultas de base de datos y
actualizaciones, ejecucin de comandos de PowerShell, y ms.
Como esta lista indica, el BAL en gran medida reflejo la funcionalidad de un lenguaje de programacin
tradicional y de propsito general. Esto no debe sorprender, ya que WF est destinado a ser una
tecnologa de uso general. Sin embargo , como en este panorama se ha descrito, el enfoque que se
necesita de Actividades ejecutadas por el runtime de WF,a veces puede hacer la vida mejor para los
programadores de aplicaciones.
27
Conclusion
Windows Workflow Foundation ofrece ventajas reales para muchas aplicaciones. Es sus primeras
versions WF choco con muchos vendedores de software. Estas inconvemniencias de la tecnologa
fueron tiles, pero no fueron realmente apropiadas para su uso principal en aplicaciones
empresariales, con la versin de NET Framework 4 los creadores de WF estn cambiando esto.
Haciendo que WF y WCF trabajen en conjunto, mejorando el desempeo de WF, proporcionado
diseador grafico y ofreciendo grandes beneficio de hospedar WF con Dublin, Microsoft esta
haciendo que el estilo de programacin de workflows ms atractivo para un amplio rango de
escenarios. Sus das como jugador especializado en el drama de desarrollo de aplicaciones de
Windows estn llegando a su fin. WF est en camino al centro del escenario.
28