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)

Значение свойства

Одно из значений перечисления WorkflowStatus или «null» (Nothing в Visual Basic). Значением по умолчанию является «null» (Nothing).

Примеры

Следующий пример иллюстрирует задание свойства «WorkflowStatus». Данный пример является частью примера 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.

Применяется к