Share via


SqlTrackingQueryOptions.WorkflowStatus 속성

정의

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)

속성 값

Nullable<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);
}

설명

SqlTrackingQueryOptionsSqlTrackingWorkflowInstance 호출에서 반환되는 SqlTrackingQuery.GetWorkflows 개체 집합을 Type에 지정된 WorkflowType이고, WorkflowStatusStatusMinDateTime에 지정된 기간 중에 StatusMaxDateTime에 지정된 상태가 있고, TrackingDataItemValue에 지정된 TrackingDataItems 개체 중 하나 이상과 일치하는 추출된 데이터가 있는 워크플로 인스턴스로 제한합니다.

지정된 기간 중이나 그 이전에 워크플로 인스턴스에 대해 받은 마지막 WorkflowStatusWorkflowTrackingRecord 속성이 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 개체가 반환됩니다.

적용 대상