다음을 통해 공유


보정

WF의 보정은 이후에 오류가 발생할 경우 응용 프로그램에 정의된 논리에 따라 이전에 완료된 작업을 취소하거나 보정하는 메커니즘입니다. 트랜잭션을 사용하여 여러 작업을 하나의 작업 단위로 결합할 수 있습니다. 트랜잭션을 사용하면 응용 프로그램에서 트랜잭션 프로세스의 일부에서 오류가 발생하는 경우 트랜잭션 내에서 실행된 모든 변경 내용을 중단(롤백)할 수 있습니다. 그러나 작업이 오래 실행되는 경우에는 트랜잭션을 사용하는 방법이 적합하지 않습니다. 예를 들어 여행 계획 응용 프로그램은 워크플로로 구현됩니다. 이 워크플로의 각 단계는 항공권 예약, 관리자 승인 대기, 항공권 결제로 구성될 수 있습니다. 이 과정에 며칠이 걸릴 수도 있으므로 항공권 예약 및 결제 단계를 같은 트랜잭션으로 묶는 방법은 적절하지 않습니다. 이 시나리오에서는 보정을 사용하여 이후 처리 과정에서 오류가 발생하면 워크플로의 예약 단계를 취소할 수 있습니다.

보정 사용

워크플로가 완료되지 못하고 트랜잭션이 부적절할 때 취소하거나 보정되어야 하는 논리를 실행하는 활동이 워크플로에 포함되어 있는 경우 이러한 활동을 CompensableActivity 활동에 배치할 수 있습니다. CompensableActivity 활동에는 BodyConfirmationHandler를 비롯한 여러 자식 활동 섹션이 있습니다. Body 활동은 일반 워크플로 실행 중에 실행되는 보정 가능한 비즈니스 논리 단위를 정의하고 CompensationHandler 활동은 Body에 의해 실행되는 작업을 보정하는 논리 단위를 정의합니다. Compensate 활동을 사용하여 명시적으로 또는 워크플로의 기본 보정 논리를 사용하여 암시적으로 보정을 호출하면 CompensationHandler로 지정된 활동이 실행되어 Body 활동의 동작을 보정합니다. CompensationHandler 활동을 제공하지 않으면 Body에서 실행된 Body에 중첩된 모든 CompensableActivity 활동을 완료의 역순으로 보정하여 기본 보정 논리가 실행됩니다. 보정에 대한 자세한 내용은 보정 프로그래밍 모델을 참조하십시오.

참고 항목

참조

CompensableActivity
Compensate