Compartir a través de


Servicios de seguimiento de flujo de trabajo de Windows

Windows Workflow Foundation le permite realizar el seguimiento de información relacionada con el flujo de trabajo de una manera flexible, fiable y coherente. El marco de seguimiento de Windows Workflow Foundation está diseñado para permitir a los hosts observar las instancias de flujo de trabajo durante la ejecución capturando eventos que se provocan durante la ejecución del flujo de trabajo. El marco es un diseño conectable que permite a los hosts escribir su propio servicio de seguimiento o utilizar un servicio de seguimiento original o de terceros. Además, dado que el motor de tiempo de ejecución de Windows Workflow Foundation le permite agregar varios servicios de tiempo de ejecución a lo largo de su duración, se permiten varios servicios de seguimiento de tipos diferentes simultáneamente. Por ejemplo, Windows Workflow Foundation contiene un servicio SqlTrackingService original que escribe una cantidad configurable de información de seguimiento en una base de datos de SQL Server. Los ejemplos de Windows Workflow Foundation también contienen un ejemplo, ConsoleTrackingService Sample, que realiza escuchas de eventos y manda los resultados de esos eventos a la consola. Ambos servicios se pueden ejecutar de manera conjunta para habilitar tanto la visibilidad del usuario final en la ejecución del flujo de trabajo como la depuración de información durante el desarrollo.

Características de seguimiento en Windows Workflow Foundation

Windows Workflow Foundation contiene varias funciones integradas para habilitar el seguimiento en una aplicación habilitada por flujo de trabajo.

Característica Descripción

Asegúrese de que el seguimiento se lleve a cabo de una manera coherente.

Los usuarios y aplicaciones pueden realizar el seguimiento del estado del flujo de trabajo y el historial de flujos de trabajo activos y flujos de trabajo almacenados en disco. Un marco coherente para los servicios de seguimiento garantiza que los servicios de seguimiento personalizados sigan un modelo lógico y coherente.

Proporciona escalabilidad y confiabilidad.

El marco de seguimiento es lo suficientemente ligero como para ser implementado en un único equipo, pero al mismo tiempo se puede escalar para cumplir los requisitos de la mayoría de las empresas, como aquéllos que requieren un entorno de centro de datos en clúster y distribuido.

Permite seguir los datos del flujo de trabajo sin tener en cuenta el almacén de datos subyacente.

El marco del seguimiento es indiferente al almacén de datos que administra los eventos de seguimiento. Un esquema bien definido para realizar el seguimiento de eventos está disponible para los usuarios finales; sin embargo, el almacén de datos controla en última instancia el esquema para los datos conservados subyacentes.

Proporciona una ubicación para consultar los datos relacionados con el flujo de trabajo en los entornos host.

Windows Workflow Foundation se puede hospedar dentro de varios entornos; las aplicaciones necesitan una interfaz coherente a través de la cual se puedan realizar consultas acerca de información del flujo de trabajo.

Proporciona la capacidad de consultar en ciclos de vida de flujos de trabajo presentes y pasados, y determina posibles rutas de ejecución futuras de instancias de flujo de trabajo.

El marco de seguimiento proporciona una manera de emitir una definición del flujo de trabajo y metadatos que están asociados a un flujo de trabajo para así habilitar consultas del tipo orientación. También proporciona una manera de emitir cambios del estado de los datos para que se puedan realizar seguimientos de los estados definidos por el usuario.

Proporciona compatibilidad para cambios programáticos en los perfiles de seguimiento.

Puede crear perfiles de seguimiento mediante el modelo de objeto de perfil de seguimiento. Esto le permite cargar, según sea necesario, perfiles personalizados durante la ejecución de sus flujos de trabajo activos.

Perfiles de seguimiento

Los servicios de seguimiento determinan la cantidad de datos que reciben mediante un perfil de seguimiento que filtra esos datos. Un servicio de seguimiento puede recibir eventos de flujo de trabajo, estado de ejecución de actividad y elementos de datos de seguimiento del usuario personalizados. El servicio de seguimiento es responsable de los datos de seguimiento que recibe del motor de tiempo de ejecución cuando se ejecuta una instancia de flujo de trabajo. Puede almacenar los datos en un archivo o en una base de datos, crear un almacén de consulta en memoria, escribir los datos en el registro de eventos del sistema o mandar el resultado de los datos de seguimiento a la consola.

Puede crear perfiles de seguimiento declarativamente mediante un esquema XML de perfil de seguimiento o mediante programación con el modelo de objetos de perfil de seguimiento. Además, los perfiles de seguimiento basados en XML se pueden deserializar en una instancia TrackingProfile mediante las API TrackingProfileSerializer.

Para obtener más información sobre los perfiles de seguimiento, consulte Creación y uso de perfiles de seguimiento.

Seguimiento de tipos de evento

Al utilizar el seguimiento en Windows Workflow Foundation, puede realizar el seguimiento de un evento único o de un grupo de eventos que se provocan durante la ejecución del flujo de trabajo. Los eventos de los que se pueden realizar el seguimiento en busca de actividades se definen en la enumeración ActivityExecutionStatus:

  • Inicializado

  • En ejecución

  • Cancelando

  • Cerrado

  • Compensando

  • Provocando error

Además de realizar seguimiento de eventos para las actividades, la infraestructura de seguimiento también le permite realizar el seguimiento de eventos que se producen en el nivel de instancia de flujo de trabajo. Los eventos de nivel de instancia de los cuales se puede realizar seguimiento están definidos en la enumeración TrackingWorkflowEvent:

  • Creado

  • Completado

  • Inactivo

  • Suspendido

  • Reanudado

  • Conservado

  • Descargado

  • Cargado

  • Excepción

  • Terminado

  • Anulado

  • Modificado

  • Comenzado

