Ejemplo de ConsoleTrackingService

Download sample

En este ejemplo se muestra cómo crear un servicio de seguimiento y escribir en la consola el contenido de los datos cuyo seguimiento se realiza.

Windows Workflow Foundation proporciona una infraestructura de seguimiento que permite a las aplicaciones realizar el seguimiento de los cambios de estado y los datos del flujo de trabajo. Además, ofrece la flexibilidad para crear los servicios de seguimiento más adecuados para sus necesidades comerciales y utilizarlos en el tiempo de ejecución del flujo de trabajo.

Para escribir un servicio de seguimiento, debe implementar un canal del seguimiento y un servicio de seguimiento. El canal del seguimiento recibe los registros de seguimiento que envía el tiempo de ejecución. El servicio de seguimiento proporciona al tiempo de ejecución los perfiles de seguimiento basados en parámetros y condiciones concretos. También se ocupa de proporcionar un canal del seguimiento que recibe los datos que envía el tiempo de ejecución.

Nota

El valor de hora para realizar el seguimiento de los datos 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 que contiene un flujo de trabajo y un servicio de seguimiento simple. SampleWorkflow es un flujo de trabajo que tiene un controlador del código, en el que se emite un objeto UserTrackPoint.

El servicio de seguimiento completo se implementa en ConsoleTrackingService.cs y tiene las siguientes implementaciones de TrackingChannelSample y ConsoleTrackingService:

  • TrackingChannelSample implementa el método Send como sigue:

    public override void Send(TrackingRecord record)
    {
        // Filter on record type.
        if (record is WorkflowTrackingRecord)
        {
            WriteWorkflowTrackingRecord((WorkflowTrackingRecord)record);
        }
        if (record is ActivityTrackingRecord)
        {
            WriteActivityTrackingRecord((ActivityTrackingRecord)record);
        }
        if (record is UserTrackingRecord)
        {
            WriteUserTrackingRecord((UserTrackingRecord)record);
        }
    }
    

Además, TrackingChannelSample implementa el método InstanceCompletedOrTerminated escribiendo un mensaje en la consola. El tiempo de ejecución del seguimiento llama al método InstanceCompletedOrTerminated para indicar que la instancia del flujo de trabajo ha terminado de ejecutarse, sin tener en cuenta el perfil de seguimiento asociado a esa instancia.

  • ConsoleTrackingService implementa el método siguiente:

    public override TrackingChannel GetTrackingChannel(TrackingParameters parameters)
    {
        //Return a tracking channel to receive runtime events.
        return new TrackingChannelSample(parameters);
    }
    

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

Temas avanzados

Los temas siguientes no se implementan en el ejemplo. Son indicadores de otros temas de flujo de trabajo avanzados que puede estudiar.

Comunicación entre el tiempo de ejecución y los servicios de seguimiento

Las llamadas en tiempo de ejecución a los servicios de seguimiento son sincrónicas. Se bloquea la ejecución del flujo de trabajo hasta que se abandonan los métodos del servicio de seguimiento.

Actualizaciones de perfil

Windows Workflow Foundation ofrece la flexibilidad de comunicar la actualización o eliminación de perfiles al tiempo de ejecución del seguimiento derivando de IProfileNotification e implementando los controladores de eventos como sigue:

public class ConsoleTrackingService : TrackingService, IProfileNotification

public event EventHandler<ProfileUpdatedEventArgs> ProfileUpdated;
public event EventHandler<ProfileRemovedEventArgs> ProfileRemoved;

ReloadProfiles

Si desea volver a cargar un perfil para una instancia de flujo de trabajo concreta, puede llamar al método ReloadTrackingProfiles en la instancia como sigue:

WorkflowInstance wi = wr.StartWorkflow(typeof(SampleWorkflow));
wi.ReloadTrackingProfiles();

Esto hace que el tiempo de ejecución llame al método TryReloadProfile en el TrackingService registrado para obtener el nuevo perfil para esa instancia.

Sobrecargas GetProfile

El tiempo de ejecución del flujo de trabajo llama al método siguiente para pedir un perfil para un workflowInstanceId concreto. Implemente este método si admite que se vuelvan a cargar perfiles específicos de la instancia.

GetProfile(Guid workflowInstanceId)

El tiempo de ejecución del flujo de trabajo llama al método siguiente para pedir un perfil específico de la versión. Implemente este método si admite que se vuelvan a cargar perfiles específicos de la versión.

GetProfile(Type workflowType, Version profileVersionId)

Consulte también

Referencia

ActivityTrackingRecord
WorkflowTrackingRecord
IProfileNotification

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 seguimiento de EventArgs
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.