Availability unit monitor

Microsoft.JEE.WebSphere.Windows.CompositeAvailabilityUnitMonitor (UnitMonitorType)

Element properties:

RunAsDefault
AccessibilityPublic
Support Monitor RecalculateTrue

Member Modules:

ID Module Type TypeId RunAs 
DS DataSource Microsoft.JEE.WebSphere.Windows.ProfileProcessAvailabilityDataSource Default
Probe ProbeAction Microsoft.JEE.WebSphere.Windows.ProfileProcessAvailabilityProbe Default
CD_IsNotRunning ConditionDetection System.ExpressionFilter Default
CD_IsRunning ConditionDetection System.ExpressionFilter Default

Overrideable Parameters:

IDParameterTypeSelectorDisplay NameDescription
IntervalSecondsint$Config/IntervalSeconds$Interval
TimeoutSecondsint$Config/TimeoutSeconds$Timeout

Source Code:

<UnitMonitorType ID="Microsoft.JEE.WebSphere.Windows.CompositeAvailabilityUnitMonitor" Accessibility="Public">
<MonitorTypeStates>
<MonitorTypeState ID="ProcessNotRunning" NoDetection="false"/>
<MonitorTypeState ID="ProcessRunning" NoDetection="false"/>
</MonitorTypeStates>
<Configuration>
<xsd:element name="Profile" type="xsd:string"/>
<xsd:element name="Cell" type="xsd:string"/>
<xsd:element name="Node" type="xsd:string"/>
<xsd:element name="Server" type="xsd:string"/>
<xsd:element name="IntervalSeconds" type="xsd:integer"/>
<xsd:element name="ProfilePath" type="xsd:string"/>
<xsd:element name="TimeoutSeconds" type="xsd:integer"/>
</Configuration>
<OverrideableParameters>
<OverrideableParameter ID="IntervalSeconds" Selector="$Config/IntervalSeconds$" ParameterType="int"/>
<OverrideableParameter ID="TimeoutSeconds" Selector="$Config/TimeoutSeconds$" ParameterType="int"/>
</OverrideableParameters>
<MonitorImplementation>
<MemberModules>
<DataSource ID="DS" TypeID="Microsoft.JEE.WebSphere.Windows.ProfileProcessAvailabilityDataSource">
<IntervalSeconds>$Config/IntervalSeconds$</IntervalSeconds>
<TimeoutSeconds>$Config/TimeoutSeconds$</TimeoutSeconds>
</DataSource>
<ProbeAction ID="Probe" TypeID="Microsoft.JEE.WebSphere.Windows.ProfileProcessAvailabilityProbe">
<TimeoutSeconds>$Config/TimeoutSeconds$</TimeoutSeconds>
</ProbeAction>
<!-- The process is running if there count is greater than zero AND a property bag -->
<!-- with the desired key of Profile Path, Cell, Node is found. Profile name cannot -->
<!-- be used because it is not in the CommandLine arguments of the process. -->
<ConditionDetection ID="CD_IsRunning" TypeID="System!System.ExpressionFilter">
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="Integer">/DataItem/Property[@Name="Count"]</XPathQuery>
</ValueExpression>
<Operator>Greater</Operator>
<ValueExpression>
<Value Type="Integer">0</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<Exists>
<ValueExpression>
<XPathQuery Type="String">/DataItem/Property[@Name="$Config/ProfilePath$ $Config/Cell$ $Config/Node$ $Config/Server$"]</XPathQuery>
</ValueExpression>
</Exists>
</Expression>
</And>
</Expression>
</ConditionDetection>
<!-- The process is running if there count is zero OR there is NOT a property bag -->
<!-- with the desired key of Profile Path, Cell, Node. Again, Profile name cannot -->
<!-- be used because it is not in the CommandLine arguments of the process. -->
<!-- FYI: Process count is used b/c the DataSource has to return something as empty -->
<!-- returns result in the terminiation of the workflow. -->
<ConditionDetection ID="CD_IsNotRunning" TypeID="System!System.ExpressionFilter">
<Expression>
<Or>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="Integer">/DataItem/Property[@Name="Count"]</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="Integer">0</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<Not>
<Expression>
<Exists>
<ValueExpression>
<XPathQuery Type="String">/DataItem/Property[@Name="$Config/ProfilePath$ $Config/Cell$ $Config/Node$ $Config/Server$"]</XPathQuery>
</ValueExpression>
</Exists>
</Expression>
</Not>
</Expression>
</Or>
</Expression>
</ConditionDetection>
</MemberModules>
<RegularDetections>
<RegularDetection MonitorTypeStateID="ProcessNotRunning">
<Node ID="CD_IsNotRunning">
<Node ID="DS"/>
</Node>
</RegularDetection>
<RegularDetection MonitorTypeStateID="ProcessRunning">
<Node ID="CD_IsRunning">
<Node ID="DS"/>
</Node>
</RegularDetection>
</RegularDetections>
<OnDemandDetections>
<OnDemandDetection MonitorTypeStateID="ProcessNotRunning">
<Node ID="CD_IsNotRunning">
<Node ID="Probe"/>
</Node>
</OnDemandDetection>
<OnDemandDetection MonitorTypeStateID="ProcessRunning">
<Node ID="CD_IsRunning">
<Node ID="Probe"/>
</Node>
</OnDemandDetection>
</OnDemandDetections>
</MonitorImplementation>
</UnitMonitorType>