Transazioni del flusso di lavoro
Windows Workflow Foundation fornisce il supporto per partecipare alle transazioni System.Transactions tramite l'attività TransactionScope per definire l'ambito di un'unità transazionale di lavoro. Mentre l'oggetto System.Transactions.TransactionScope deve essere completato in modo esplicito, l'attività System.Activities.Statements.TransactionScope effettua le chiamate in modo implicito sulla transazione in seguito al corretto completamento. Qualsiasi attività contenuta nell'elemento Body dell'attività TransactionScope partecipa alla transazione. WF può propagare transazioni in un flusso di lavoro tramite l'attività TransactedReceiveScope. Analogamente all'attività TransactionScope, qualsiasi attività contenuta nella proprietà Body partecipa alla transazione. WF assicura che nelle attività che dipendono dall'oggetto Transaction.Current possano essere usati entrambi gli oggetti TransactionScope e TransactedReceiveScope. Se le attività fornite dal sistema non soddisfano tutti i requisiti, possono essere compilate attività personalizzate tramite l'oggetto RuntimeTransactionHandle per abilitare scenari di controllo di transazioni e flussi avanzati.
Nell'esempio riportato di seguito viene costruito un flusso di lavoro costituito da un'attività Sequence che contiene attività figlio che includono un'attività TransactionScope. Le attività Body di TransactionScope vengono eseguite nella transazione inizializzata dall'attività 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" },
}
};
}
Per altre informazioni sull'uso di TransactedReceiveScope, vedere Propagazione di transazioni all'interno e all'esterno di servizi flusso di lavoro.