WF İş Akışları

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

İş Akışı İzleyicisi

Knowledge Base article:

Özet

Windows İş Akışı başarısızlıkları genellikle aşağıdakilerden biri nedeniyle oluşabilir. Etkin uyarılar görünümünün bu hatayla ilişkili bir uyarısı olur. Uyarı bilgileri, hatanın özel nedenini gösterir. Bu izleyici yönetim paketi içeri aktarıldığından beri kırmızı durumda kaldıysa, sistemde yönetim paketi içeri aktarılmadan önce de iş akışı başarsızlıkları olması olasıdır. Bu izlemeyi yeşile çevirmek için lütfen Service Manager konsolundan tüm eski iş akışı başarısızlıklarını yoksayın.

Nedenler

1.WF İş Akışı Başarısız: İş akışı hataları, iş akışının, çalışmasının durmasına neden olan bir sorunla karşılaştığını gösterir. Başarısız bir iş akışı genellikle sorunun bilindiğini gösterir. İş akışları iş akışı hesabının bir etkinliği tamamlamak için gereken izin düzeyine sahip olmaması, kaynakların kullanılamaması, bağlantı sorunları gibi çeşitli nedenlerle başarısız olabilir.

2. WF İş Akışı Gönderilemedi: Bu iş akışı, izleyici barındırıcısı tarafından çalıştırılmak üzere gönderilmemiş.

3. WF İş Akışı Özel Durumu: İş akışı durumu “Başarılı” olarak görünüyor ancak özel bir durumla karşılaşmış. Beklenen sonucun alındığı doğrulanmalıdır; alınmamışsa, iş akışını başlatan eylemin yeniden gerçekleştirilmesi gerekebilir. İş Akışı Kodundaki yazılım hatası, iş akışının başarısız olmasına ve özel bir durum oluşturmasına neden olacak.

4. WF İş Akışı Zaman Aşımı: İş akışı bir etkinliği 25 dakika içinde tamamlamazsa, zaman aşımına uğrar. İş akışı başlatılma veya zamanlanma aşamasında takılmış olabilir ve Service Manager konsolunda, söz konusu iş akışı türünün yönetim/iş akışları/durum görünümünde “Dikkat Gösterilmesi Gerekiyor” sekmesinde görünür. İş akışlarının zaman aşımına uğramasının bir hizmet yeniden başlatılırken çalışma, uzun bir kuyruk veya dönmeleri uzun bir süre alan API çağrıları gibi çeşitli nedenleri vardır.

Çözümler

WF İş Akışı Başarısızsa

WF İş Akışı Gönderilememişse

WF İş Akışı Özel Durumu Varsa

WF İş Akışı Zaman Aşımına Uğramışsa

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>