다음을 통해 공유


WorkflowInstance 클래스

정의

WorkflowInstance 는 워크플로 프로그램을 실행하기 위한 간단한 인스턴스별 런타임입니다. 새 워크플로 인스턴스를 만들거나 기존 인스턴스 상태에서 생성할 수 있습니다. 노출되는 WorkflowInstance.WorkflowInstanceControl API는 더 높은 수준의 작업을 구현할 수 있는 최소 런타임 컨트롤 집합입니다. 이 API 집합은 런타임의 전체 기능 범위를 나타냅니다. WorkflowInstance 는 추상 클래스이며 동기화, 지속성, 추적 및 확장과 같은 호스트 기능을 제공하기 위해 호스트의 추상 메서드 구현을 사용합니다.

public ref class WorkflowInstance abstract
public abstract class WorkflowInstance
type WorkflowInstance = class
Public MustInherit Class WorkflowInstance
상속
WorkflowInstance
파생

설명

WorkflowInstance 는 단일 스레드이며 호스트가 모든 액세스를 동기화한다고 가정합니다. 여러 API를 동시에 호출하려고 하면 throw됩니다 InvalidOperationException .

내부적으로 WorkflowInstance 실행 중 및 일시 중지됨의 두 가지 상태가 있습니다. 런타임이 일시 중지에서 실행으로 전환되도록 하는 유일한 방법은 호출 Run하는 것입니다. 모든 작업(일시 중지 제외)은 런타임이 일시 중지되는 동안에만 수행할 수 있습니다. 런타임은 다음과 같은 상황에서 자발적으로 일시 중지됩니다.

  • 런타임에 심각한 오류가 발생했습니다. 호스트는 (일시 중지됨으로 OnRequestAbort 의 전환을 알리지 않음) 신호를 받은 다음 이를 통해 알림을 받습니다 OnNotifyPaused.

  • 워크플로의 예외가 catch되지 않고 루트를 이스케이프했습니다. 호스트는 메서드를 통해 알림을 받습니다 OnNotifyUnhandledException .

  • 스케줄러에 작업 항목이 부족하여 현재 Idle입니다. 호스트는 메서드를 통해 알림을 받습니다 OnNotifyPaused . 인스턴스가 유휴 상태이거나 인스턴스가 완료되었기 때문에 스케줄러에 작업 항목이 부족할 수 있습니다. State 속성 값을 Controller 사용하여 둘을 구분할 수 있습니다.

호스트는 속성에서 반환된 인스턴스의 WorkflowInstance.WorkflowInstanceControl 메서드를 PauseWhenPersistable 호출 RequestPause 하여 실행 중에서 일시 중지됨 Controller 으로 변경을 요청할 수 있습니다. 이 요청은 호스트가 OnNotify* 또는 OnRequestAbort 일시 중지할 특정 호출의 상관 관계를 시도해서는 안 됨을 의미하는 특정 응답을 갖는 것으로 간주해서는 안 됩니다. 일시 중지 요청에 대한 응답으로 스케줄러에 보류 중인 작업 항목이 있는 동안 런타임이 일시 중지됨 및 호출 OnNotifyPaused 로 전환될 수 있습니다. State 속성 값을 Controller 사용하여 스케줄러에 더 이상 작업이 없는지 아니면 일시 중지 요청에 의해 중단되었는지 확인할 수 있습니다.

RequestPause 속성에서 반환된 WorkflowInstance.WorkflowInstanceControlController 인스턴스의 메서드는 실행 중 상태일 때 WorkflowInstance 호출할 수 있는 유일한 메서드입니다. 다른 모든 메서드는 if 호출을 InvalidOperationException throw합니다. 한 상태에서 다른 상태로 전환하는 방법에 WorkflowInstance 대한 규칙을 감안할 때 실행 중 및 일시 중지에 대한 공용 개념은 다음과 같이 정의될 수 있습니다.

  • 실행 중 - 호출 Run 과 다음 WorkflowInstance.OnNotify*의 상태입니다.

  • 일시 중지됨 - 마지막 WorkflowInstance.OnNotify*와 다음 호출 Run사이의 상태입니다.

생성자

Name Description
WorkflowInstance(Activity, WorkflowIdentity)

지정된 워크플로 정의 및 정의 ID를 WorkflowInstance 사용하여 클래스의 새 인스턴스를 초기화합니다.

WorkflowInstance(Activity)

지정된 워크플로 정의를 사용하여 클래스의 WorkflowInstance 새 인스턴스를 초기화합니다.

속성

Name Description
Controller

WorkflowInstance인스턴스를 WorkflowInstance.WorkflowInstanceControl 가져옵니다.

DefinitionIdentity

의 정의 ID WorkflowInstance를 가져오거나 설정합니다.

HostEnvironment

워크플로 인스턴스의 인수 및 변수에 대한 루트 환경을 가져오거나 설정합니다.

Id

워크플로 인스턴스의 고유 식별자를 가져옵니다.

IsReadOnly

워크플로 인스턴스가 초기화되었는지 여부를 나타내는 값을 가져옵니다.

SupportsInstanceKeys

