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>