워크플로 트랜잭션
WF에서는 System.Transactions 작업을 사용하여 트랜잭션된 작업 단위의 범위를 지정함으로써 TransactionScope 트랜잭션에 참여할 수 있도록 지원합니다. 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 사용에 대한 내용을 참조하세요. Workflow Services 안팎의 트랜잭션 흐름을 참조하세요.
참고 항목
.NET