WF 提供參與交易的支援 System.Transactions ,方法是使用 TransactionScope 活動來設定交易單位的範圍。 System.Transactions.TransactionScope必須明確完成,然而,System.Activities.Statements.TransactionScope活動在成功完成時會隱含地呼叫交易完成。 任何包含在Body活動的TransactionScope中的活動都參與交易。 WF 可以使用 TransactedReceiveScope 活動,將交易流動至工作流程。 如同活動 TransactionScope ,包含在 Body 中的任何活動都參與交易。 WF 可確保依賴 Transaction.Current 的活動能同時與 TransactionScope 與 TransactedReceiveScope 搭配運作。 如果系統提供的活動無法解決所有需求,可以使用 來建立 RuntimeTransactionHandle 自定義活動,以啟用進階流程和交易控制案例。
在下列範例中,會建構一個工作流程,其中包含一個 Sequence 活動,該活動包含了包括 TransactionScope 活動在內的子活動。 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,請參閱 將交易流入和流出工作流程服務。