Bestätigung
Dieses Thema gilt für Windows Workflow Foundation 4.
In diesem Beispiel werden vier allgemeine Szenarien im Zusammenhang mit der Verwendung von CompensableActivity und der Bestätigung veranschaulicht. Im Beispiel werden vier Workflows ausgeführt, um die Bestätigung zu veranschaulichen. Dieses Beispiel ist in deklarativen und imperativen Versionen verfügbar.
Bestätigen einer kompensierbaren Aktivität
Der erste Workflow veranschaulicht, wie eine kompensierbare Aktivität bestätigt wird, und besteht aus einer Sequenz von zwei CompensableActivity-Instanzen. Nach Abschluss der zweiten CompensableActivity bestätigt eine Confirm-Aktivität die erste Aktivität. Wenn der Workflow erfolgreich abgeschlossen wird, werden alle CompensableActivity-Instanzen, die nicht bestätigt oder kompensiert wurden, automatisch mit der Standardreihenfolge bestätigt. Ohne die Confirm-Aktivität wäre die zweite CompensableActivity zuerst bestätigt worden.
Explizite Kompensierung
Das zweite Szenario zeigt die Auswirkungen auf die Standardbestätigung, wenn eine CompensableActivity explizit kompensiert wird. Der Workflow besteht aus einer Sequenz von zwei CompensableActivity-Aktivitäten, nachdem die zweite abgeschlossen wurde, wird die erste explizit kompensiert. Wenn der Workflow abgeschlossen wird, wird als Ergebnis nur die zweite CompensableActivity bestätigt.
Steuern der Bestätigungsreihenfolge für geschachtelte CompensableActivity-Aktivitäten
Das dritte Szenario zeigt, wie die Bestätigungsreihenfolge für geschachtelte CompensableActivity gesteuert wird. Das Szenario besteht aus einer CompensableActivity als Stamm des Workflows. Der Text der CompensableActivity als Stamm ist eine Sequenz von drei CompensableActivity. Der ConfirmationHandler für die CompensableActivity als Stamm ist eine Sequenz, die angibt, zuerst die erste und dann die zweite geschachtelte CompensableActivity zu bestätigen. Wenn der Workflow abgeschlossen wird, wird CompensableActivity als Stamm bestätigt, dann wird die erste, die zweite und die dritte geschachtelte CompensableActivity bestätigt, in dieser Reihenfolge. Als Ergebnis wird die standardmäßige Bestätigungsreihenfolge im Grunde umgekehrt. Da die dritte CompensableActivity nicht explizit als Teil von CompensableActivity als Stamm von ConfirmationHandler bestätigt wurde, wird sie nach der Standardreihenfolge bestätigt. Da sie jedoch die einzige unbestätigte CompensableActivity ist, bedeutet dies nur, dass sie bestätigt ist.
Bereiche von Variablen
Das vierte Szenario zeigt, wie die Lebensdauer von Variablen, die für eine CompensableActivity oder eine der übergeordneten Aktivitäten definiert sind, noch im Bereich liegt, wenn die Kompensierung, ConfirmationHandler- oder CancellationHandler-Handler ausgeführt werden, auch wenn die Aktivität oder der Workflow abgeschlossen wurde. Der Workflow besteht aus einer Sequenz von zwei CompensableActivity. Im Text der ersten wird die Variable mySum
auf die Summe von 5 und 10 festgelegt, und das Ergebnis wird ausgegeben. Im Text der zweiten CompensableActivity wird die Summe auf die Summe der vorhandenen Summe und 7 festgelegt, und das Ergebnis wird ausgegeben. Ein benutzerdefinierter Bestätigungshandler wird für die erste CompensableActivity definiert, die die Summe ausgibt, 7 subtrahiert und die Summe wieder ausgibt. Durch Überprüfung der ausgegebenen Summen wird deutlich, dass die Variable nicht nur für die Texte der beiden CompensableActivity, sondern auch für den ConfirmationHandler im Bereich liegt.
So führen Sie das Beispiel aus
Laden Sie die Projektmappe in Visual Studio 2010.
Führen Sie die Anwendung "ConfirmationSample.exe" aus.
Achten Sie auf die folgende Ausgabe:
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.
Hinweis: |
---|
Die Beispiele sind möglicherweise bereits auf dem Computer installiert. Überprüfen Sie das folgende (standardmäßige) Verzeichnis, bevor Sie fortfahren.
<Installationslaufwerk>:\WF_WCF_Samples
Wenn dieses Verzeichnis nicht vorhanden ist, rufen Sie Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 auf, um alle Windows Communication Foundation (WCF)- und WF-Beispiele herunterzuladen. Dieses Beispiel befindet sich im folgenden Verzeichnis.
<Installationslaufwerk>:\WF_WCF_Samples\WF\Basic\Compensation\Confirmation
|