Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Este tema es aplicable a Windows Workflow Foundation 4.
El desarrollo del flujo de trabajo en .NET Framework versión 4 usa conceptos que pueden ser nuevos para algunos desarrolladores de software. 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 colección estructurada de acciones que modela un proceso y cada acción en el flujo de trabajo se modela como una actividad. Un host interactúa con un flujo de trabajo usando WorkflowInvoker para invocar un flujo de trabajo como si fuera un método, WorkflowInstance para el control explícito sobre la ejecución de una instancia de flujo de trabajo, WorkflowServiceHost para las interacciones basadas en mensajes en escenarios de varias instancias. Dado que los pasos del flujo de trabajo se definen como una jerarquía de actividades, se puede decir que la actividad de nivel superior en la jerarquía define el propio flujo de trabajo. Este modelo de jerarquía ocupa el lugar de las clases StateMachineWorkflow y SequentialWorkflow explícitas 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 CodeActivity (que puede usar el tiempo de ejecución para tener acceso a los datos) o usando la clase NativeActivity, que expone todo el tiempo de ejecución del flujo de trabajo a disposición dell autor de la actividad. Las actividades desarrolladas con las clases NativeActivity y CodeActivity se crean con lenguajes conformes a CLR como, por ejemplo, C#.
Modelo de datos de actividad
Las actividades se almacenan y comparten datos con los tipos mostrados en la siguiente tabla.
Variable |
Almacena los datos en una actividad. |
Argumento |
Mueve los datos dentro y fuera de una de una actividad. |
Expresión |
Una actividad con un valor devuelto elevado usado en enlaces de argumento. |
Tiempo de ejecución de flujo de trabajo
El tiempo de ejecución del flujo de trabajo es el entorno en el que los flujos de trabajo se ejecutan. WorkflowInvoker es la manera más simple de ejecutar un flujo de trabajo. El host usa WorkflowInvoker para lo siguiente:
Para invocar un flujo de trabajo de forma sincrónica.
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 ejecución. El host usa ActivityInstance para lo siguiente:
Para adquirir una instancia creándola o cargándola desde un almacén de instancias.
Para que se le notifique sobre los eventos de ciclo de vida de la instancia.
Para controlar la ejecución del flujo de trabajo.
Para proporcionar datos o recuperar las salidas de un flujo de trabajo.
Para señalar una continuación 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.
Los elementos del flujo de trabajo obtienen acceso al entorno en tiempo de ejecución del flujo de trabajo usando la clase ActivityExecutionContext. 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 los servicios de Windows Communication Foundation (WCF) usando actividades de mensajería. Los servicios del flujo de trabajo se hospedan en WorkflowServiceHost.
Persistencia, descarga y flujos de trabajo de ejecución prolongada
El flujo de trabajo de Windows simplifica la creación de programas reactivos de ejecución 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, a continuación, recargue y reactive el flujo de trabajo en respuesta a la reasunción de los objetos Bookmark en un flujo de trabajo determinado.
Un flujo de trabajo ejecuta continuamente las actividades hasta que no haya más que ejecutar o hasta que todas las actividades actualmente en ejecución estén esperando datos. En este último estado, el flujo de trabajo está inactivo. Es común para un host descargar flujos de trabajo que se hayan quedado inactivos y recargarlos cuando un mensaje llegue para continuar la ejecución. WorkflowServiceHost proporciona la funcionalidad para esta característica y proporciona una directiva de descarga extensible. En el caso de los bloques de ejecución que usen el estado volátil o datos que no se puedan conservar, una actividad puede indicar a un host que no se debería conservar mediante ActivityExecutionContext. Un flujo de trabajo también puede conservar explícitamente sus datos en medios de almacenamiento duraderos mediante la actividad Persist.