工作流程監視
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>