Compartilhar via


Transações de fluxo de trabalho

O WF oferece suporte para participação em System.Transactions transações usando a atividade TransactionScope para definir o escopo de uma unidade de trabalho transacionada. Quando System.Transactions.TransactionScope deve ser explicitamente concluído chamadas de atividade de System.Activities.Statements.TransactionScope implicitamente completos na transação em cima de conclusão com êxito. Todas as atividades que estão contidas em Body de atividade de TransactionScope participam na transação. WF pode passar transações em um fluxo de trabalho pelo uso de atividade de TransactedReceiveScope . Como a atividade de TransactionScope , quaisquer atividades contida em Body participa na transação. WF garante que as atividades dependentes em Transaction.Current para trabalhar com TransactionScope e TransactedReceiveScope. Se o sistema forneceu as atividades não endereçam todos os requisitos, as atividades personalizados podem ser criadas usando RuntimeTransactionHandle para habilitar cenários avançados do controle de fluxo e de transação.

No exemplo a seguir, um fluxo de trabalho é construído consistindo em uma atividade Sequence que contém atividades filhas, incluindo uma atividade TransactionScope. As atividades de Body de TransactionScope executam sob a transação inicializada pela atividade de 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" },
        }
    };
}

Para obter mais informações, consulte sobre como usar TransactedReceiveScope, consulte Transações de entrada e saída de serviços de fluxo de trabalho.

Confira também