다음을 통해 공유


워크플로 트랜잭션

WF는 System.Transactions이/가 TransactionScope 활동을 사용하여 트랜잭션 작업 단위를 범위 지정함으로써 트랜잭션에 지속적으로 참여할 수 있도록 지원합니다. System.Transactions.TransactionScope 작업은 명시적으로 완료되어야 하고, System.Activities.Statements.TransactionScope 활동은 성공적으로 완료될 때 트랜잭션에서 완료를 암시적으로 호출합니다. 활동에 포함된 BodyTransactionScope 모든 활동이 트랜잭션에 참여합니다. WF는 TransactedReceiveScope 활동을 사용하여 트랜잭션이 워크플로로 흘러갈 수 있게 할 수 있습니다. TransactionScope 활동과 마찬가지로, Body에 포함된 모든 활동이 트랜잭션에 참여합니다. WF는 Transaction.Current에 의존하는 활동이 TransactionScopeTransactedReceiveScope 모두와 함께 작동함을 보장합니다. 시스템 제공 활동이 모든 요구 사항을 충족하지 않는 경우 고급 흐름 및 트랜잭션 제어 시나리오를 사용하도록 설정하여 사용자 지정 활동을 빌드 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 사용에 대해 알아보고, 워크플로 서비스 내/외부의 트랜잭션 흐름을 참조하세요.

참고하십시오