Fluxos de Trabalho de WF

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

Monitor de Fluxo de Trabalho

Knowledge Base article:

Resumo

Em geral, falhas de Fluxo de Trabalho do Windows podem ocorrer por um dos motivos a seguir. A exibição de alertas ativos terá um alerta associado a essa falha. O conhecimento do alerta indicará a causa específica da falha. Se o monitor ficou vermelho desde que o pacote de gerenciamento foi importado e nenhum alerta é mostrado na exibição de alertas, é possível que tenham ocorrido falhas nos fluxos de trabalho existentes no sistema antes da importação do pacote de gerenciamento. Para deixar o monitor verde, ignore todas as falhas de fluxo de trabalho antigas no console do Service Manager.

Causas

1. Falha no Fluxo de Trabalho de WF: Falhas de fluxo de trabalho indicam que o fluxo de trabalho encontrou um problema que fez com que ele parasse de funcionar. Um fluxo de trabalho com falha geralmente indica que o problema é conhecido. Fluxos de trabalho podem falhar por infinitas razões, tais como a conta do fluxo de trabalho não ter o nível necessário de permissões para concluir uma atividade, recursos não disponíveis, problemas de conectividade, etc...

2. Falha no Envio de Fluxo de Trabalho de WF: Esse fluxo de trabalho não foi enviado para ser executado pelo host de monitoramento.

3. Exceção de Fluxo de Trabalho de WF: O status do fluxo de trabalho é mostrado como "Êxito", porém encontrou uma exceção. Confirme se o resultado esperado foi obtido, caso contrário, a ação que foi realizada para iniciar o fluxo de trabalho pode precisar ser repetida. Erro de software no código do fluxo de trabalho causará essa falha e gerará uma exceção.

4. Tempo Limite do Fluxo de Trabalho de WF: Se um fluxo de trabalho não concluir uma atividade dentro de 25 minutos, o tempo limite será atingido. O fluxo de trabalho pode estar preso na fase iniciada ou agendada, e aparecerá na guia "Requer Atenção", que pode ser encontrada no console do Service Manager, na exibição de administração/fluxos de trabalho/status para o tipo específico do fluxo de trabalho em questão. Há diversas causas que fazem com que o tempo limite de um fluxo de trabalho seja atingido, tais como estar em execução quando um serviço é reiniciado, grandes filas ou APIs que levam muito tempo para retornar.

Resoluções

Se Houver Falha no Fluxo de Trabalho de WF,

Se Houver Falha no Envio de Fluxo de Trabalho de WF,

Se Houver Exceção de Fluxo de Trabalho de WF,

Se o Tempo Limite do Fluxo de Trabalho de WF For Atingido,

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>