Ejemplo de seguimiento de EventArgs

Download sample

En este ejemplo se muestra el uso del servicio de seguimiento de SQL proporcionado por Windows Workflow Foundation para realizar el seguimiento de la ejecución de un flujo de trabajo.

El motor en tiempo de ejecución de flujos de trabajo provoca ciertos eventos mientras está ejecutando un flujo de trabajo. El servicio de seguimiento puede detectar estos eventos y almacenar información al respecto en una base de datos de SQL Server en la que se pueden hacer consultas.

El tiempo de ejecución del seguimiento define los tipos TrackingWorkflowTerminatedEventArgs, TrackingWorkflowSuspendedEventArgs y TrackingWorkflowExceptionEventArgs que contienen, respectivamente, información sobre la finalización, la suspensión y las excepciones del flujo de trabajo. Se envían objetos WorkflowEventArgs con WorkflowTrackingRecord para sus eventos correspondientes. Por ejemplo, se envían objetos TrackingWorkflowTerminatedEventArgs con WorkflowTrackingRecord cuando el estado del flujo de trabajo llega al estado WorkflowTerminated.

SqlTrackingService recibe estos objetos EventArgs cuando llegan, los serializa y los guarda en la base de datos de seguimiento junto con sus eventos si el perfil del seguimiento los solicita. A continuación, el formato serializado se puede deserializar y lo pueden utilizar los usuarios del seguimiento. El perfil de seguimiento que se utiliza es el predeterminado, SqlTrackingService.

Nota

El valor de hora de un WorkflowTrackingRecord se expresa en hora universal coordinada (Hora media de Greenwich).

Información general del ejemplo

El ejemplo es una aplicación de consola de flujos de trabajo y consta de dos flujos de trabajo:

  • ExceptionWorkflow. Es un flujo de trabajo simple con un controlador de código, en el que se inicia una excepción. La excepción no es controlada y produce la finalización del flujo de trabajo.

  • SuspendedWorkflow. Es un flujo de trabajo simple con una actividad de suspensión. El flujo de trabajo debe llegar a un estado de suspensión.

La entrada principal para el ejemplo está en la clase Program, que tiene la lógica siguiente:

  1. Crea una connectionString a la base de datos SqlTrackingService.

  2. Agrega SqlTrackingService al tiempo de ejecución del flujo de trabajo de la siguiente manera:

    workflowRuntime.AddService(new SqlTrackingService(connectionString));
    
  3. Ejecuta los flujos de trabajo de la siguiente manera:

    WorkflowInstance exceptionWorkflowInstance = workflowRuntime.CreateWorkflow(typeof(ExceptionWorkflow));
    exceptionWorkflowInstance.Start();
    
  4. Crea controladores de eventos para esperar a que el flujo de trabajo finalice o se interrumpa (depende del tipo de flujo de trabajo).

  5. Realiza consultas en el SqlTrackingService para buscar WorkflowEvents concretos y recupera el objeto serializado binario de los objetos TrackingWorkflowTerminatedEventArgs, TrackingWorkflowSuspendedEventArgs y TrackingWorkflowExceptionEventArgs.

  6. Deserializa los datos y escribe su contenido en la consola.

Crear la base de datos de SqlTrackingService

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.

Para crear la base de datos de seguimiento de SQL

  1. Utilice Microsoft 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 Tracking mediante la instrucción de consulta de SQL:

    CREATE DATABASE Tracking

    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>\Tracking_Schema.sql.

  4. Ejecute la consulta haciendo clic en Ejecutar o presionando F5 para crear las tablas del servicio de seguimiento 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>\Tracking_Logic.sql.

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

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 EventArgsTrackingSample\bin\debug (o la carpeta EventArgsTrackingSample\bin para la versión de VB del ejemplo), que se encuentra bajo la carpeta principal del ejemplo.

Consulte también

Referencia

SqlTrackingService
SqlTrackingQuery
SqlTrackingWorkflowInstance
ActivityEvents
ActivityTrackingRecord
WorkflowEvents
WorkflowTrackingRecord

Otros recursos

Ejemplos de seguimiento
Ejemplo de seguimiento simple
Ejemplo de consulta mediante SQLTrackingService
Ejemplo de seguimiento mediante puntos de seguimiento del usuario
Ejemplo de ConsoleTrackingService
Ejemplo de consulta mediante SQLTrackingService
Ejemplo de RuleActionTrackingEvent
Ejemplo de servicio de seguimiento y de consulta
Usar el modelo de objetos de perfil de seguimiento (ejemplo)
Ejemplo de mantenimiento de datos de SQL
Windows Workflow Tracking Services

Footer image

Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.