WF Workflow Time Out Rule

Microsoft.SystemCenter.ServiceManager.WWF.Monitoring.RuleRunning (Rule)

Monitors time outs in WF workflows.

Knowledge Base article:

Summary

The workflow status is showing as “Successful” but has had an exception. It should be confirmed that the expected result was obtained, and if not, the action that was performed to start the workflow, may need to be repeated.

Causes

If a workflow does not complete an activity within 25 minutes, it will time out. The workflow may be stuck in either the started or scheduled phase, and will appear in the “Need Attention” tab which can be found in the Service Manager console, in the administration/workflows/status view for that particular type of workflow. There are a multitude of causes for workflow time outs, such as running when a service is restarted, a long queue, or APIs that are taking a long time to return.

Resolutions

Element properties:

TargetMicrosoft.SystemCenter.ServiceManager.SmManagementServer
CategoryCustom
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
WF Workflow Time Out
Rule {0} submitted by {2} finished has been running for more that 25 minutes.{3}

Member Modules:

ID Module Type TypeId RunAs 
DBProbe DataSource Microsoft.SystemCenter.ServiceManager.Monitoring.OledbProbe.WWFWorkflows Default
Filter ConditionDetection System.ExpressionFilter Default
GenerateAlert WriteAction System.Health.GenerateAlert Default

Source Code:

<Rule ID="Microsoft.SystemCenter.ServiceManager.WWF.Monitoring.RuleRunning" Enabled="true" Target="SM!Microsoft.SystemCenter.ServiceManager.SmManagementServer" ConfirmDelivery="false" Remotable="true" Priority="Normal" DiscardLevel="100">
<Category>Custom</Category>
<DataSources>
<DataSource ID="DBProbe" TypeID="Microsoft.SystemCenter.ServiceManager.Monitoring.OledbProbe.WWFWorkflows">
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
<ConnectionString/>
<Query/>
<GetValue>true</GetValue>
<IncludeOriginalItem>true</IncludeOriginalItem>
<OneRowPerItem>true</OneRowPerItem>
</DataSource>
</DataSources>
<ConditionDetection ID="Filter" TypeID="System!System.ExpressionFilter">
<Expression>
<Or>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">Columns/Column[2]</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">0</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">Columns/Column[2]</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">1</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</Or>
</Expression>
</ConditionDetection>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="Health!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>1</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.SystemCenter.ServiceManager.WWF.Monitoring.Rule.AlertMessageRunning"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Data/Columns/Column[1]$</AlertParameter1>
<AlertParameter2>$Data/Columns/Column[2]$</AlertParameter2>
<AlertParameter3>$Data/Columns/Column[3]$</AlertParameter3>
<AlertParameter4>$Data/Columns/Column[4]$</AlertParameter4>
<AlertParameter5>$Data/Columns/Column[5]$</AlertParameter5>
<AlertParameter6>$Data/Columns/Column[6]$</AlertParameter6>
</AlertParameters>
<Suppression>
<SuppressionValue>$Data/Columns/Column[6]$</SuppressionValue>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>