Monitor przepływu pracy
Zazwyczaj awarie programu Windows Workflow mogą występować z jednej z następujących przyczyn. Widok aktywnych alertów będzie miał alert skojarzony z tą awarią. Informacje o alercie będą wskazywać konkretną przyczynę awarii. Jeśli ten monitor był czerwony od chwili zaimportowania pakietu administracyjnego i w widoku alertów nie ma alertów, istnieje możliwość, że wystąpiły błędy przepływów roboczych istniejących w systemie jeszcze zanim pakiet administracyjny został zaimportowany. Aby zmienić kolor tego monitora na zielony, zignoruj wszystkie stare błędy przepływu pracy na konsoli programu Service Manager.
1. Niepowodzenie przepływu pracy WF: Niepowodzenia przepływu pracy wskazują, że przepływ pracy napotkał problem, który spowodował przerwanie jego działania. Niepoprawny przepływ pracy zazwyczaj wskazuje, że problem jest znany. Przepływy pracy mogą zakończyć się niepowodzeniem z wielu przyczyn, takich jak brak niezbędnego poziomu uprawnień do ukończenia działania dla konta przepływu pracy, niedostępność zasobów, problemy z łącznością itd…
2. Niepowodzenie przesyłania przepływu pracy WF: Ten przepływ pracy nie został przesłany do uruchomienia na hoście monitorowania.
3. Wyjątek przepływu pracy WF: Stan przepływu pracy jest wyświetlany jako Powodzenie, ale ma wyjątek. Należy potwierdzić, że został uzyskany oczekiwany wynik, a jeśli nie, może się okazać konieczne powtórzenie czynności wykonanej w celu uruchomienia przepływu pracy. Błąd programowy w kodzie przepływu pracy spowoduje jego niepowodzenie i zgłoszenie wyjątku.
4. Przekroczenie limitu czasu przez przepływ pracy WF: Jeśli przepływ pracy nie zostanie zakończony w ciągu 25 minut, nastąpi przekroczenie limitu czasu. Przepływ pracy może się zablokować w fazie uruchamiania lub planowania i zostanie wyświetlony na karcie Wymaga uwagi w konsoli programu Service Manager, w widoku administrowania/przepływu pracy/stanu dla danego typu przepływu pracy. Istnieje wiele przyczyn przekroczenia limitu czasu przez przepływ pracy, takich jak działanie w chwili ponownego uruchomienia usługi, długa kolejka lub interfejsy API mające długie czasy powrotu.
W razie niepowodzenia przepływu pracy WF
Przepływy prac WF, które zakończyły się niepowodzeniem, będą wyświetlane w konsoli programu Service Manager na karcie Wymaga uwagi w widoku administrowania/przepływów pracy/stanu dla danego typu przepływu pracy.
Otwórz dziennik, naciskając przycisk Wyświetl dziennik, aby uzyskać informacje o przyczynie błędu przepływu pracy.
Spróbuj usunąć problem, a następnie naciśnij przycisk Ponów próbę, aby ponownie uruchomić przepływ pracy.
Jeśli problem nie zniknie, spróbuj ponownie uruchomić usługę badania kondycji na serwerze zarządzania programu Service Manager.
Jeśli problem zostanie usunięty, naciśnij przycisk Ignoruj, aby usunąć przepływy pracy z widoku Wymaga uwagi.
W razie niepowodzenia przesyłania przepływu pracy WF
Ponownie uruchom usługę badania kondycji na serwerze zarządzania programu Service Manager.
W razie wystąpienia wyjątku przepływu pracy WF
Wykonaj ręcznie kroki mające na celu stworzenie warunków, które uruchomiły przepływ pracy, jeśli przepływ pracy został ukończony jako Powodzenie, ale nie wykonał zamierzonego zadania.
Przepływ pracy pojawi się w widoku Stan przepływu pracy w okienku administrowania konsoli programu Service Manager.
W razie przekroczenia limitu czasu przez przepływ pracy WF
Przepływy prac WF, które przekroczyły limit czasu, będą wyświetlane w konsoli programu Service Manager na karcie Wymaga uwagi w widoku administrowania/przepływów pracy/stanu dla danego typu przepływu pracy. Ponów przepływy pracy, aby spróbować ponownie je uruchomić, lub naciśnij przycisk Ignoruj, jeśli problem został usunięty ręcznie.
Jeśli przepływy pracy zostaną zablokowane w stanie, gdy nie działają, ponownie uruchom usługę badania kondycji na serwerze zarządzania i spróbuj ponownie uruchomić wszystkie znajdujące się w kolejce przepływy pracy.
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" TypeID="Microsoft.SystemCenter.ServiceManager.Workflows.OLEDB.Monitoring.DBProbeMonitorType" Accessibility="Public" Target="SM!Microsoft.SystemCenter.ServiceManager.SmManagementServer" ParentMonitorID="Microsoft.ServiceManager.Workflows.AvailabilityHealthRollup">
<Category>AvailabilityHealth</Category>
<OperationalStates>
<OperationalState MonitorTypeStateID="State1" HealthState="Warning" ID="ComponentUnhealthy"/>
<OperationalState MonitorTypeStateID="State2" HealthState="Success" ID="ComponentHealthy"/>
</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>