次の方法で共有


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 の値の 1 つ、または null (Visual Basic の場合は Nothing)。 既定値は null (Nothing) です。

WorkflowStatus プロパティの設定を次の例に示します。 この例は、ワークフロー モニター SDK サンプルです。 詳細については、「 ワークフロー モニターのサンプル」を参照してください。

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 を持つワークフロー インスタンス、WorkflowStatusStatusMinDateTime で指定された期間に StatusMaxDateTime で指定されたステータスを持つワークフロー インスタンス、および TrackingDataItemValue で指定された TrackingDataItems オブジェクトの少なくとも 1 つに一致するデータを抽出したワークフロー インスタンスです。

指定した期間より前または指定した期間中に最後に受け取ったワークフロー インスタンスの 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 オブジェクトが返されます。

適用対象