Ejemplo de uso de servicios de persistencia

Download sample

En este ejemplo se muestra cómo utilizar el servicio SqlWorkflowPersistenceService para cargar y descargar flujos de trabajo.

Muchos procesos de negocio toman mucho tiempo para finalizarse (pueden durar varios meses o incluso años). Guardar el flujo de trabajo en memoria no es sólo poco práctico (debido a las limitaciones de memoria), si no que también se impide que aumente de tamaño, porque una instancia se debe procesar en un único servidor. Muchos de estos flujos de trabajo de ejecución prolongada no ejecutan activamente lógica de flujos o de procesos y están, de hecho, inactivos, esperando información por parte de los usuarios u otros sistemas. Si se descarga una instancia inactiva, la aplicación host puede ganar memoria y posibilitar la escalabilidad en los servidores de procesamiento. En este ejemplo se muestra cómo descargar una instancia inactiva con un flujo de trabajo simple que espera cinco segundos antes de finalizarse.

Nota

SqlWorkflowPersistenceService se puede establecer también de forma que descargue automáticamente los flujos de trabajo inactivos, estableciendo el parámetro UnloadOnIdle en True en el constructor.

Configuración de bases de datos

Los servicios SQL instalados por Windows Workflow Foundation utilizan Microsoft SQL Server para almacenar información. Puede utilizar Microsoft SQL Server 2005 Express, SQL Server 2000 o versiones posteriores, o SQL Server 2000 Desktop Engine (MSDE) para estas tareas.

El programa de instalación de Windows Workflow Foundation no instala las bases de datos necesarias para estos servicios; sin embargo, el programa de instalación instala los scripts de SQL para crear y configurar las bases de datos para estos servicios.

Nota

El servicio de Microsoft Coordinador de transacciones distribuidas (MSDTC) debe estar habilitado para que funcione SqlWorkflowPersistenceService.

En los pasos siguientes se describe cómo crear y configurar las bases de datos utilizadas por los servicios de este ejemplo.

Para crear y configurar la base de datos de SQL

  1. Utilice SQL Server 2005 Express, SQL Server 2000 o versiones posteriores, o SQL Server 2000 Desktop Engine (MSDE), para crear una base de datos nueva denominada SqlPersistenceService mediante la instrucción de consulta de SQL:

    CREATE DATABASE SqlPersistenceService

    Nota   Cuando se utiliza tanto SqlTrackingService como SqlWorkflowPersistenceService en una aplicación de flujo de trabajo, es recomendable utilizar una única base de datos tanto para persistencia como para seguimiento.

  2. En el área de trabajo del Analizador de consultas SQL, seleccione la base de datos que creó en el paso 1, en la lista de bases de datos disponibles.

  3. En el menú Archivo, haga clic en Abrir y abra el script de SQL %WINDIR%\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL\<lenguaje>\SqlPersistenceService_Schema.

  4. Ejecute la consulta haciendo clic en Ejecutar o presionando F5 para crear las tablas del servicio de persistencia de SQL.

  5. En el menú Archivo, haga clic en Abrir y abra el script de SQL %WINDIR%\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL\<lenguaje>\SqlPersistenceService_Logic.sql.

  6. Ejecute la consulta haciendo clic en Ejecutar o presionando F5 para crear los procedimientos almacenados del servicio de persistencia de SQL.

Ejemplo de tutorial

El flujo de trabajo es un flujo de trabajo secuencial que contiene tres actividades en secuencia: code1, delay1 y code2. Las actividades CodeActivity escriben la fecha y hora actuales (en formato UTC) en la consola y la actividad DelayActivity espera cinco segundo antes de continuar. La aplicación host administra la carga y descarga global de la instancia de flujo de trabajo en la memoria y fuera de ellas, proporcionando controladores para varios eventos WorkflowRuntime.

La ejecución es la siguiente.

  1. El host crea e inicia el flujo de trabajo.

  2. Code1 muestra la fecha y la hora actuales en la consola.

  3. El flujo de trabajo entra en la actividad delay1.

  4. La instancia del flujo de trabajo esta ahora inactiva, esperando a que caduque el temporizador. Cuando el flujo de trabajo queda inactivo, hace que WorkflowRuntime provoque el evento WorkflowIdled.

  5. El método Unload llama al servicio SqlWorkflowPersistenceService para conservar la instancia del flujo de trabajo. A continuación, el tiempo de ejecución del flujo de trabajo elimina la instancia de flujo de trabajo.

  6. Después de cinco segundos como mínimo, caduca el temporizador.

  7. El servicio SqlWorkflowPersistenceService carga el flujo de trabajo desde la base de datos y el tiempo de ejecución continúa procesándolo.

  8. A continuación, Code2 muestra la fecha y la hora en la consola. La fecha y la hora deben ser posteriores en cinco segundos a la hora mostrada por code1.

  9. Cuando se completa la instancia del flujo de trabajo, el tiempo de ejecución del flujo de trabajo llama al servicio SqlWorkflowPersistenceService para conservar el estado final del flujo de trabajo.

Servicios personalizados

En este ejemplo se utilizan los servicios predefinidos para la persistencia de estado; con todo, puede crear servicios de persistencia de estado personalizados. Podría tener que hacerlo para utilizar sistemas de bases de datos existentes o proporcionar funcionalidad adicional. Para obtener más información sobre cómo desarrollar servicios personalizados, vea los ejemplos enumerados en este tema y la documentación de Windows Workflow Foundation.

Para generar el ejemplo

  1. Para descargar el ejemplo, haga clic en Descargar ejemplo.

    Así se extrae el proyecto de ejemplo en su disco duro local.

  2. Haga clic en Inicio, señale Programas, señale Microsoft Windows SDK y, a continuación, haga clic en CMD Shell.

  3. Vaya al directorio de origen del ejemplo.

  4. En el símbolo del sistema, escriba MSBUILD <nombre del archivo de solución>.

Para ejecutar el ejemplo

  • En la ventana del símbolo del sistema del SDK, ejecute el archivo .exe de la carpeta PersistenceServices\bin\debug (o la carpeta PersistenceServices\bin para la versión de VB del ejemplo), que se encuentra bajo la carpeta principal del ejemplo.

Consulte también

Referencia

SqlWorkflowPersistenceService
WorkflowPersistenceService

Otros recursos

Ejemplo de servicio de persistencia personalizado
Ejemplo de evento provocado para cargar el flujo de trabajo
Windows Workflow Persistence Services
Exercise 4 : Using Runtime Services
Using the SqlWorkflowPersistenceService Service
Ejemplos de host
Task 3 : Using the Windows Workflow Persistence Service

Footer image

Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.