SqlTrackingQueryOptions.WorkflowStatus Proprietà

Definizione

Ottiene o imposta il valore WorkflowStatus utilizzato per applicare un vincolo al set di oggetti SqlTrackingWorkflowInstance restituito da una chiamata a 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)

Valore della proprietà

Nullable<WorkflowStatus>

Uno dei valori WorkflowStatus o null (Nothing in Visual Basic). Il valore predefinito è null (Nothing).

Esempio

Nell'esempio seguente viene illustrata l'impostazione della proprietà WorkflowStatus. Questo esempio è tratto dall'esempio SDK Workflow Monitor. Per altre informazioni, vedere Esempio di Monitoraggio del flusso di lavoro.

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

Commenti

SqlTrackingQueryOptions applica un vincolo al set di oggetti SqlTrackingWorkflowInstance restituito da una chiamata a SqlTrackingQuery.GetWorkflows a quelle istanze di flusso di lavoro il cui Type è specificato mediante WorkflowType, il cui stato è specificato da WorkflowStatus durante il periodo specificato da StatusMinDateTime e StatusMaxDateTime, e che dispongono di dati estratti corrispondenti ad almeno uno degli oggetti TrackingDataItemValue specificati da TrackingDataItems.

A workflow instance is considered to have a status that matches WorkflowStatus if the last WorkflowTrackingRecord received for that workflow instance before or during the specified time period has its WorkflowTrackingRecord.TrackingWorkflowEvent property set to a TrackingWorkflowEvent value that maps to the System.Workflow.Runtime.WorkflowStatus value specified by WorkflowStatus. Pertanto, il TrackingProfile del WorkflowTrackPoint per l'istanza del flusso di lavoro deve essere configurato per il valore System.Workflow.Runtime.Tracking.TrackingWorkflowEvent appropriato. È possibile trovare una corrispondenza solo per i valori TrackingWorkflowEvent inviati nei record di rilevamento del flusso di lavoro. Se nessun record di rilevamento del flusso di lavoro è stato inviato per l'istanza del flusso di lavoro, si considera che l'istanza del flusso di lavoro abbia lo stato impostato su WorkflowStatus.Created.

Nella tabella seguente viene descritta il mapping tra i valori TrackingWorkflowEvent e i valori WorkflowStatus.

Valore TrackingWorkflowEvent Valore 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

Se WorkflowStatus è null (Nothing), il set di oggetti SqlTrackingWorkflowInstance restituito non sarà vincolato dallo stato; in altre parole, un oggetto SqlTrackingWorkflowInstance verrà restituito per tutte le istanze del flusso di lavoro che corrispondono ai parametri specificati da altre proprietà di SqlTrackingQueryOptions.

Si applica a