Exportar (0) Imprimir
Expandir todo
Este tema aún no ha recibido ninguna valoración - Valorar este tema

Ejemplo de seguimiento mediante puntos de seguimiento del usuario

.NET Framework 3.5

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 flujo de trabajo provoca los tipos de eventos siguientes:

  • Eventos de flujo de trabajo del nivel de instancia. Estos eventos se provocan cuando una instancia de flujo de trabajo entra en un estado determinado. Por ejemplo, se provoca un evento cuando la instancia de flujo de trabajo se inicializa o cuando está en ejecución.

  • Eventos del nivel de actividad. Un flujo de trabajo consta de actividades y cada actividad sigue un ciclo de vida. Durante su ciclo de vida, la actividad atraviesa varios estados. Se provoca un evento cuando una actividad llega a un estado determinado.

  • Eventos supervisados por el usuario. El autor de un flujo de trabajo puede crear eventos de seguimiento personalizados y agregarlos al código lateral del flujo de trabajo.

Se pueden emitir los datos del contexto de datos del flujo de trabajo, y entregarlos al servicio de seguimiento junto con los eventos.

Al estar realizando el seguimiento de un flujo de trabajo, podrían no interesarle todos los eventos para todos los estados y actividades. Puede crear un perfil del seguimiento para especificar los eventos y datos que le interesan.

Escribir puntos de seguimiento personalizados

Podría desear realizar el seguimiento de una parte de los datos en un punto determinado de la ejecución del flujo de trabajo cuyo seguimiento no realizan los eventos de seguimiento. En ese caso, puede utilizar puntos de seguimiento personalizados. Puede crear un punto de seguimiento personalizado utilizando el método TrackData proporcionado en la clase de contexto de datos. El método TrackData toma un argumento de un objeto. Esto significa que puede emitir cualquier tipo de datos cuyo seguimiento desee realizar. En el flujo de trabajo del ejemplo, se crea un punto de seguimiento personalizado en el controlador de código de la actividad de código.

Crear el perfil del seguimiento personalizado

El ejemplo muestra cómo crear un perfil del seguimiento personalizado para realizar el seguimiento del punto de seguimiento del usuario. Este perfil se inserta en la base de datos de seguimiento de SQL para realizar el seguimiento de los eventos especificados. El perfil del seguimiento se crea utilizando el modelo de objetos de perfil de seguimiento.

El modelo de objetos de perfil de seguimiento proporciona un conjunto de clases que ayudan a crear el punto de seguimiento de la instancia, puntos de seguimiento de la actividad y puntos de seguimiento del usuario. Cada punto de seguimiento también contiene un conjunto de ubicaciones coincidentes. Una ubicación coincidente describe el evento que cuyo seguimiento se va a realizar (distinto en función de que sea un punto de seguimiento de la instancia o un punto de seguimiento de la actividad) y la actividad (o flujo de trabajo en el caso de un punto de seguimiento de la instancia) cuyo seguimiento se va a realizar.

Los datos que se van a extraer también se pueden especificar en el punto de seguimiento. En este ejemplo, no se han especificado datos para su extracción.

Utilice el código siguiente para crear el perfil de seguimiento para realizar el seguimiento del punto de seguimiento del usuario:

TrackingProfile profile = new TrackingProfile();

ActivityTrackPoint trackPoint = new ActivityTrackPoint();
ActivityTrackingLocation location = new ActivityTrackingLocation(typeof(Activity));
location.MatchDerivedTypes = true;
foreach (ActivityExecutionStatus s in Enum.GetValues(typeof(ActivityExecutionStatus)))
{
    location.ExecutionStatusEvents.Add(s);
}

trackPoint.MatchingLocations.Add(location);
profile.ActivityTrackPoints.Add(trackPoint);
profile.Version = new Version("3.0.0.0");


// Adding a user track point to the tracking profile.
UserTrackPoint utp = new UserTrackPoint();

// Adding a user location to the track point. 
UserTrackingLocation ul = new UserTrackingLocation(typeof(string), typeof(CodeActivity));
ul.MatchDerivedActivityTypes = true;
utp.MatchingLocations.Add(ul);
profile.UserTrackPoints.Add(utp);


// Serialize the profile.
TrackingProfileSerializer serializer = new TrackingProfileSerializer();
StringWriter writer = new StringWriter(new StringBuilder());
serializer.Serialize(writer, profile);
string trackingprofile = writer.ToString();
InsertTrackingProfile(trackingprofile);

En el ejemplo de código anterior, las últimas cuatro líneas especifican cómo se puede serializar el perfil de seguimiento en un formato XML y almacenar en la base de datos de seguimiento. Una vez que se ha serializado, el perfil del seguimiento tiene el aspecto siguiente:

<?xml version=\"1.0\" encoding=\"utf-16\" standalone=\"yes\"?>

<TrackingProfile xmlns=\"http://schemas.microsoft.com/winfx/2006/workflow/trackingprofile\" version=\"3.0.0.0\">

<TrackPoints> <ActivityTrackPoint>

<MatchingLocations>

<ActivityTrackingLocation>

<Activity>

<Type>System.Workflow.ComponentModel.Activity, System.Workflow.ComponentModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35</Type>

<MatchDerivedTypes>true</MatchDerivedTypes>

</Activity>

<ExecutionStatusEvents>

<ExecutionStatus>Initialized</ExecutionStatus>

<ExecutionStatus>Executing</ExecutionStatus>

<ExecutionStatus>Canceling</ExecutionStatus>

<ExecutionStatus>Closed</ExecutionStatus>

<ExecutionStatus>Compensating</ExecutionStatus>

<ExecutionStatus>Faulting</ExecutionStatus>

</ExecutionStatusEvents>

</ActivityTrackingLocation>

</MatchingLocations>

</ActivityTrackPoint>

<UserTrackPoint>

<MatchingLocations>

<UserTrackingLocation>

<Activity>

<Type>System.Workflow.Activities.CodeActivity, System.Workflow.Activities, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35</Type>

<MatchDerivedTypes>true</MatchDerivedTypes>

</Activity>

<Argument>

<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>

<MatchDerivedTypes>false</MatchDerivedTypes>

</Argument>

</UserTrackingLocation>

</MatchingLocations>

</UserTrackPoint>

</TrackPoints>

</TrackingProfile>

El perfil del seguimiento se crea utilizando el esquema de perfiles de seguimiento.

Insertar el perfil de seguimiento en la base de datos de seguimiento de SQL

El perfil de seguimiento se inserta en la base de datos de perfiles de seguimiento utilizando el procedimiento almacenado UpdateTrackingProfile. El procedimiento almacenado almacena el perfil para un tipo de flujo de trabajo determinado. Cuando el tiempo de ejecución pide al servicio de seguimiento un perfil para el tipo, el servicio de seguimiento devuelve este perfil personalizado en lugar del perfil predeterminado.

Registrar el servicio de seguimiento con el host del flujo de trabajo

Use el código siguiente para registrar un servicio de seguimiento con el tiempo de ejecución del flujo de trabajo:

WorkflowRuntime workflowRuntime = new WorkflowRuntime();
workflowRuntime.AddService(new SqlTrackingService(connectionstring));
workflowRuntime.StartRuntime();

La segunda línea registra el servicio de seguimiento de SQL con el tiempo de ejecución del flujo de trabajo. La cadena de conexión es la cadena de conexión de la base de datos de seguimiento.

Crear la base de datos de seguimiento

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

Consulte también

Footer image



Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.
¿Te ha resultado útil?
(Caracteres restantes: 1500)
Gracias por sus comentarios

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft. Reservados todos los derechos.