SqlTrackingQueryOptions.WorkflowStatus 속성
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
WorkflowStatus 호출에서 반환되는 SqlTrackingWorkflowInstance 개체 집합을 제한하는 데 사용되는 GetWorkflows(SqlTrackingQueryOptions) 값을 가져오거나 설정합니다.
public:
property Nullable<System::Workflow::Runtime::WorkflowStatus> WorkflowStatus { Nullable<System::Workflow::Runtime::WorkflowStatus> get(); void set(Nullable<System::Workflow::Runtime::WorkflowStatus> value); };
public System.Workflow.Runtime.WorkflowStatus? WorkflowStatus { get; set; }
member this.WorkflowStatus : Nullable<System.Workflow.Runtime.WorkflowStatus> with get, set
Public Property WorkflowStatus As Nullable(Of WorkflowStatus)
속성 값
WorkflowStatus 값 중 하나이거나 null(Visual Basic의 경우 Nothing
)입니다. 기본값은 null(Nothing
)입니다.
예제
다음 예제에서는 WorkflowStatus 속성을 설정하는 방법을 보여 줍니다. 이 예제는 Workflow Monitor SDK 샘플에 포함되어 있습니다. 자세한 내용은 Workflow Monitor 샘플합니다.
try
{
List<SqlTrackingWorkflowInstance> queriedWorkflows = new List<SqlTrackingWorkflowInstance>();
SqlTrackingQuery sqlTrackingQuery = new SqlTrackingQuery(connectionString);
SqlTrackingQueryOptions sqlTrackingQueryOptions = new SqlTrackingQueryOptions();
sqlTrackingQueryOptions.StatusMinDateTime = from.ToUniversalTime();
sqlTrackingQueryOptions.StatusMaxDateTime = until.ToUniversalTime();
// If QualifiedName, FieldName, or DataValue is not supplied, we will not query since they are all required to match
if (!((string.Empty == trackingDataItemValue.QualifiedName) || (string.Empty == trackingDataItemValue.FieldName) || ((string.Empty == trackingDataItemValue.DataValue))))
sqlTrackingQueryOptions.TrackingDataItems.Add(trackingDataItemValue);
queriedWorkflows.Clear();
if ("created" == workflowEvent.ToLower(CultureInfo.InvariantCulture))
{
sqlTrackingQueryOptions.WorkflowStatus = WorkflowStatus.Created;
queriedWorkflows.AddRange(sqlTrackingQuery.GetWorkflows(sqlTrackingQueryOptions));
}
else if ("completed" == workflowEvent.ToLower(CultureInfo.InvariantCulture))
{
sqlTrackingQueryOptions.WorkflowStatus = WorkflowStatus.Completed;
queriedWorkflows.AddRange(sqlTrackingQuery.GetWorkflows(sqlTrackingQueryOptions));
}
else if ("running" == workflowEvent.ToLower(CultureInfo.InvariantCulture))
{
sqlTrackingQueryOptions.WorkflowStatus = WorkflowStatus.Running;
queriedWorkflows.AddRange(sqlTrackingQuery.GetWorkflows(sqlTrackingQueryOptions));
}
else if ("suspended" == workflowEvent.ToLower(CultureInfo.InvariantCulture))
{
sqlTrackingQueryOptions.WorkflowStatus = WorkflowStatus.Suspended;
queriedWorkflows.AddRange(sqlTrackingQuery.GetWorkflows(sqlTrackingQueryOptions));
}
else if ("terminated" == workflowEvent.ToLower(CultureInfo.InvariantCulture))
{
sqlTrackingQueryOptions.WorkflowStatus = WorkflowStatus.Terminated;
queriedWorkflows.AddRange(sqlTrackingQuery.GetWorkflows(sqlTrackingQueryOptions));
}
else if (("all" == workflowEvent.ToLower(CultureInfo.InvariantCulture)) || string.IsNullOrEmpty(workflowEvent))
{
sqlTrackingQueryOptions.WorkflowStatus = WorkflowStatus.Created;
queriedWorkflows.AddRange(sqlTrackingQuery.GetWorkflows(sqlTrackingQueryOptions));
sqlTrackingQueryOptions.WorkflowStatus = WorkflowStatus.Completed;
queriedWorkflows.AddRange(sqlTrackingQuery.GetWorkflows(sqlTrackingQueryOptions));
sqlTrackingQueryOptions.WorkflowStatus = WorkflowStatus.Running;
queriedWorkflows.AddRange(sqlTrackingQuery.GetWorkflows(sqlTrackingQueryOptions));
sqlTrackingQueryOptions.WorkflowStatus = WorkflowStatus.Suspended;
queriedWorkflows.AddRange(sqlTrackingQuery.GetWorkflows(sqlTrackingQueryOptions));
sqlTrackingQueryOptions.WorkflowStatus = WorkflowStatus.Terminated;
queriedWorkflows.AddRange(sqlTrackingQuery.GetWorkflows(sqlTrackingQueryOptions));
}
return queriedWorkflows;
}
catch (Exception exception)
{
throw new Exception("Exception in GetWorkflows", exception);
}
설명
SqlTrackingQueryOptions는 SqlTrackingWorkflowInstance 호출에서 반환되는 SqlTrackingQuery.GetWorkflows 개체 집합을 Type에 지정된 WorkflowType이고, WorkflowStatus 및 StatusMinDateTime에 지정된 기간 중에 StatusMaxDateTime에 지정된 상태가 있고, TrackingDataItemValue에 지정된 TrackingDataItems 개체 중 하나 이상과 일치하는 추출된 데이터가 있는 워크플로 인스턴스로 제한합니다.
지정된 기간 중이나 그 이전에 워크플로 인스턴스에 대해 받은 마지막 WorkflowStatus의 WorkflowTrackingRecord 속성이 WorkflowTrackingRecord.TrackingWorkflowEvent에 지정된 TrackingWorkflowEvent 값으로 매핑되는 System.Workflow.Runtime.WorkflowStatus 값으로 설정되어 있으면 워크플로 인스턴스는 WorkflowStatus와 일치하는 상태인 것으로 간주됩니다. 따라서 워크플로 인스턴스의 TrackingProfile에 해당 WorkflowTrackPoint 값에 대해 구성된 System.Workflow.Runtime.Tracking.TrackingWorkflowEvent가 있어야 합니다. 워크플로 추적 레코드에 포함되어 전송된 TrackingWorkflowEvent 값만 일치시킬 수 있습니다. 워크플로 인스턴스에 대해 전송된 워크플로 추적 레코드가 없으면 워크플로 인스턴스는 WorkflowStatus.Created 상태인 것으로 간주됩니다.
다음 표에서는 TrackingWorkflowEvent 값과 WorkflowStatus 값 간의 매핑을 보여 줍니다.
TrackingWorkflowEvent 값 | WorkflowStatus 값 |
---|---|
Aborted | Running |
Changed | Running |
Completed | Completed |
Created | Created |
Exception | Running |
Idle | Running |
Loaded | Running |
Persisted | Running |
Resumed | Running |
Started | Running |
Suspended | Suspended |
Terminated | Terminated |
Unloaded | Running |
WorkflowStatus가 null(Nothing
)이면 반환되는 SqlTrackingWorkflowInstance 개체 집합이 상태로 제한되지 않습니다. 즉, SqlTrackingWorkflowInstance의 다른 속성에 지정된 매개 변수와 일치하는 모든 워크플로 인스턴스에 대해 SqlTrackingQueryOptions 개체가 반환됩니다.
적용 대상
.NET