호스트가 런타임 인스턴스와의 연결을 InstanceKeys 지원하는지 여부를 나타내는 값을 가져옵니다.

SynchronizationContext

워크플로 인스턴스를 SynchronizationContext 예약하는 데 사용되는 값을 가져오거나 설정합니다.

WorkflowDefinition

워크플로 인스턴스의 워크플로 정의를 가져옵니다.

메서드

Name Description
BeginFlushTrackingRecords(TimeSpan, AsyncCallback, Object)

워크플로 런타임에서 보류 중인 추적 레코드를 비동기적으로 추적 참가자에게 보내기 시작하도록 호출됩니다.

DisposeExtensions()

를 구현IDisposable하는 모든 확장에 대해 호출 Dispose() 합니다.

EndFlushTrackingRecords(IAsyncResult)

워크플로 런타임에 의해 호출되어 트랙 작업을 종료합니다.

Equals(Object)

지정된 개체가 현재 개체와 같은지 여부를 확인합니다.

(다음에서 상속됨 Object)
FlushTrackingRecords(TimeSpan)

워크플로 런타임에서 추적 참가자에게 보류 중인 추적 레코드를 보내도록 호출합니다.

GetActivitiesBlockingUpdate(Object, DynamicUpdateMap)

워크플로의 업데이트를 차단하는 활동 목록을 검색합니다.

GetExtension<T>()

지정된 형식의 확장을 반환합니다.

GetExtensions<T>()

지정된 형식에 대해 찾은 모든 확장을 반환합니다.

GetHashCode()

기본 해시 함수로 사용됩니다.

(다음에서 상속됨 Object)
GetType()

현재 인스턴스의 Type 가져옵니다.

(다음에서 상속됨 Object)
Initialize(IDictionary<String,Object>, IList<Handle>)

인수 값 및 실행 속성을 사용하여 워크플로 인스턴스를 초기화하기 위해 호스트에서 호출됩니다.

Initialize(Object, DynamicUpdateMap)

호스트가 워크플로 런타임 상태 및 업데이트 맵을 사용하여 워크플로 인스턴스를 초기화하기 위해 호출합니다.

Initialize(Object)

호스트가 워크플로 런타임 상태로 워크플로 인스턴스를 초기화하기 위해 호출합니다.

MemberwiseClone()

현재 Object단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
OnBeginAssociateKeys(ICollection<InstanceKey>, AsyncCallback, Object)

새 인스턴스 키를 이 인스턴스와 연결해야 한다고 호스트에 알리기 위해 워크플로 런타임에서 호출됩니다.

OnBeginFlushTrackingRecords(AsyncCallback, Object)

호스트에 보류 중인 추적 레코드를 추적 참가자에게 플러시하도록 요청하는 비동기 호출입니다.

OnBeginPersist(AsyncCallback, Object)

호스트에 워크플로를 유지하도록 요청하는 비동기 호출입니다.

OnBeginResumeBookmark(Bookmark, Object, TimeSpan, AsyncCallback, Object)

다시 시작 책갈피 작업이 시작되었음을 호스트에 알리기 위해 워크플로 런타임에서 호출됩니다.

OnDisassociateKeys(ICollection<InstanceKey>)

워크플로 런타임에서 호출하여 특정 인스턴스 키 집합을 이 인스턴스와 더 이상 연결해서는 안 됨을 호스트에 알립니다.

OnEndAssociateKeys(IAsyncResult)

호스트에 연결 키 작업이 완료되었음을 알리기 위해 워크플로 런타임에서 호출됩니다.

OnEndFlushTrackingRecords(IAsyncResult)

플러시 추적 레코드 작업이 완료되면 호스트에 알리기 위해 워크플로 런타임에서 호출됩니다.

OnEndPersist(IAsyncResult)

호스트에 지속 작업이 완료되었음을 알리기 위해 워크플로 런타임에서 호출됩니다.

OnEndResumeBookmark(IAsyncResult)

다시 시작 책갈피 작업이 완료되었음을 호스트에 알리기 위해 워크플로 런타임에서 호출됩니다.

OnNotifyPaused()

워크플로 런타임에서 워크플로 인스턴스가 실행 중 상태에서 일시 중지된 상태로 전환되었음을 호스트에 알리기 위해 호출됩니다.

OnNotifyUnhandledException(Exception, Activity, String)

워크플로 런타임에 의해 호출되어 워크플로 인스턴스에서 처리되지 않은 예외가 발생했음을 호스트에 알립니다.

OnRequestAbort(Exception)

워크플로 런타임에서 워크플로 인스턴스에 대해 중단 작업이 요청되었음을 호스트에 알리기 위해 호출됩니다.

RegisterExtensionManager(WorkflowInstanceExtensionManager)

호스트가 지정된 확장 관리자를 등록하고, 필요한 모든 확장이 있는지 확인하고, 사용할 확장 컬렉션을 초기화하기 위해 호출됩니다.

ThrowIfReadOnly()

InvalidOperationException 에 의해 IsReadOnly결정된 대로 워크플로 인스턴스가 초기화된 경우 throw합니다.

ToString()

현재 개체를 나타내는 문자열을 반환합니다.

(다음에서 상속됨 Object)

적용 대상