Para obtener información acerca de los eventos individuales de seguimiento, consulte Creación y uso de perfiles de seguimiento.

Seguimiento explítico de nivel de código

Los programadores que generan flujos de trabajo y tareas pueden desear instrumentar su código con eventos de seguimiento explícitos. Esto se debería hacer solo si el perfil de seguimiento no se puede utilizar para instrumentar el tiempo de ejecución para el evento de seguimiento deseado.

El creador del flujo de trabajo puede utilizar uno de los métodos TrackData sobrecargados en ActivityExecutionContext para realizar el seguimiento de cualquier tipo de información. No hay ningún límite en el número de puntos de seguimiento de usuario, así como tampoco en el tipo de datos que se pueden enviar desde el método de pista. En la implementación SqlTrackingService, si un objeto que se pasa al segundo parámetro del método TrackData no es binario serializable, los datos que se guardan son el resultado de llamar al método ToString de ese objeto.

Por ejemplo, la clase siguiente es un objeto personalizado que se puede utilizar para realizar el seguimiento de mensajes de depuración durante la ejecución de la actividad. La clase contiene una propiedad Message y una propiedad MessageType que informan de si el mensaje del que se hace un seguimiento es informativo, una advertencia, un error, o para depurar, y por consiguiente no se muestra al usuario final. Además, un método de ayudante estático se utiliza para devolver un objeto UserEventData recientemente construido que se utiliza durante la llamada al método TrackData.

[C#]

using System;
using System.Collections.Generic;
using System.Text;

namespace Microsoft.Samples.Workflow.TrackData
{
    [Serializable]
    public class UserEventData
    {
        private UserEventType type = 0;
        private string message = "";

        public enum UserEventType
        {
            Info = 0,
            Warning = 1,
            Error = 2,
            Debug = 4
        };

        public UserEventType MessageType
        {
            get { return type; }
            set { type = value; }
        }

        public string Message
        {
            get { return message; }
            set { message = value; }
        }

        public static UserEventData NewMessage(UserEventType type, string message)
        {
            UserEventData ret = new UserEventData();
            ret.MessageType = type;
            ret.Message = message;
            return ret;
        }
    }
}

La clase UserEventData que se define en el ejemplo se puede utilizar como un objeto de seguimiento personalizado al crear una actividad personalizada. Para realizar el seguimiento de un objeto UserEventData, llame al método TrackData, pasando un nuevo objeto UserEventData como el objeto a seguir. El código siguiente muestra cómo hacer esto en una actividad personalizada invalidando el método Execute:

[C#]

protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
{
    this.TrackData(UserEventData.NewMessage(UserEventData.UserEventType.Debug, "Activity executing"));
}

Para obtener más información acerca de seguimiento de datos personalizados, consulte Tracking Using User Track Points Sample.

Seguimiento de flujos de trabajo de solo marcado

Con flujos de trabajo de solo marcado y la funcionalidad de seguimiento de Windows Workflow Foundation, puede utilizar un perfil de seguimiento genérico o utilizar ReloadTrackingProfiles en cada instancia de flujo de trabajo antes de iniciar una instancia, si desea realizar el seguimiento de los eventos/elementos concretos de esta instancia. Si decide utilizar ReloadTrackingProfiles, debe crear una instancia de flujo de trabajo para XML BLOB, obtener el GUID de la instancia, generar un perfil de seguimiento concreto de esa instancia y, a continuación, pedir a la instancia que recargue sus perfiles. El servicio de seguimiento debería devolver este perfil al motor de tiempo de ejecución del flujo de trabajo cuando se llama a GetProfile con el id. de la instancia. Aquí es cuando tiene lugar la correlación entre la instancia y el perfil.

Reglas de seguimiento

Cuando se ejecuta RuleSet, los eventos de seguimiento se envían a los servicios de seguimiento configurados en los hosts que se han registrado para estos eventos agregando UserTrackPoint a su perfil del seguimiento. Se envía RuleActionTrackingEvent, que proporciona el nombre de la regla que se evaluó, así como el resultado de la evaluación de condición (verdadero/falso). Para obtener más información, consulte RuleActionTrackingEvent Sample.

Se puede realizar el seguimiento de los resultados de la evaluación de las condiciones de regla en actividades implícitamente mediante el seguimiento de la ejecución de actividad.

Servicios de seguimiento personalizados

Windows Workflow Foundation contiene un servicio SqlTrackingService que puede utilizar para realizar el seguimiento de datos almacenados en una base de datos de SQL Server. Sin embargo, debido al modelo de extensibilidad usado por Windows Workflow Foundation, puede crear servicios de seguimiento personalizados que utilizan medios de almacenamiento diferentes, como un archivo local, ya que al motor de tiempo de ejecución le es indiferente el destino final de los datos o el formato en el que se entregan. Para obtener más información acerca de cómo crear un servicio de seguimiento personalizado, consulte Creación de los servicios de seguimiento personalizados.

En esta sección

Creación y uso de perfiles de seguimiento

Utilizar SqlTrackingService

Consulta de datos SqlTrackingService con SqlTrackingQuery

Mantenimiento de datos con SqlTrackingService

Consulte también

Referencia

System.Workflow.Runtime.Tracking
TrackData
TrackingWorkflowEvent
ActivityExecutionStatus

Conceptos

Creación de los servicios de seguimiento personalizados

Otros recursos

Servicios de Windows Workflow Foundation
Ejercicio 4: Uso de los servicios de tiempo de ejecución
Tracking Samples
Simple Tracking Example
Tracking Using User Track Points Sample

Footer image

Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.