Compartir a través de


Conservar una aplicación de flujo de trabajo

Este tema es aplicable a Windows Workflow Foundation 4.

En este ejemplo se muestra cómo ejecutar un objeto WorkflowApplication, cómo descargarlo cuando pasa a estado inactivo, y cómo recargarlo después para continuar su ejecución.

Detalles del ejemplo

WorkflowApplication es un host para una instancia de flujo de trabajo única que proporciona una interfaz simple y habilita varios de los escenarios de hospedaje más comunes. Uno de estos escenarios son los flujos de trabajo de ejecución prolongada facilitados por la persistencia. El control host de la persistencia se realiza llamando a una operación de persistencia en WorkflowApplicationo administrando un evento WorkflowApplication e indicando que WorkflowApplication debe conservarse.

El flujo de trabajo de ejemplo es una actividad WriteLine que pregunta al usuario su nombre, una actividad ReadLine para recibir el nombre como entrada a través de la reanudación de un Bookmark y otro objeto WriteLine para devolver un saludo al usuario. Cuando un flujo de trabajo está esperando por la entrada, esto proporciona un punto natural para la persistencia. Esto se conoce a menudo como un punto Idle. WorkflowApplication genera el evento Idle siempre que el programa de flujo de trabajo se pueda conservar, esté esperando una reanudación del marcador y no se realice ningún otro trabajo. En el flujo de trabajo de este ejemplo, ese punto viene inmediatamente después del comienzo de la ejecución de la actividad ReadLine.

WorkflowApplication se configura para realizar la persistencia con InstanceStore. Este ejemplo utiliza SqlWorkflowInstanceStore. El objeto InstanceStore debe asignarse a la propiedad InstanceStore antes de que se ejecute WorkflowApplication.

En el ejemplo se agrega un controlador al evento PersistableIdle. El controlador de este evento indica lo que WorkflowApplication debe hacer devolviendo un objeto PersistableIdleAction. Cuando se devuelve Unload, se descarga el objeto WorkflowApplication.

A continuación, el ejemplo acepta la entrada del usuario y carga el flujo de trabajo conservado en un nuevo WorkflowApplication. Lo consigue creando un nuevo WorkflowApplication, volviendo a crear InstanceStorey asociando los eventos descargados y completados a la instancia, y llamando a continuación a Load con el identificador de la instancia de flujo de trabajo de destino. Una vez adquirida la instancia, el marcador de la actividad ReadLine se reanuda. El flujo de trabajo realiza la ejecución desde la actividad ReadLine y se ejecuta hasta su finalización. Cuando el flujo de trabajo se completa y se descarga, se llama por última vez a InstanceStore para eliminar el flujo de trabajo.

Para utilizar este ejemplo

  1. Abra un símbolo del sistema de Visual Studio 2010.

    En este ejemplo se requiere SQL Server Express, que se instala de forma predeterminada con Visual Studio 2010.

  2. Navegue hasta el directorio de ejemplo (\WF\Basic\Persistence\InstancePersistence\CS) y ejecute CreateInstanceStore.cmd.

    Dd807516.Caution(es-es,VS.100).gifPrecaución:
    El script CreateInstanceStore.cmd intenta crear la base de datos en la instancia predeterminada de SQL Server 2008 Express. Si desea instalar la base de datos en una instancia diferente, modifique el script.

  3. Abra el archivo de solución Persistence.sln con Visual Studio 2010 y presione F6 para compilarlo.

    Dd807516.Caution(es-es,VS.100).gifPrecaución:
    Si instaló la base de datos en una instancia no predeterminada de SQL Server, actualice la cadena de conexión en el código antes de compilar la solución.

  4. Ejecute el ejemplo con privilegios de administrador navegando hasta el directorio bin del proyecto (\WF\Basic\Persistence\InstancePersistence\bin\Debug) en el Explorador de Windows, haciendo clic con el botón secundario en Workflow.exe y seleccionando Ejecutar como administrador.

Para quitar la base de datos del almacén de instancias

  1. Abra un símbolo del sistema de Visual Studio 2010.

  2. Navegue hasta el directorio de ejemplo y ejecute RemoveInstanceStore.cmd.

Dd807516.Important(es-es,VS.100).gif Nota:
Puede que los ejemplos ya estén instalados en su equipo. Compruebe el siguiente directorio (valor predeterminado) antes de continuar.

<InstallDrive>:\WF_WCF_Samples

Si no existe este directorio, vaya a la página de ejemplos de Windows Communication Foundation (WCF) y Windows Workflow Foundation (WF) Samples para .NET Framework 4 para descargar todos los ejemplos de WF y Windows Communication Foundation (WCF). Este ejemplo se encuentra en el siguiente directorio.

<InstallDrive>:\WF_WCF_Samples\WF\Basic\Persistence\InstancePersistence