Share via


Esempio di utilizzo dei servizi di persistenza

Download sample

Questo esempio illustra come utilizzare il servizio SqlWorkflowPersistenceService per caricare e scaricare flussi di lavoro.

Molti processi aziendali impiegano molto tempo per essere completati (fino a mesi o addirittura anni). Mantenere il flusso di lavoro in memoria non solo non è pratico (a causa delle limitazioni della memoria) ma impedisce anche la scalabilità, dal momento che un'istanza deve essere elaborata su un singolo server. Molti di questi flussi di lavoro di lunga durata non eseguono flussi o logiche di elaborazione attivamente ma sono in realtà inattivi, in attesa di un input dagli utenti o da altri sistemi. Tramite lo scaricamento di un'istanza inattiva, l'applicazione host può risparmiare memoria e consentire la scalabilità tra server di elaborazione. Nell'esempio riportato di seguito viene illustrato come scaricare un'istanza inattiva con un semplice flusso di lavoro che attende cinque secondi prima di essere completato.

Nota

SqlWorkflowPersistenceService può essere anche impostato per scaricare automaticamente flussi di lavoro inattivi tramite l'impostazione del parametro UnloadOnIdle su true nel costruttore.

Configurazioni del database

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.

Nota

È necessario abilitare il servizio Microsoft Distributed Transaction Coordinator (MSDTC) affinché SqlWorkflowPersistenceService funzioni.

I passaggi riportati di seguito descrivono come creare e configurare i database utilizzati dai servizi in questo esempio.

Per creare e configurare il database SQL

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

    CREATE DATABASE SqlPersistenceService

    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>\SqlPersistenceService_Schema.

  4. Eseguire la query facendo clic su Esegui o premendo F5 per creare le tabelle del servizio di persistenza 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>\SqlPersistenceService_Logic.

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

Procedura dettagliata di esempio

Il flusso di lavoro è di tipo sequenziale e contiene tre attività in sequenza: code1, delay1 e code2. Le attività CodeActivity scrivono la data/ora UTC corrente nella console e l'attività DelayActivity attende cinque secondo prima di continuare. L'applicazione host gestisce il caricamento e lo scaricamento complessivo dell'istanza del flusso di lavoro in memoria e dalla memoria fornendo i gestori per vari eventi WorkflowRuntime.

L'esecuzione è la seguente:

  1. Il flusso di lavoro viene creato e avviato dall'host.

  2. Code1 visualizza la data/ora UTC corrente nella console.

  3. Il flusso di lavoro avvia l'attività delay1.

  4. L'istanza del flusso di lavoro è ora inattiva, in attesa che scada il timer. Quando il flusso di lavoro diviene inattivo, fa in modo che WorkflowRuntime generi l'evento WorkflowIdled.

  5. Il metodo Unload viene chiamato nel servizio SqlWorkflowPersistenceService in modo da rendere persistente l'istanza del flusso di lavoro. Il runtime del flusso di lavoro elimina quindi l'istanza del flusso di lavoro.

  6. Dopo almeno cinque secondi, il timer scade.

  7. Il servizio SqlWorkflowPersistenceService carica il flusso di lavoro dal database e il runtime continua a elaborarlo.

  8. Code2 visualizza quindi la data/ora UTC corrente nella console. La data/ora deve essere cinque secondi in ritardo rispetto all'ora visualizzata da code1.

  9. Quando l'istanza del flusso di lavoro viene completata, il runtime del flusso di lavoro viene chiamato nel servizio SqlWorkflowPersistenceService in modo da rendere persistente lo stato del flusso di lavoro.

Servizi personalizzati

In questo esempio vengono utilizzati i servizi predefiniti di persistenza di stato; tuttavia, è anche possibile creare servizi di persistenza di stato personalizzati. Tali servizi potrebbero essere necessari per utilizzare i sistemi di database correnti o per fornire funzionalità aggiuntive. Per ulteriori informazioni sullo sviluppo di servizi personalizzati, vedere gli esempi elencati in questo argomento e nella documentazione di Windows Workflow Foundation.

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 PersistenceServices\bin\debug (o nella cartella PersistenceServices\bin per la versione VB dell'esempio), collocata sotto la cartella principale dell'esempio.

Vedere anche

Riferimenti

SqlWorkflowPersistenceService
WorkflowPersistenceService

Altre risorse

Esempio di servizio di persistenza personalizzato
Esempio di generazione di evento per il caricamento del flusso di lavoro
Windows Workflow Persistence Services
Exercise 4 : Using Runtime Services
Using the SqlWorkflowPersistenceService Service
Esempi di hosting
Task 3 : Using the Windows Workflow Persistence Service

Footer image

Copyright © 2007 Microsoft Corporation. Tutti i diritti riservati.