다음을 통해 공유


Compensation 샘플

Download sample

보정은 비즈니스 예외에서 비롯된 비즈니스 논리의 실행을 정의합니다. 보정은 비즈니스 프로세스를 모델링하는 워크플로 디자이너의 범위에 속하므로, 보정 트리거는 런타임이 아니라 사용자에 의해 정의됩니다. 런타임은 보정을 정의하는 메커니즘을 제공합니다.

이 샘플에서는 보정되는 작업의 단위가 CompensatableTransactionScopeActivity 활동에 포함되어 있습니다. 그런 다음 보정 작업이 정의되는 이 범위에 대해 CompensationHandlerActivity 활동이 정의됩니다. 범위가 완료된 경우에만 보정될 수 있으므로 범위가 실행을 마친 후에는 ThrowActivity 활동이 예외를 throw합니다. 이 예외는 보정 활동이 포함된 예외 처리기에서 catch합니다. 보정 활동은 런타임이 다음에 실행할 대상 범위를 지정합니다.

이 시나리오에서는 구매 주문이 접수되며 구매자의 신용 카드에서 자금이 인출됩니다. 워크플로에서는 선택한 제품이 공급 가능한지 확인합니다. 공급 가능한 경우 제품이 배송됩니다. 제품이 단종된 경우 DiscontinuedProductException이 throw됩니다. 워크플로 예외 처리기에서 DiscontinuedProductException을 catch합니다. 그런 다음 예외 처리기는 처리기에 포함된 CompensateActivity에서 정의하는 보정 처리기를 트리거합니다. 그러면 보정 처리기가 구매자에게 환불합니다.

샘플은 다음과 같이 출력됩니다.

Compensation 샘플 출력

샘플 사용

이 샘플을 사용하려면 먼저 SQL 유지 데이터베이스를 만들어야 합니다.

SQL 유지 데이터베이스를 만들려면

  1. Microsoft SQL Server 2005 Express, SQL Server 2000 이상 버전 또는 MSDE(SQL Server 2000 Desktop Engine)에서 다음과 같은 SQL 쿼리문을 사용하여 이름이 WorkflowPersistenceStore인 새 데이터베이스를 만듭니다.

    CREATE DATABASE SqlPersistenceService

    참고   워크플로 응용 프로그램에서 SqlTrackingServiceSqlWorkflowPersistenceService를 모두 사용할 경우 유지와 추적 모두에 단일 데이터베이스를 사용하는 것이 좋습니다.

  2. SQL Server 쿼리 분석기 작업 영역의 사용 가능한 데이터베이스 목록에서 1단계에서 만든 데이터베이스를 선택합니다.

  3. 파일 메뉴에서 열기를 클릭하고 SQL 스크립트 %WINDIR%\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL\<language>\SqlPersistence_Schema.sql을 엽니다.

  4. 실행을 클릭하거나 F5 키를 눌러 쿼리를 실행하여 SQL 유지 서비스 표를 만듭니다.

  5. 파일 메뉴에서 열기를 클릭하고 SQL 스크립트 %WINDIR%\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL\<language>\SqlPersistence_Logic.sql을 엽니다.

  6. 실행을 클릭하거나 F5 키를 눌러 쿼리를 실행하여 SQL 유지 서비스 저장 프로시저를 만듭니다.

이 샘플을 빌드하려면

  1. 이 항목에서 샘플 다운로드를 클릭하여 샘플을 다운로드합니다.

    이렇게 하면 샘플 프로젝트가 로컬 하드 디스크에 추출됩니다.

  2. 시작을 클릭하고 프로그램, Microsoft Windows SDK를 차례로 가리킨 다음 CMD 셸을 클릭합니다.

  3. 샘플의 소스 디렉터리로 이동합니다.

  4. 명령 프롬프트에서 **MSBUILD <Solution file name>**을 입력합니다.

이 샘플을 실행하려면

  • SDK 명령 프롬프트 창에서 샘플의 주 폴더 아래에 있는 Compensation\bin\debug 폴더 또는 Compensation\bin 폴더(VB 버전의 샘플의 경우)의 .exe 파일을 실행합니다.

참고 항목

참조

CompensatableTransactionScopeActivity
CompensationHandlerActivity
CodeActivity
FaultHandlerActivity
FaultHandlersActivity
IfElseActivity
IfElseBranchActivity
ThrowActivity

기타 리소스

Using the CompensationHandler Activity
Adding Compensatable Activities and Compensation Handlers
Compensation Overview
활동 샘플
Windows Workflow Foundation 샘플

Footer image

Copyright © 2007 by Microsoft Corporation. All rights reserved.