다음을 통해 공유


워크플로 트랜잭션

WF에서는 System.Transactions 작업을 사용하여 트랜잭션된 작업 단위의 범위를 지정함으로써 TransactionScope 트랜잭션에 참여할 수 있도록 지원합니다. System.Transactions.TransactionScope는 명시적으로 완료되어야 하지만 System.Activities.Statements.TransactionScope 활동은 트랜잭션이 성공적으로 완료되면 호출이 암시적으로 완료됩니다. Body 활동의 TransactionScope에 포함되는 모든 활동은 트랜잭션에 참여합니다. WF에서는 TransactedReceiveScope 활동을 사용하여 트랜잭션을 워크플로로 전달할 수 있습니다. TransactionScope 활동과 마찬가지로 Body에 포함된 모든 활동은 트랜잭션에 참여합니다. WF에서는 Transaction.Current에 종속되는 활동이 TransactionScopeTransactedReceiveScope 모두에서 작동하는지 확인합니다. 시스템 제공 활동이 일부 요구 사항을 충족하지 않을 경우 RuntimeTransactionHandle을 통해 사용자 지정 활동을 작성하여 고급 흐름 및 트랜잭션 제어 시나리오를 사용하도록 설정할 수 있습니다.

다음 예에서 워크플로는 TransactionScope 작업을 포함한 자식 작업을 포함하는 Sequence 작업으로 구성됩니다. BodyTransactionScope 활동은 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 안팎의 트랜잭션 흐름을 참조하세요.

참고 항목