Conferma

Le informazioni contenute in questo argomento sono valide per Windows Workflow Foundation 4.

In questo esempio vengono illustrati quattro scenari comuni riguardanti l'utilizzo di CompensableActivity e la conferma. L'esempio esegue quattro flussi di lavoro per illustrare la conferma. Questo esempio è disponibile nelle versioni dichiarativa e imperativa.

Confermare una CompensableActivity

Il primo flusso di lavoro illustra come confermare un'attività CompensableActivity ed è costituito da una sequenza di due istanze di CompensableActivity. Dopo il completamento della seconda CompensableActivity, un'attività Confirm conferma la prima attività. Quando il flusso di lavoro viene completato correttamente, tutte le istanze di CompensableActivity che non sono state confermate o compensate vengono confermate automaticamente utilizzando l'ordine predefinito. Senza la conferma, la seconda CompensableActivity sarebbe stata confermata per prima.

Compensazione esplicita

Il secondo scenario illustra l'effetto sulla conferma predefinita quando una CompensableActivity viene compensata in modo esplicito. Il flusso di lavoro è costituito da una sequenza di due attività CompensableActivity. Dopo il completamento della seconda, la prima viene compensata in modo esplicito. Di conseguenza, quando il flusso di lavoro viene completato, solo la seconda CompensableActivity viene confermata.

Controllo dell'ordine di conferma per le attività CompensableActivity annidate

Il terzo scenario illustra come controllare l'ordine di conferma per CompensableActivity annidate. Lo scenario è costituito da una CompensableActivity come radice del flusso di lavoro. Il corpo della CompensableActivity radice è una sequenza di tre CompensableActivity. ConfirmationHandler per la CompensableActivity radice è una sequenza che specifica di confermare la prima, quindi la seconda CompensableActivity annidata. Quando il flusso di lavoro viene completato, conferma la CompensableActivity radice che quindi conferma la prima, la seconda e la terza CompensableActivity annidate, in tale ordine. Di conseguenza, l'ordine di conferma predefinito viene essenzialmente invertito. Poiché la terza CompensableActivity non è stata confermata in modo esplicito come parte della CompensableActivity radice da parte di ConfirmationHandler, viene confermata secondo l'ordine predefinito. Poiché, tuttavia, è la sola CompensableActivity non confermata, ciò significa solo che viene confermata.

Ambito di variabili

Il quarto scenario illustra come la durata di variabili definite per una CompensableActivity o una delle relative attività padri sia ancora nell'ambito quando vengono eseguiti i gestori compensazione, ConfirmationHandler o CancellationHandler, anche se l'attività o il flusso di lavoro è stato completato. Il flusso di lavoro è costituito da una sequenza di due CompensableActivity. Nel corpo della prima, la variabile mySum viene impostata sulla somma di 5 e 10 e il risultato viene stampato. Nel corpo della seconda CompensableActivity la somma viene impostata sulla somma della somma esistente più 7 e il risultato viene stampato. Viene definito un gestore conferma personalizzato per la prima CompensableActivity, che stampa la somma, sottrae 7 e stampa nuovamente la somma. Controllando le somme stampate risulta chiaro che la variabile è nell'ambito non solo per i corpi di entrambe le CompensableActivity, ma anche per ConfirmationHandler.

Per eseguire l'esempio

  1. Caricare la soluzione in Visual Studio 2010.

  2. Eseguire l'applicazione ConfirmationSample.exe.

  3. Osservare il seguente output:

    Explicit confirmation:Start of workflowCompensableActivity1: BodyCompensableActivity2: BodyCompensableActivity1: Confirmation HandlerEnd of workflowCompensableActivity2: Confirmation HandlerExplicit compensation:Start of workflowCompensableActivity1: BodyCompensableActivity2: BodyCompensableActivity1: Compensation HandlerEnd of workflowCompensableActivity2: Confirmation HandlerCustom confirmation handler:Start of workflowCompensableActivity1: BodyCompensableActivity2: BodyCompensableActivity3: BodyEnd of workflowCompensableActivity1: Confirmation HandlerCompensableActivity2: Confirmation HandlerCompensableActivity3: Confirmation HandlerVariable access in a confirmation handler:Start of workflowCompensableActivity1: BodyCompensableActivity1: The sum is: 15CompensableActivity2: BodyCompensableActivity2: Adding 7 to the sumCompensableActivity2: The sum is now: 22End of workflowCompensableActivity2: Confirmation HandlerCompensableActivity1: Confirmation HandlerCompensableActivity2: The sum is: 22CompensableActivity2: After subtracting 12 the sum is now: 10Press ENTER to exit.
Dd807507.Important(it-it,VS.100).gif Nota:
È possibile che gli esempi siano già installati nel computer. Verificare la directory seguente (impostazione predefinita) prima di continuare.

<UnitàInstallazione>:\WF_WCF_Samples

Se questa directory non esiste, visitare la pagina relativa agli esempi di Windows Communication Foundation (WCF) e Windows Workflow Foundation (WF) per .NET Framework 4 per scaricare tutti gli esempi di Windows Communication Foundation (WCF) e WF. Questo esempio si trova nella directory seguente.

<UnitàInstallazione>:\WF_WCF_Samples\WF\Basic\Compensation\Confirmation