StateMachineWorkflowActivity.DynamicUpdateCondition 屬性
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得或設定 ActivityCondition,判斷在衍生類別中覆寫時,是否可對工作流程動態更新。
public:
property System::Workflow::ComponentModel::ActivityCondition ^ DynamicUpdateCondition { System::Workflow::ComponentModel::ActivityCondition ^ get(); void set(System::Workflow::ComponentModel::ActivityCondition ^ value); };
public System.Workflow.ComponentModel.ActivityCondition DynamicUpdateCondition { get; set; }
member this.DynamicUpdateCondition : System.Workflow.ComponentModel.ActivityCondition with get, set
Public Property DynamicUpdateCondition As ActivityCondition
屬性值
識別何時可進行動態更新的 ActivityCondition。
範例
下列範例會示範如何設定 DynamicUpdateCondition
屬性。 這個範例來自<訂購狀態機器 SDK>範例。 如需詳細資訊,請參閱 排序狀態機器範例。
internal List<SqlTrackingWorkflowInstance> GetWorkflows(string workflowEvent, DateTime from, DateTime until, TrackingDataItemValue trackingDataItemValue)
{
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);
}
}
Friend Function GetWorkflows( _
ByVal workflowEvent As String, _
ByVal from As System.DateTime, _
ByVal until As DateTime, _
ByVal trackingDataItemValue As TrackingDataItemValue) _
As List(Of SqlTrackingWorkflowInstance)
Try
Dim queriedWorkflows As List(Of SqlTrackingWorkflowInstance) = New List(Of SqlTrackingWorkflowInstance)()
Dim sqlTrackingQuery As SqlTrackingQuery = New SqlTrackingQuery(connectionString)
Dim sqlTrackingQueryOptions As 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 (Not ((trackingDataItemValue.QualifiedName = String.Empty) Or (trackingDataItemValue.FieldName = String.Empty) Or ((trackingDataItemValue.DataValue = String.Empty)))) Then
sqlTrackingQueryOptions.TrackingDataItems.Add(trackingDataItemValue)
End If
queriedWorkflows.Clear()
If (workflowEvent.ToLower(CultureInfo.InvariantCulture) = "created") Then
sqlTrackingQueryOptions.WorkflowStatus = System.Workflow.Runtime.WorkflowStatus.Created
queriedWorkflows.AddRange(sqlTrackingQuery.GetWorkflows(sqlTrackingQueryOptions))
ElseIf (workflowEvent.ToLower(CultureInfo.InvariantCulture) = "completed") Then
sqlTrackingQueryOptions.WorkflowStatus = System.Workflow.Runtime.WorkflowStatus.Completed
queriedWorkflows.AddRange(sqlTrackingQuery.GetWorkflows(sqlTrackingQueryOptions))
ElseIf (workflowEvent.ToLower(CultureInfo.InvariantCulture) = "running") Then
sqlTrackingQueryOptions.WorkflowStatus = System.Workflow.Runtime.WorkflowStatus.Running
queriedWorkflows.AddRange(sqlTrackingQuery.GetWorkflows(sqlTrackingQueryOptions))
ElseIf (workflowEvent.ToLower(CultureInfo.InvariantCulture) = "suspended") Then
sqlTrackingQueryOptions.WorkflowStatus = System.Workflow.Runtime.WorkflowStatus.Suspended
queriedWorkflows.AddRange(sqlTrackingQuery.GetWorkflows(sqlTrackingQueryOptions))
ElseIf (workflowEvent.ToLower(CultureInfo.InvariantCulture) = "terminated") Then
sqlTrackingQueryOptions.WorkflowStatus = System.Workflow.Runtime.WorkflowStatus.Terminated
queriedWorkflows.AddRange(sqlTrackingQuery.GetWorkflows(sqlTrackingQueryOptions))
ElseIf ((workflowEvent = Nothing) Or _
(workflowEvent.ToLower(CultureInfo.InvariantCulture) = "all") Or _
(workflowEvent = String.Empty)) Then
sqlTrackingQueryOptions.WorkflowStatus = System.Workflow.Runtime.WorkflowStatus.Created
queriedWorkflows.AddRange(sqlTrackingQuery.GetWorkflows(sqlTrackingQueryOptions))
sqlTrackingQueryOptions.WorkflowStatus = System.Workflow.Runtime.WorkflowStatus.Completed
queriedWorkflows.AddRange(sqlTrackingQuery.GetWorkflows(sqlTrackingQueryOptions))
sqlTrackingQueryOptions.WorkflowStatus = System.Workflow.Runtime.WorkflowStatus.Running
queriedWorkflows.AddRange(sqlTrackingQuery.GetWorkflows(sqlTrackingQueryOptions))
sqlTrackingQueryOptions.WorkflowStatus = System.Workflow.Runtime.WorkflowStatus.Suspended
queriedWorkflows.AddRange(sqlTrackingQuery.GetWorkflows(sqlTrackingQueryOptions))
sqlTrackingQueryOptions.WorkflowStatus = System.Workflow.Runtime.WorkflowStatus.Terminated
queriedWorkflows.AddRange(sqlTrackingQuery.GetWorkflows(sqlTrackingQueryOptions))
End If
Return queriedWorkflows
Catch exception As Exception
'Dim errorMessage As String = "Exception in GetWorkflows" + vbCrLf + "Database: " + databaseName + vbCrLf + "Server: " + serverName
Throw (New Exception("Exception in GetWorkflows", exception))
End Try
End Function