워크플로에서 워크플로 변경 사용
워크플로 변경을 통해 워크플로의 실행 중인 인스턴스를 런타임에 변경할 수 있습니다. 이러한 변경은 디자인 타임에서의 누락, 활동의 바인딩과 속성에 대한 변경 또는 비즈니스 프로세스를 향상시키고 더욱 완전하게 모델링하는 비즈니스 논리에 대한 필요성으로 인해 발생할 수 있습니다. 워크플로 변경은 전체적으로 변경하여 원래 디자인 원칙과 크게 다른 워크플로를 생성하려는 경우에는 적합하지 않습니다. 이와 같은 경우에는 실행 중인 인스턴스를 변경하는 대신 새 워크플로를 디자인해야 합니다.
워크플로 변경은 워크플로의 단일 인스턴스에 적용되며 주어진 워크플로 형식의 모든 실행 중인 인스턴스와 이후 인스턴스에 복제되는 형식 기반 변경을 지원하지 않습니다.
워크플로 변경을 사용하여 다음을 수행할 수 있습니다.
활동의 추가 또는 제거와 같은 워크플로 구조 변경
흐름 제어 변경
일반적인 워크플로 변경의 예는 다음과 같습니다.
PolicyActivity 활동이 사용하는 RuleSet을 변경합니다.
RuleCondition 정의를 업데이트하여 ConditionedActivityGroup 및 IfElseActivity와 같은 분기 활동의 동작을 변경합니다.
워크플로를 배포하고 실행을 시작한 후 워크플로에 새 비즈니스 프로세스를 추가해야 하면 새 사용자 지정 활동이나 InvokeWorkflowActivity 활동을 추가합니다.
작성자는 워크플로 외부에서 워크플로 마크업을 선언적으로 사용하여 변경하며 업데이트된 마크업을 변경을 위한 매개 변수로 사용합니다.
추가 승인 단계와 같은 새 이벤트에 응답하기 위해 새 EventDrivenActivity 활동을 추가합니다.
실행 중인 워크플로에 워크플로 변경을 적용하는 작업은 두 가지 진입점인 워크플로 코드 파일과 워크플로 외부(예: 워크플로 호스트)에서 발생할 수 있습니다. 워크플로 변경의 적용에 대한 자세한 내용은 방법: 워크플로에 워크플로 변경 적용을 참조하십시오.
워크플로 변경에 대한 제한 사항
Windows Workflow Foundation에서 적용되는 워크플로 변경에 대한 다음과 같은 몇 가지 제한 사항을 알아두어야 합니다.
워크플로 인스턴스에서 활동을 추가하거나 제거할 수 있지만 기존 활동에 대한 속성은 선언적 규칙 조건이나 규칙 집합이 아닌 경우 변경할 수 없습니다.
자식 활동을 정의의 일부로 통합하는 사용자 지정 복합 활동 형식에서는 자식 활동이 동적으로 추가되거나 제거될 수 없습니다. 그 이유는 이와 같은 사용자 지정 복합 활동이 "블랙 박스" 활동이므로 기본적으로 런타임에 수정될 수 없기 때문입니다.
Initialized 또는 Closed 상태가 아닌 활동은 런타임에 동적으로 제거할 수 없습니다.
워크플로 개발자는 워크플로 런타임에서 워크플로 변경이 특정 워크플로 인스턴스에 허용되는지 여부를 결정하는 데 사용되며 워크플로의 루트 활동에 연결된 ActivityCondition을 통해 워크플로 변경의 사용을 제한할 수 있습니다.
사용자 지정 복합 활동은 자식 활동의 추가 또는 제거와 같은 제안된 변경의 유효성을 검사할 수 있습니다. 이를 통해 활동 개발자는 제안된 워크플로 변경이 해당 활동의 의도된 기능과 충돌하는지 확인할 수 있습니다. 이 기능은 개발자가 ValidateActivityChange 메서드를 재정의하고 사용자 지정 워크플로 변경 유효성 검사 논리를 추가할 수 있는 사용자 지정 ActivityValidator를 통해 제공됩니다.
참고 항목
개념
기타 리소스
Copyright © 2007 by Microsoft Corporation. All rights reserved.