Partilhar via


Transações de fluxo de trabalho

A WF fornece suporte para a participação em System.Transactions transações usando a atividade para definir o TransactionScope escopo de uma unidade de trabalho transacionada. Embora o deve ser explicitamente concluído, System.Transactions.TransactionScope a System.Activities.Statements.TransactionScope atividade implicitamente chama a transação completa após a conclusão bem-sucedida. Todas as atividades contidas na BodyTransactionScope atividade participam da transação. O WF pode fluir transações para um fluxo de trabalho através do uso da TransactedReceiveScope atividade. Assim como a TransactionScope atividade, qualquer atividade contida na Body participa da transação. A WF garante que as atividades dependentes de Transaction.Current trabalhos com ambos e TransactionScopeTransactedReceiveScope. Se as atividades fornecidas pelo sistema não abordarem todos os requisitos, as atividades personalizadas poderão ser criadas usando o RuntimeTransactionHandle para habilitar cenários avançados de fluxo e controle de transações.

No exemplo a seguir, um fluxo de trabalho é construído consistindo em uma Sequence atividade que contém atividades filhas, incluindo uma TransactionScope atividade. As Body atividades da TransactionScope execução sob a transação inicializada pela TransactionScope atividade.

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

Para obter mais informações, consulte sobre como usar TransactedReceiveScopeo , consulte Fluxo de transações para dentro e para fora dos Serviços de Fluxo de Trabalho.

Consulte também