.NET Framework 4.6.1의 워크플로 개발에서는 일부 개발자에게 새로운 개념이 사용됩니다. 이 항목에서는 몇 가지 개념과 구현 방법에 대해 설명합니다.
워크플로 및 활동
워크플로는 프로세스를 모델로 하는 구조적 작업 컬렉션입니다. 워크플로의 각 작업은 활동으로 모델링됩니다. 호스트는 워크플로를 메서드처럼 호출하고, 단일 워크플로 WorkflowInvoker 인스턴스의 실행을 명시적으로 제어하고, WorkflowApplication 다중 인스턴스 시나리오에서 메시지 기반 상호 작용을 위해 워크플로와 WorkflowServiceHost 상호 작용합니다. 워크플로의 단계는 활동의 계층 구조로 정의되기 때문에 계층 구조의 최상위 활동은 워크플로 자체를 정의해야 한다고 할 수 있습니다. 이 계층 구조 모델은 명시적 SequentialWorkflow
및 StateMachineWorkflow
이전 버전의 클래스를 대신합니다. 활동 자체는 다른 활동의 컬렉션으로 개발됩니다. 이는 일반적으로 XAML을 사용하여 정의된 Activity 클래스를 기반으로 하거나, 사용자 정의 생성 시 CodeActivity 클래스를 사용하여 데이터 액세스를 위한 런타임을 활용하거나, NativeActivity 클래스를 사용하여 워크플로 런타임의 폭을 활동 작성자에게 노출할 수 있습니다. C#과 같은 CLR 규격 언어로 CodeActivity 및 NativeActivity를 사용하여 개발되고 생성된 활동은.
활동 데이터 모델
활동은 다음 표에 표시된 형식을 사용하여 데이터를 저장하고 공유합니다.
유형 | 설명 |
---|---|
변수 | 활동 내에 데이터를 저장합니다. |
논쟁 | 활동 내부 및 외부로 데이터를 이동합니다. |
표현 | 인수 바인딩에 사용되는 상승된 반환 값이 있는 작업입니다. |
워크플로 런타임
워크플로 런타임은 워크플로가 실행되는 환경입니다. WorkflowInvoker 는 워크플로를 실행하는 가장 간단한 방법입니다. 호스트는 다음 항목에 WorkflowInvoker를 사용합니다.
워크플로를 동기적으로 호출하려면
워크플로에 입력을 제공하거나 워크플로에서 출력을 검색하려면
활동에서 사용할 확장을 추가합니다.
ActivityInstance 는 호스트가 런타임과 상호 작용하는 데 사용할 수 있는 스레드로부터 안전한 프록시입니다. 호스트는 다음 항목에 ActivityInstance를 사용합니다.
인스턴스를 만들거나 인스턴스 저장소에서 로드하여 인스턴스를 획득합니다.
인스턴스 수명 주기 이벤트에 대한 알림을 받습니다.
워크플로 실행을 제어합니다.
워크플로에 입력을 제공하거나 워크플로에서 출력을 검색하려면
워크플로 연속을 알리고 워크플로에 값을 전달합니다.
워크플로 데이터를 유지하려면
활동에서 사용할 확장을 추가합니다.
활동은 다음과 같은 ActivityContextNativeActivityContext적절한 CodeActivityContext 파생 클래스를 사용하여 워크플로 런타임 환경에 액세스할 수 있습니다. 인수 및 변수 확인, 자식 활동 예약 및 기타 여러 용도로 이 함수를 사용합니다.
서비스
워크플로는 메시징 활동을 사용하여 느슨하게 결합된 서비스를 구현하고 액세스하는 자연스러운 방법을 제공합니다. 메시징 활동은 WCF를 기반으로 하며 워크플로 내/외부로 데이터를 가져오는 데 사용되는 기본 메커니즘입니다. 메시지 활동을 함께 작성하여 원하는 모든 종류의 메시지 교환 패턴을 모델링할 수 있습니다. 자세한 내용은 메시징 활동을 참조하세요. 워크플로 서비스는 클래스를 WorkflowServiceHost 사용하여 호스트됩니다. 자세한 내용은 호스팅 워크플로 서비스 개요를 참조하세요. 워크플로 서비스에 대한 자세한 내용은 Workflow Services를 참조하세요.
지속성, 언로드 및 Long-Running 워크플로
Windows 워크플로는 다음을 제공하여 장기 실행 반응형 프로그램의 작성을 간소화합니다.
외부 입력에 액세스하는 활동입니다.
호스트 수신기에서 재개할 수 있는 객체를 생성하는 Bookmark 기능입니다.
워크플로의 데이터를 보관하고 워크플로를 언로드한 다음 특정 워크플로에서 개체 다시 시작 Bookmark 에 대한 응답으로 워크플로를 다시 로드하고 다시 활성화하는 기능입니다.
워크플로는 실행할 활동이 더 이상 없거나 현재 실행 중인 모든 활동이 입력을 대기할 때까지 작업을 계속 실행합니다. 이 후자의 상태에서 워크플로는 유휴 상태입니다. 호스트는 유휴 상태로 전환된 워크플로를 언로드하고 메시지가 도착하면 실행을 계속하기 위해 워크플로를 다시 로드하는 것이 일반적입니다. WorkflowServiceHost 는 이 기능에 대한 기능을 제공하고 확장 가능한 언로드 정책을 제공합니다. 일시적 상태 데이터 또는 유지할 수 없는 다른 데이터를 사용하는 실행 블록의 경우 작업은 호스트에 해당 데이터를 사용하여 NoPersistHandle유지해서는 안 됨을 나타낼 수 있습니다. 워크플로는 Persist 활동을 사용하여 데이터를 내구성 있는 스토리지 매체에 명시적으로 저장할 수도 있습니다.
.NET