Przepływy pracy WF

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

Monitor przepływu pracy

Knowledge Base article:

Podsumowanie

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.

Przyczyny

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.

Rozwiązania

W razie niepowodzenia przepływu pracy WF

W razie niepowodzenia przesyłania przepływu pracy WF

W razie wystąpienia wyjątku przepływu pracy WF

W razie przekroczenia limitu czasu przez przepływ pracy 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" 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()) &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>