You are on page 1of 10

Informacion

General
Conceptual de
Windows
Workflow
Este documento se proporciona "tal cual". La informacin y los puntos de vista expresados
en este documento, incluyendo las referencias a sitios web de Internet y direcciones URL,
est sujeta a cambios sin aviso. Este documento no implica ningn derecho legal respecto a
ninguna propiedad intelectual de ningn nombre de producto o producto de Microsoft.
Puede copiar y utilizar este documento con fines internos y de referencia. Se permite que
modifique este documento para sus fines internos y de referencia. 2013 Microsoft.
Reservados todos los derechos. Trminos de uso
(http://msdn.microsoft.com/cc300389.aspx) | Marcas comerciales
(http://www.microsoft.com/library/toolbar/3.0/trademarks/en-us.mspx)

Informacin general
conceptual de Windows
Workflow
.NET Framework 4.5

Esta seccin incluye una serie de temas que tratan los conceptos ms importantes de
Windows Workflow Foundation (WF).

En esta seccin
Informacin general de Windows Workflow
Describe la base que permite a los usuarios crear flujos de trabajo humanos o de
sistema en las aplicaciones escritas para los sistemas operativos Windows Vista,
Windows XP, Windows Server 2003 y Windows Server 2008.
Conceptos fundamentales de Windows Workflow
Describe conceptos fundamentales usados en desarrollo Windows Workflow
Foundation que puede ser nuevo para algunos desarrolladores de software.
Arquitectura de Windows Workflow
Describe componentes usados en el desarrollo de Windows Workflow Foundation.

2013 Microsoft. Reservados todos los derechos.

*/

Informacin general de
Windows Workflow
.NET Framework 4.5

Un flujo de trabajo es un conjunto de unidades elementales llamadas actividades que estn


almacenadas como un modelo que describe un proceso real. Los flujos de trabajo
proporcionan una manera de describir el orden de ejecucin y las relaciones de dependencia
entre las partes de trabajo de ejecucin corta o prolongada. Este trabajo pasa a travs del
modelo desde el principio hasta el final y las actividades pueden ser ejecutadas por
personas o por funciones de sistema.

Motor de tiempo de ejecucin del flujo de trabajo


Las instancias de flujo de trabajo en ejecucin se crean y se mantienen por medio de un
motor de tiempo de ejecucin en curso con el que el proceso de host interacta a travs de
alguna de las clases siguientes:
Una clase WorkflowInvoker, que invoca el flujo de trabajo como si se tratara de un
mtodo.
Una clase WorkflowApplication para el control explcito de la ejecucin de una
nica instancia de flujo de trabajo.
Una clase WorkflowServiceHost para las interacciones basadas en mensajes en
escenarios de varias instancias.
Cada una de estas clases ajusta el tiempo de ejecucin de la actividad principal,
representado como una clase ActivityInstance responsable de la ejecucin de la actividad.
Puede haber varios objetos ActivityInstance ejecutndose simultneamente dentro de un
dominio de aplicacin.
Los tres objetos de interaccin de host anteriores se crean a partir de un rbol de actividades
al que se hace referencia como programa de flujo de trabajo. Con estos tipos o con un host
personalizado que ajuste la clase ActivityInstance, los flujos de trabajo se pueden ejecutar
dentro de cualquier proceso de Windows, incluidos las aplicaciones de consola, las
aplicaciones basadas en formularios, los Servicios de Windows, los sitios web de ASP.NET
y los servicios de Windows Communication Foundation (WCF).

Componentes de flujo de trabajo del proceso de host

Interaccin entre los componentes de flujo de trabajo


El siguiente diagrama muestra cmo los componentes de flujo de trabajo interactan unos
con otros.

En el diagrama anterior, el mtodo Invoke() de la clase WorkflowInvoker se usa para


invocar varias instancias de flujo de trabajo. WorkflowInvoker se usa para los flujos de
trabajo ligeros que no necesitan la administracin desde el host; los flujos de trabajo que
necesitan la administracin desde el host (como la reanudacin de Bookmark) se deben
ejecutar mediante Run() en su lugar. Antes de invocar una nueva instancia de flujo de
trabajo no es necesario esperar a que se complete la instancia de flujo de trabajo en
ejecucin. El motor de tiempo de ejecucin permite ejecutar varias instancias de flujo de
trabajo simultneamente. Los flujos de trabajo invocados son los siguientes:
Una actividad Sequence que contiene una actividad secundaria WriteLine. Una
Variable de la actividad primaria se enlaza a un InArgument de la actividad
secundaria. Para obtener ms informacin sobre las variables, los argumentos y el
enlace, vea Variables y argumentos.
Una actividad personalizada llamada ReadLine. Un argumento OutArgument de la
actividad ReadLine se devuelve al mtodo Invoke() de llamada.
Una actividad personalizada que se deriva de la clase abstracta CodeActivity.
CodeActivity puede tener acceso a caractersticas del runtime (como el seguimiento
y las propiedades) usando el CodeActivityContext que est disponible como
parmetro del mtodo Execute(CodeActivityContext). Para obtener ms
informacin sobre estas caractersticas en tiempo de ejecucin, vea Seguimiento y
traza del flujo de trabajo y Propiedades de ejecucin del flujo de trabajo.

Vea tambin
Otros recursos
BizTalk Server 2006 o WF? Elegir la herramienta de flujo de trabajo adecuada para su
proyecto


2013 Microsoft. Reservados todos los derechos.

*/

Conceptos fundamentales de
Windows Workflow
.NET Framework 4.5

El desarrollo del flujo de trabajo en el .NET Framework 4.5 RC usa conceptos que pueden
ser nuevos para algunos desarrolladores. En este tema se describen algunos de ellos y la
forma en que se implementan.

Flujos de trabajo y actividades


Un flujo de trabajo es una coleccin estructurada de acciones que modela un proceso y cada
accin en el flujo de trabajo se modela como una actividad. Un host interacta con un flujo
de trabajo usando WorkflowInvoker para invocar un flujo de trabajo como si fuera un
mtodo, WorkflowApplication para el control explcito sobre la ejecucin de una nica
instancia de flujo de trabajo y WorkflowServiceHost para las interacciones basadas en
mensajes en escenarios de varias instancias. Dado que los pasos del flujo de trabajo se
definen como una jerarqua de actividades, se puede decir que la actividad de nivel superior
en la jerarqua define el propio flujo de trabajo. Este modelo de jerarqua ocupa el lugar de
las clases StateMachineWorkflow y SequentialWorkflow explcitas de versiones
anteriores. Las actividades se desarrollan como colecciones de otras actividades (con la
clase Activity como base, normalmente definida con XAML) o se crean de manera
personalizada usando la clase CodeActivity (que puede usar el runtime para tener acceso a
los datos) o usando la clase NativeActivity, que expone todo el runtime del flujo de trabajo
al autor de la actividad. Las actividades desarrolladas con las clases NativeActivity y
CodeActivity se crean con lenguajes conformes a CLR como C#.

Modelo de datos de actividad


Las actividades almacenan y comparten datos mediante los tipos mostrados en la siguiente
tabla.
Variable

Almacena los datos en una actividad.

Argumento

Mueve los datos dentro y fuera de una actividad.

Expresin

Una actividad con un valor devuelto elevado usado en enlaces de


argumento.

Tiempo de ejecucin de flujo de trabajo


El runtime de flujo de trabajo es el entorno en el que los flujos de trabajo se ejecutan.
WorkflowInvoker es la manera ms sencilla de ejecutar un flujo de trabajo. El host usa
WorkflowInvoker para lo siguiente:
Para invocar un flujo de trabajo de forma sincrnica.
Para proporcionar datos o recuperar las salidas de un flujo de trabajo.
Para agregar extensiones que van a usar las actividades.
ActivityInstance es el proxy seguro para subprocesos que los hosts pueden usar para
interactuar con el tiempo de ejecucin. El host usa ActivityInstance para lo siguiente:
Para adquirir una instancia crendola o cargndola desde un almacn de instancias.
Para que se le notifique sobre los eventos de ciclo de vida de la instancia.
Para controlar la ejecucin del flujo de trabajo.
Para proporcionar datos o recuperar las salidas de un flujo de trabajo.
Para sealar una continuacin del flujo de trabajo y pasar valores en el flujo de
trabajo.
Para conservar los datos del flujo de trabajo.
Para agregar extensiones que van a usar las actividades.
Las actividades tienen acceso al entorno de tiempo de ejecucin de flujo de trabajo
mediante la clase derivada de ActivityContext adecuada, como NativeActivityContext o
CodeActivityContext. Usan esto para resolver argumentos y variables, para programar las
actividades secundarias, y para muchos otros objetivos.

Servicios
Los flujos de trabajo proporcionan una manera natural de implementar y tener acceso a
servicios flojamente acoplados usando actividades de mensajera. Las actividades de
mensajera se compilan en WCF y son el mecanismo principal usado para obtener datos en
y fuera de un flujo de trabajo. Puede componer actividades de mensajera para modelar
cualquier tipo de modelo de intercambio de mensajes que desee. Para obtener ms
informacin, vea vea Actividades de mensajera. Los servicios de flujo de trabajo se
hospedan mediante la clase WorkflowServiceHost. Para obtener ms informacin,
veaHospedar informacin general de servicios de flujo de trabajo. Para obtener ms
informacin sobre servicios de flujo de trabajo vea Servicios de flujo de trabajo

Persistencia, descarga y flujos de trabajo de ejecucin


prolongada

El flujo de trabajo de Windows simplifica la creacin de programas reactivos de ejecucin


prolongada al proporcionar:
Actividades que tienen acceso a datos externos.
La capacidad de crear objetos Bookmark que un agente de escucha del host puede
reanudar.
La capacidad de conservar los datos de un flujo de trabajo y descargar el flujo de
trabajo, y despus recargar y reactivar el flujo de trabajo como respuesta a la
reasuncin de los objetos Bookmark en un flujo de trabajo determinado.
Un flujo de trabajo ejecuta continuamente las actividades hasta que no haya ms que
ejecutar o hasta que todas las actividades actualmente en ejecucin estn esperando datos.
En este ltimo estado, el flujo de trabajo est inactivo. Es normal que un host descargue los
flujos de trabajo inactivos y los recargue para continuar con la ejecucin cuando llega un
mensaje. WorkflowServiceHost proporciona la funcionalidad para esta caracterstica y
proporciona una directiva de descarga extensible. En el caso de los bloques de ejecucin
que usen datos de estado voltil o datos que no se puedan conservar, una actividad puede
indicar a un host que no se debe conservar mediante NoPersistHandle. Un flujo de trabajo
tambin puede conservar explcitamente sus datos en medios de almacenamiento duraderos
mediante la actividad Persist.

2013 Microsoft. Reservados todos los derechos.

*/

Arquitectura de Windows
Workflow
.NET Framework 4.5

Windows Workflow Foundation (WF) genera el nivel de abstraccin para desarrollar


aplicaciones interactivas de ejecucin prolongada. Las unidades de trabajo se encapsulan
como actividades. Las actividades se ejecutan en un entorno que proporcione los medios
para el control de flujo, el control de excepciones, la propagacin de errores, la persistencia
de los datos de estado, la carga y descarga de flujos de trabajo en progreso de la memoria,
el seguimiento y el flujo de la transaccin.

Arquitectura de la actividad
Las actividades se desarrollan como tipos CLR que derivan de Activity, CodeActivity,
AsyncCodeActivity o NativeActivity, o sus variantes que devuelven un valor,
Activity<TResult>, CodeActivity<TResult>, AsyncCodeActivity<TResult> o
NativeActivity<TResult>. Desarrollar actividades que derivan de Activity permite al

usuario ensamblar actividades existentes previamente para crear rpidamente las unidades
de trabajo que se ejecutan en el entorno del flujo de trabajo. CodeActivity , por otro lado,
permite crear la lgica de ejecucin en cdigo administrado usando principalmente
CodeActivityContext para el acceso a los argumentos de actividad. AsyncCodeActivity es
similar a CodeActivity salvo que puede usarse para implementar tareas asincrnicas.
Desarrollar actividades que derivan de NativeActivity permite a los usuarios tener acceso al
runtime a travs de NativeActivityContext para funciones como la programacin de
elementos secundarios, la creacin de marcadores, invocar el trabajo asincrnico, el registro
de transacciones y mucho ms.
La creacin de actividades que derivan de Activity es declarativo. Estas actividades se
pueden crear en XAML. En el siguiente ejemplo, una actividad llamada Prompt se crea
usando otras actividades para el cuerpo de ejecucin.
<Activityx:Class='Prompt'
xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'
xmlns:z='http://schemas.microsoft.com/netfx/2008/xaml/schema'
xmlns:my='clrnamespace:XAMLActivityDefinition;assembly=XAMLActivityDefinition'
xmlns:s="clrnamespace:System;assembly=mscorlib"
xmlns="http://schemas.microsoft.com/2009/workflow">
<z:SchemaType.Members>
<z:SchemaType.SchemaPropertyName='Text'Type='InArgument(s:String)'/>
<z:SchemaType.SchemaPropertyName='Response'Type='OutArgument(s:String)'/>
</z:SchemaType.Members>
<Sequence>
<my:WriteLineText='[Text]'/>
<my:ReadLineBookmarkName='r1'Result='[Response]'/>
</Sequence>
</Activity>

Contexto de actividad
ActivityContext es la interfaz del autor de la actividad en el tiempo de ejecucin del flujo
de trabajo y proporciona acceso a la amplia variedad de caractersticas del tiempo de
ejecucin. En el siguiente ejemplo, se define una actividad que usa el contexto de ejecucin
para crear un marcador (el mecanismo que permite a una actividad registrar un punto de
continuacin en su ejecucin y que puede reanudarse mediante el paso de datos a la
actividad por parte de un host).
publicsealedclassReadLine:NativeActivity<string>
{
[RequiredArgument]
publicInArgument<string>BookmarkName{get;set;}

protectedoverridevoidExecute(NativeActivityContextcontext)
{
//CreateaBookmarkandwaitforittoberesumed.
context.CreateBookmark(BookmarkName.Get(context),
newBookmarkCallback(OnResumeBookmark));
}

//NativeActivityderivedactivitiesthatdoasynchronousoperationsby
calling
//oneoftheCreateBookmarkoverloadsdefinedon
System.Activities.NativeActivityContext
//mustoverridetheCanInduceIdlepropertyandreturntrue.
protectedoverrideboolCanInduceIdle
{
get{returntrue;}
}

publicvoidOnResumeBookmark(NativeActivityContextcontext,Bookmark
bookmark,objectobj)
{
//WhentheBookmarkisresumed,assignitsvalueto
//theResultargument.
Result.Set(context,(string)obj);
}

Ciclo de vida de la actividad


La instancia de una actividad empieza en el estado Executing. A menos que se encuentren
excepciones, permanece en este estado hasta que todas las actividades secundarias se hayan
terminado de ejecutar y se hayan completado otros trabajos pendientes (objetos Bookmark,
por ejemplo). Una vez llegado este punto, cambia al estado Closed. El elemento primario
de una instancia de actividad puede solicitar la cancelacin de un elemento secundario; si el
elemento secundario puede cancelarse, se completa en el estado Canceled. Si se produce
una excepcin durante la ejecucin, el runtime coloca la actividad en el estado Faulted y
propaga la excepcin hasta la cadena primaria de actividades. A continuacin se describen
tres estados de realizacin de una actividad:
Cerrado: la actividad ha completado su trabajo y ha salido.
Cancelado: la actividad ha abandonado su trabajo sin contratiempos y ha salido. En
este estado, el trabajo no se revierte de manera explcita.
Con errores: la actividad ha encontrado un error y ha salido sin completar su
trabajo.
Las actividades permanecen en el estado Executing cuando se conservan o descargan.

2013 Microsoft. Reservados todos los derechos.

*/

You might also like