Workflowtransaktionen

WF bietet Unterstützung die Beteiligung an System.Transactions-Transaktionen mithilfe der TransactionScope-Aktivität, um eine transaktive Arbeitseinheit festzulegen. Während das System.Transactions.TransactionScope-Objekt explizit abgeschlossen werden muss, ruft die System.Activities.Statements.TransactionScope-Aktivität den Abschluss implizit auf, wenn die Transaktion erfolgreich abgeschlossen wurde. Alle im Body der TransactionScope-Aktivität enthaltenen Elemente sind an der Transaktion beteiligt. WF kann, um Transaktionen der TransactedReceiveScope-Aktivität in einen Workflow zu übergeben. Wie die TransactionScope-Aktivität sind alle in Body enthaltenen Aktivitäten an der Transaktion beteiligt. WF stellt sicher, dass von Transaction.Current abhängige Aktivitäten mit TransactionScope und TransactedReceiveScope zusammenarbeiten können. Wenn die vom System bereitgestellten Aktivitäten nicht alle Anforderungen berücksichtigen, können mit dem RuntimeTransactionHandle-Objekt benutzerdefinierte Aktivitäten erstellt werden, um erweiterte Szenarien für Fluss- und Transaktionssteuerelemente zu ermöglichen.

Im folgenden Ausschnitt wird ein Workflow aus einer Sequence-Aktivität erstellt, die über untergeordnete Aktivitäten, einschließlich einer TransactionScope-Aktivität, verfügt. Die Body-Aktivitäten von TransactionScope werden unter der Transaktion ausgeführt, die von der TransactionScope-Aktivität initialisiert wurde.

static Activity ScenarioOne()
{
    return new Sequence
    {
        Activities =
        {
            new WriteLine { Text = "    Begin workflow" },

            new TransactionScope
            {
                Body = new Sequence
                {
                    Activities =
                    {
                        new WriteLine { Text = "    Begin TransactionScope" },

                        new PrintTransactionId(),

                        new TransactionScopeTest(),

                        new WriteLine { Text = "    End TransactionScope" },
                    },
                },
            },

            new WriteLine { Text = "    End workflow" },
        }
    };
}

Weitere Informationen finden Sie unter Verwenden von TransactedReceiveScope, finden Sie unter Flowing Transactions into and out of Workflow Services.

Siehe auch