工作流程異動
WF 使用 TransactionScope 活動來限定工作異動單元的範圍,以支援參與 System.Transactions 異動。 System.Transactions.TransactionScope 必須明確地完成,而 System.Activities.Statements.TransactionScope 活動則會在順利完成時隱含地呼叫交易。 Body 活動的 TransactionScope 中包含的任何活動都會參與異動。 WF 可以透過使用 TransactedReceiveScope 活動,將交易流動至工作流程。 如同 TransactionScope 活動,Body 中所含的所有活動都會參與交易。 WF 會確定相依於 Transaction.Current 的活動都能與 TransactionScope 和 TransactedReceiveScope 共同運作。 如果系統提供的活動無法符合所有需求,可以使用 RuntimeTransactionHandle 建置自訂活動,以啟用進階流程及異動控制案例。
在下列範例中,所建構工作流程是由包含子活動 (包括 TransactionScope 活動) 的 Sequence 活動組成。 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 的詳細資訊,請參閱進出工作流程服務的異動流動。