工作流程監視器
Windows 工作流程的失敗通常為下列原因之一所導致。作用中警示檢視將會顯示與此失敗相關聯的警示。警示資訊會指出失敗的特定原因。若此監視器自管理組件匯入之後即呈現紅色狀態,但 [警示] 檢視中未顯示警示,有可能是在管理組件匯入之前,系統中即發生過工作流程失敗。若要讓此監視器轉變為綠色,可忽略 Service Manager 主控台中所有的舊工作流程失敗。
1. WF 工作流程失敗: 工作流程失敗表示工作流程發生問題,導致其停止運作。工作流程失敗通常意味著已知問題。工作流程可能因為多種原因而失敗,例如工作流程帳戶不具完成活動所需的權限等級、資源無法使用、連線能力問題等等。
2. WF 工作流程提交失敗: 未提交此工作流程由監視主機執行。
3. WF 工作流程例外狀況: 工作流程狀態顯示為 [成功],但發生例外狀況。確認已獲得預期的結果,否則可能需要重新執行啟動工作流程的動作。工作流程程式碼中的軟體錯誤將導致其失敗,並擲回例外狀況。
4. WF 工作流程逾時: 若工作流程未在 25 分鐘之內完成活動,便會逾時。工作流程可能會卡在啟動完成或排程完成階段,並會出現在 Service Manager 主控台中,該特定工作流程類型之 [管理/工作流程/狀態] 檢視的 [需要注意] 索引標籤之中。工作流程可能因為多種原因而逾時,例如服務重新啟動時正在執行中、佇列太長,或 API 花了太長的時間傳回。
WF 工作流程失敗:
失敗的 WF 工作流程將會顯示在 Service Manager 主控台中,特定工作流程類型之 [管理/工作流程/狀態] 檢視的 [需要注意] 索引標籤下方。
按 [檢視記錄檔] 開啟記錄檔,從而取得工作流程失敗原因的資訊。
嘗試更正問題,然後按 [重試],以重新執行工作流程。
若問題持續發生,請嘗試重新啟動 Service Manager 管理伺服器上的健全狀況服務。
若已手動解決問題,請按 [忽略] 按鈕,從 [需要注意] 檢視中移除該工作流程。
WF 工作流程提交失敗:
重新啟動 Service Manager 管理伺服器上的健全狀況服務。
WF 工作流程例外狀況:
若工作流程已完成,且狀態為「成功」但未完成預定的工作,請手動重建先前啟動工作流程之環境的步驟。
工作流程將出現在 Service Manager 主控台之 [管理] 窗格的 [工作流程狀態] 檢視中。
WF 工作流程逾時:
逾時的 WF 工作流程將會顯示在 Service Manager 主控台中,特定工作流程類型之 [管理/工作流程/狀態] 檢視的 [需要注意] 索引標籤下方。嘗試重新執行該工作流程。若已手動修正問題,請按 [忽略]。
若工作流程卡在停止執行的狀態,請重新啟動管理伺服器上的健全狀況服務,嘗試重新啟動佇列中的所有工作流程。
Target | Microsoft.SystemCenter.ServiceManager.SmManagementServer |
Parent Monitor | Microsoft.ServiceManager.Workflows.AvailabilityHealthRollup |
Category | AvailabilityHealth |
Enabled | True |
Alert Generate | False |
Alert Auto Resolve | True |
Monitor Type | Microsoft.SystemCenter.ServiceManager.Workflows.OLEDB.Monitoring.DBProbeMonitorType |
Remotable | True |
Accessibility | Public |
RunAs | Default |
<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()) >= 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>