Esempio di compensazione
La compensazione definisce l'esecuzione della regola business risultante da un'eccezione business. L'ambito di azione è limitato all'utilità di progettazione dei flussi di lavoro, che si occupa della modellazione di un processo aziendale; l'avvio della compensazione è definito dall'utente piuttosto che dal runtime. Il runtime fornisce il meccanismo in cui è definita la compensazione.
In questo esempio, l'unità di lavoro compensata è contenuta in un'attività CompensatableTransactionScopeActivity. Viene quindi definita un'attività CompensationHandlerActivity per questo ambito, in cui è definito il lavoro di compensazione. Dal momento che è possibile compensare un ambito solo se è stato completato, un'attività ThrowActivity genera un'eccezione al termine dell'esecuzione dell'ambito. Questa eccezione viene rilevata da un gestore di eccezioni contenente un'attività di compensazione. L'attività di compensazione specifica il successivo ambito di destinazione che il runtime eseguirà.
In questo scenario, viene ricevuto un ordine di acquisto e vengono prelevati i fondi dalla carta di credito dell'acquirente. Il flusso di lavoro verifica la disponibilità del prodotto selezionato. Se è disponibile, il prodotto viene spedito. Se il prodotto non è più disponibile, viene generata una DiscontinuedProductException. La DiscontinuedProductException viene intercettata dal gestore di eccezioni del flusso di lavoro. Il gestore di eccezioni avvia quindi il gestore di compensazione definito da CompensateActivity contenuto nel gestore. Il gestore di compensazione rimborsa quindi i fondi all'acquirente.
L'output dell'esempio apparirà come riportato di seguito:
Utilizzo dell'esempio
Per utilizzare questo esempio è necessario creare il database di persistenza SQL.
Per creare il database di persistenza SQL
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 WorkflowPersistenceStore utilizzando l'istruzione della query SQL:
CREATE DATABASE SqlPersistenceService
Nell'area di lavoro SQL Server Query Analyzer, selezionare il database creato al passaggio 1 dall'elenco di database disponibili.
Nel menu File, fare clic su Apri e aprire lo script SQL %WINDIR%\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL\<lingua>\SqlPersistence_Schema.sql.
Eseguire la query facendo clic su Esegui o premendo F5 per creare le tabelle del servizio di persistenza SQL.
Nel menu File, fare clic su Apri e aprire lo script SQL %WINDIR%\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL\<lingua>\SqlPersistence_Logic.sql.
Eseguire la query facendo clic su Esegui o premendo F5 per creare le stored procedure del servizio di persistenza SQL.
Per generare l'esempio
Scaricare l'esempio facendo clic su Scarica esempio in questo argomento.
In tal modo viene estratto il progetto di esempio sul disco rigido locale.
Fare clic sul pulsante Start, scegliere Programmi, Microsoft Windows SDK e fare clic su CMD Shell.
Accedere alla directory di origine dell'esempio.
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 Compensation\bin\debug (o nella cartella Compensation\bin per la versione VB dell'esempio), collocata sotto la cartella principale dell'esempio.
Vedere anche
Riferimenti
CompensatableTransactionScopeActivity
CompensationHandlerActivity
CodeActivity
FaultHandlerActivity
FaultHandlersActivity
IfElseActivity
IfElseBranchActivity
ThrowActivity
Altre risorse
Using the CompensationHandler Activity
Adding Compensatable Activities and Compensation Handlers
Compensation Overview
Esempi di attività
Esempi di Windows Workflow Foundation
Copyright © 2007 Microsoft Corporation. Tutti i diritti riservati.