Поделиться через


Транзакции рабочих процессов

WF обеспечивает поддержку участия в System.Transactions транзакциях с помощью TransactionScope действия для область транзакций. В то время как System.Transactions.TransactionScope должна завершаться явно, действие System.Activities.Statements.TransactionScope неявно вызывает завершение транзакции в случае успешного завершения. Все действия, содержащиеся в Body действия TransactionScope, принимают участие в транзакции. WF способен передавать транзакции в рабочий процесс при помощи действия TransactedReceiveScope. Аналогично действию TransactionScope, любое действие, содержащееся в Body, участвует в транзакции. WF обеспечивает работу действий, зависимых от Transaction.Current, как с TransactionScope, так и с TransactedReceiveScope. Если системные действия не удовлетворяют всем существующим требованиям, можно создать пользовательские действия с помощью RuntimeTransactionHandle, чтобы реализовать расширенные схемы управления потоком и транзакциями.

В следующем примере создается рабочий процесс, состоящий из Sequence действия, содержащего дочерние действия, включая TransactionScope действие. Действия Body из TransactionScope выполняются в рамках транзакции, инициализированной действием TransactionScope.

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" },
        }
    };
}

Дополнительные сведения см. в статье об использовании TransactedReceiveScopeпотоков транзакций в службы рабочих процессов и их выходе из нее.

См. также