Condividi tramite


Esempio di rilevamento di EventArgs

Download sample

Nell'esempio riportato di seguito viene illustrato l'utilizzo del servizio di rilevamento SQL fornito da Windows Workflow Foundation per rilevare l'esecuzione di un flusso di lavoro.

La fase di esecuzione del flusso di lavoro genera alcuni eventi durante l'esecuzione di un flusso di lavoro. Il servizio di rilevamento può intercettare questi eventi e archiviare le informazioni relative in un database SQL Server che può essere sottoposto a query.

Il runtime di rilevamento definisce i tipi TrackingWorkflowTerminatedEventArgs, TrackingWorkflowSuspendedEventArgse TrackingWorkflowExceptionEventArgs per mantenere le informazioni rispettivamente sul completamento, sulla sospensione e sulle eccezioni del flusso di lavoro. Vengono inviati WorkflowEventArgs con WorkflowTrackingRecord per gli eventi corrispondenti. Ad esempio, TrackingWorkflowTerminatedEventArgs vengono inviati con WorkflowTrackingRecord quando lo stato del flusso di lavoro raggiunge uno stato WorkflowTerminated.

SqlTrackingService riceve i vari oggetti EventArgs nel momento in cui arrivano, li serializza e li salva insieme nel database di rilevamento con i relativi eventi, se il profilo di rilevamento li richiede. Il modulo serializzato può essere quindi deserializzato e utilizzato dagli utenti del rilevamento. Il profilo di rilevamento utilizzato è il profilo di rilevamento predefinito SqlTrackingService.

Nota

Il valore di tempo in un WorkflowTrackingRecord è in formato UTC (ora di Greenwich).

Panoramica dell'esempio

L'esempio è un'applicazione console del flusso di lavoro che consiste in due flussi di lavoro:

  • ExceptionWorkflow. Un semplice flusso di lavoro con un gestore del codice nel quale viene generata un'eccezione. L'eccezione non è gestita e implica l'interruzione del flusso di lavoro.

  • SuspendedWorkflow. Un semplice flusso di lavoro con un'attività di sospensione. Il flusso di lavoro deve raggiungere un stato di sospensione.

L'elemento principale per l'esempio è nella classe Program che ha la seguente logica:

  1. Crea una connectionString al database SqlTrackingService.

  2. Aggiunge SqlTrackingService al runtime del flusso di lavoro nel modo seguente:

    workflowRuntime.AddService(new SqlTrackingService(connectionString));
    
  3. Esegue i flussi di lavoro nel modo seguente:

    WorkflowInstance exceptionWorkflowInstance = workflowRuntime.CreateWorkflow(typeof(ExceptionWorkflow));
    exceptionWorkflowInstance.Start();
    
  4. Crea gestori eventi per l'attesa del completamento o dell'interruzione del flusso di lavoro (a seconda del tipo del flusso di lavoro).

  5. Sottopone a query SqlTrackingService per gli WorkflowEvents specifici e recupera l'oggetto serializzato in formato binario di TrackingWorkflowTerminatedEventArgs, TrackingWorkflowSuspendedEventArgs e TrackingWorkflowExceptionEventArgs.

  6. Deserializza i dati e ne scrive il contenuto nella console.

Creazione del database SqlTrackingService

I servizi SQL installati da Windows Workflow Foundation utilizzano Microsoft SQL Server per archiviare le informazioni. Per queste attività è possibile utilizzare Microsoft SQL Server 2005 Express, SQL Server 2000 o versioni più recenti o SQL Server 2000 Desktop Engine (MSDE).

Il programma di installazione di Windows Workflow Foundation non installa i database richiesti da questi servizi; tuttavia, il programma di installazione installa gli script SQL per la creazione e la configurazione dei database per tali servizi.

Per creare il database di rilevamento SQL

  1. Se si utilizza Microsoft SQL Server 2005 Express, SQL Server 2000 o versioni più recenti oppure SQL Server 2000 Desktop Engine (MSDE), creare un nuovo database denominato Tracking utilizzando l'istruzione della query SQL:

    CREATE DATABASE Tracking

    Nota   Se si utilizzano SqlTrackingService e SqlWorkflowPersistenceService in un'applicazione del flusso di lavoro, è consigliabile utilizzare un unico database per la persistenza e il rilevamento.

  2. Nell'area di lavoro SQL Query Analyzer, selezionare il database creato al passaggio 1 nell'elenco di database disponibili.

  3. Nel menu File, fare clic su Apri e aprire lo script SQL %WINDIR%\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL\<lingua>\Tracking_Schema.sql.

  4. Eseguire la query facendo clic su Esegui o premendo F5 per creare le tabelle del servizio di rilevamento SQL.

  5. Nel menu File, fare clic su Apri e aprire lo script SQL %WINDIR%\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL\<lingua>\Tracking_Logic.sql.

  6. Eseguire la query facendo clic su Esegui o premendo F5 per creare le stored procedure del servizio di rilevamento SQL.

Per generare l'esempio

  1. Scaricare l'esempio facendo clic su Scarica esempio.

    In tal modo viene estratto il progetto di esempio sul disco rigido locale.

  2. Fare clic sul pulsante Start, scegliere Programmi, Microsoft Windows SDK e fare clic su CMD Shell.

  3. Accedere alla directory di origine dell'esempio.

  4. Al prompt dei comandi, immettere MSBUILD <nome file soluzione>.

Per eseguire l'esempio

  • Nella finestra del prompt dei comandi di SDK, eseguire il file exe nella cartella EventArgsTrackingSample\bin\debug (o nella cartella EventArgsTrackingSample\bin per la versione VB dell'esempio), collocata sotto la cartella principale dell'esempio.

Vedere anche

Riferimenti

SqlTrackingService
SqlTrackingQuery
SqlTrackingWorkflowInstance
ActivityEvents
ActivityTrackingRecord
WorkflowEvents
WorkflowTrackingRecord

Altre risorse

Esempi di rilevamento
Esempio di rilevamento semplice
Esempio di esecuzione di query con l'utilizzo di SQLTrackingService
Esempio di rilevamento tramite track point utente
Esempio di ConsoleTrackingService
Esempio di esecuzione di query con l'utilizzo di SQLTrackingService
Esempio di RuleActionTrackingEvent
Esempio di servizio di rilevamento file e query
Esempio di utilizzo del modello a oggetti del profilo di rilevamento
Esempio di manutenzione di dati SQL
Windows Workflow Tracking Services

Footer image

Copyright © 2007 Microsoft Corporation. Tutti i diritti riservati.