다음을 통해 공유


트랜잭션 롤백

이 항목은 Windows Workflow Foundation 4에 적용됩니다.

이 샘플에서는 앰비언트 RuntimeTransactionHandle에 액세스하여 앰비언트 트랜잭션을 가져와서 명시적으로 롤백하는 사용자 지정 NativeActivity를 만드는 방법을 보여 줍니다.

샘플 세부 정보

워크플로에서 트랜잭션은 가장 바깥쪽 TransactionScope 또는 TransactedReceiveScope가 완료될 때 자동으로 완료됩니다. 트랜잭션은 처리되지 않은 예외가 범위 경계에 전파될 때 암시적으로 롤백됩니다. 그러나 예외를 throw할 필요 없이 트랜잭션을 명시적으로 롤백하는 것이 적합한 경우도 있습니다. 이 경우에는 이 샘플의 활동과 같은 사용자 지정 롤백 활동을 사용하여 앰비언트 트랜잭션을 명시적으로 중단하고 선택적으로 예외 이유를 제공할 수 있습니다.

RollbackActivityNativeActivity입니다. 앰비언트 RuntimeTransactionHandle을 가져오려면 실행 속성에 대한 액세스 권한이 필요하기 때문입니다. Execute 메서드에서 RuntimeTransactionHandle을 가져와서 null인지 여부를 확인합니다. Null은 활동이 앰비언트 런타임 트랜잭션 없이 사용되었음을 나타냅니다. 그런 다음 트랜잭션을 가져와서 null이 있는지 여부를 다시 확인합니다. 런타임 트랜잭션을 초기화하지 않고 앰비언트 RuntimeTransactionHandle을 사용할 수 있습니다. 마지막으로, Rollback을 호출하고 활동이 트랜잭션을 롤백했음을 나타내는 제네릭 예외 또는 사용자 제공 예외를 지정하여 트랜잭션을 중단합니다.

데모 워크플로는 RollbackActivity 실행 전이나 후에 본문에서 트랜잭션 상태를 출력하는 TransactionScope로 구성되어 있습니다. 트랜잭션이 롤백되었어도 TransactionScope는 완료될 때까지 실행되며, 본문이 완료될 때까지 워크플로를 중단하지 않습니다. AbortInstanceOnTransactionFailure 속성의 기본값은 true이므로 워크플로가 중단됩니다.

이 샘플을 사용하려면

  1. Visual Studio 2010에서 TransactionRollback.sln 솔루션을 로드합니다.

  2. F6 키를 눌러 솔루션을 빌드합니다.

  3. Ctrl+F5를 눌러 응용 프로그램을 실행합니다.

Ee656553.Important(ko-kr,VS.100).gif 참고:
컴퓨터에 이 샘플이 이미 설치되어 있을 수도 있습니다. 계속하기 전에 다음(기본) 디렉터리를 확인하십시오.

<InstallDrive>:\WF_WCF_Samples

이 디렉터리가 없으면 Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4로 이동하여 WCF(Windows Communication Foundation) 및 WF 샘플을 모두 다운로드하십시오. 이 샘플은 다음 디렉터리에 있습니다.

<InstallDrive>:\WF_WCF_Samples\WF\Scenario\Transactions\TransactionRollback

참고 항목

개념

워크플로 트랜잭션