WF 工作流程

Microsoft.SystemCenter.ServiceManager.WWFWorkflows.Monitor (UnitMonitor)

工作流程監視

Knowledge Base article:

摘要

Windows 工作流程失敗通常是由下列其中一個原因所造成。作用中警示檢視中將會有一個與此失敗相關的警示。警示知識將指出失敗的具體原因。如果從匯入管理組件之後,這個監視一直處於紅色狀態,而且警示檢視中沒有任何警示,表示可能早在匯入管理組件之前,系統就已經發生工作流程失敗。若要讓此監視變成綠色,請略過 Service Manager 主控台中任何舊有的工作流程失敗狀況。

原因

1. WF 工作流程失敗: 工作流程失敗表示工作流程發生造成它停止運作的問題。失敗的工作流程通常代表發生已知問題。工作流程可能會因為許多原因而失敗,例如工作流程帳戶沒有完成活動所需的權限層級、資源無法使用、連線問題等。

2. WF 工作流程提交失敗:此工作流程未提交由監視主機執行。

3. WF 工作流程例外狀況:工作流程狀態顯示為「成功」,但發生例外狀況。您應該確認已取得預期的結果,否則可能必須重複執行啟動工作流程時所執行的動作。工作流程的程式碼中若有軟體錯誤,將導致工作流程失敗並擲回例外狀況。

4. WF 工作流程逾時:如果工作流程沒有在 25 分鐘內完成活動,便會逾時。工作流程可能會停留在啟動或排程階段,而且會出現在該特定工作流程類型的系統管理/工作流程/狀態檢視的 [需要注意] 索引標籤 (可在 Service Manager 主控台中找到) 中。工作流程逾時的原因很多,例如在重新啟動服務時執行、佇列太長,或是 API 傳回的時間較長。

解決方法

若 WF 工作流程失敗,

若 WF 工作流程失敗,

若發生 WF 工作流程例外狀況,

若 WF 工作流程逾時,

Element properties:

TargetMicrosoft.SystemCenter.ServiceManager.SmManagementServer
Parent MonitorMicrosoft.ServiceManager.Workflows.AvailabilityHealthRollup
CategoryAvailabilityHealth
EnabledTrue
Alert GenerateFalse
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SystemCenter.ServiceManager.Workflows.OLEDB.Monitoring.DBProbeMonitorType
RemotableTrue
AccessibilityPublic
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SystemCenter.ServiceManager.WWFWorkflows.Monitor" Accessibility="Public" Enabled="true" Target="SM!Microsoft.SystemCenter.ServiceManager.SmManagementServer" ParentMonitorID="Microsoft.ServiceManager.Workflows.AvailabilityHealthRollup" Remotable="true" Priority="Normal" TypeID="Microsoft.SystemCenter.ServiceManager.Workflows.OLEDB.Monitoring.DBProbeMonitorType" ConfirmDelivery="false">
<Category>AvailabilityHealth</Category>
<OperationalStates>
<OperationalState ID="ComponentUnhealthy" MonitorTypeStateID="State1" HealthState="Warning"/>
<OperationalState ID="ComponentHealthy" MonitorTypeStateID="State2" HealthState="Success"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>60</IntervalSeconds>
<SyncTime/>
<ConnectionString>Provider=SQLOLEDB;Server=$Target/Property[Type='SM!Microsoft.SystemCenter.ServiceManager.SmManagementServer']/SmDbHostName$;Database=$Target/Property[Type='SM!Microsoft.SystemCenter.ServiceManager.SmManagementServer']/SMDbName$;Integrated Security=SSPI</ConnectionString>
<Query>
SELECT CONVERT(nvarchar,COUNT(*))
FROM dbo.WindowsWorkflowTaskJobStatus
LEFT OUTER JOIN dbo.JobStatusView
ON dbo.[JobStatusView].[BatchId] = dbo.[WindowsWorkflowTaskJobStatus].[BatchId]
LEFT OUTER JOIN dbo.MySubscriptions
ON dbo.[WindowsWorkflowTaskJobStatus].[RuleId] = dbo.[MySubscriptions].[RuleEntityId]
WHERE ((
dbo.[WindowsWorkflowTaskJobStatus].[Processed] IS NULL
AND
( (dbo.[WindowsWorkflowTaskJobStatus].[ErrorMessage] IS NOT NULL)
OR (dbo.[JobStatusView].Status = 3)
OR ((dbo.[JobStatusView].Status = 0 OR dbo.[JobStatusView].Status = 1)
AND
(DATEDIFF(MINUTE, dbo.[JobStatusView].TimeScheduled, GETUTCDATE()) &gt;= 25)
)
OR( dbo.[JobStatusView].Status = 2)
OR( dbo.[JobStatusView].Status is NULL)
)
))
</Query>
<State1Filter>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">Columns/Column[1]</XPathQuery>
</ValueExpression>
<Operator>NotEqual</Operator>
<ValueExpression>
<Value Type="String">0</Value>
</ValueExpression>
</SimpleExpression>
</State1Filter>
<State2Filter>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">Columns/Column[1]</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">0</Value>
</ValueExpression>
</SimpleExpression>
</State2Filter>
</Configuration>
</UnitMonitor>