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.