Erstellen von benutzerdefinierten WorkflowCommitWorkBatchService-Diensten

Die Workflowlaufzeit verwendet einen WorkflowCommitWorkBatchService-Dienst, wenn für die Ergebnisse einer Workflowausführung ein Commit ausgeführt werden muss. Ein benutzerdefinierter WorkflowCommitWorkBatchService-Dienst kann bereitgestellt werden, um die Ausführung der Commitlogik zu steuern (beispielsweise durch Bereitstellen eines transaktionalen Kontexts). Wenn kein WorkflowCommitWorkBatchService angegeben wird, wird von der Workflowlaufzeit beim Start DefaultWorkflowCommitWorkBatchService erstellt.

Ein benutzerdefinierter WorkflowCommitWorkBatchService-Dienst wird durch Ableiten von der WorkflowCommitWorkBatchService-Basisklasse erstellt. Diese Klasse definiert eine virtuelle Methode, die Sie überschreiben können:

protected void CommitWorkBatch(CommitWorkBatchCallback commitWorkBatchCallback)

Diese Methode wird von der Workflowlaufzeit aufgerufen, wenn für einen Arbeitsbatch ein Commit ausgeführt werden muss. Dies ist beispielsweise der Fall, wenn Änderungen in einer Workflowinstanz beibehalten werden. Durch die Implementierung dieser Methode wird die CommitWorkBatchCallback-Methode innerhalb eines entsprechenden Transaktionsbereichs aufgerufen.

Ambient-Transaktionen

Mit der Basisimplementierung wird überprüft, ob eine von der Workflowinstanz ausgelöste Ambient-Transaktion vorhanden ist. Wird keine Ambient-Transaktion gefunden, wird eine Transaktion erstellt und der CommitWorkBatch-Delegat aufgerufen. Ist hingegen eine Ambient-Transaktion vorhanden, wird in der Basisimplementierung eine DependentTransaction erstellt, in der von der DependentCloneOption-Enumeration BlockCommitUntilComplete angegeben wird. Anschließend wird die Ambient-Transaktion der neu erstellten DependentTransaction entsprechend festgelegt. Dieser Schritt wird ausgeführt, damit die von der Workflowinstanz generierte Ambient-Transaktion erst bei Fertigstellung des Commits für den Arbeitsbatch abgeschlossen werden kann. Wenn eine Ausnahme auftritt, führt der CommitWorkBatch-Dienst einen Rollback für die Transaktion aus und löst anschließend die Ausnahme aus. Sie können FaultHandlerActivity verwenden, um auf diese Ausnahme abzufangen. Dies ermöglicht es Ihnen, die Transaktion nach Bedarf zu wiederholen.

Der einzige Typ einer Ambient-Transaktion, der von WorkflowCommitWorkBatchService unterstützt wird, ist eine Transaktion, die von der Workflowinstanz stammt. Ambient-Transaktionen, die von der Hostanwendung oder der Anwendung, die die Workflowlaufzeit ausführt, stammen, werden vorübergehend vom aktuellen Thread entfernt, um die Nebeneffekte zu reduzieren. Nach dem Versetzen des Workflows in den Leerlauf wird die im Host enthaltene Ambient-Transaktion wieder in den Thread gesetzt. Daher unterstützt die Windows Workflow Foundation nicht die Funktion zum Übertragen von externen Transaktionen in eine Workflowinstanz.

Siehe auch

Referenz

DefaultWorkflowCommitWorkBatchService
WorkflowCommitWorkBatchService

Konzepte

Windows Workflow CommitWorkBatch-Dienste

Weitere Ressourcen

Entwickeln von Windows Workflow Foundation-Diensten

Footer image

Copyright © 2007 by Microsoft Corporation. Alle Rechte vorbehalten.