Process Availability unit monitor for WebLogic application server

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

The availability monitor for a process of a WebLogic application server configuration on Windows.

Element properties:

RunAsDefault
AccessibilityPublic
Support Monitor RecalculateTrue

Member Modules:

ID Module Type TypeId RunAs 
DS DataSource Microsoft.JEE.WebLogic.Windows.ServerProcessAvailabilityDataSource Default
Probe ProbeAction Microsoft.JEE.WebLogic.Windows.ServerProcessAvailabilityProbe Default
CD_IsNotRunning ConditionDetection System.ExpressionFilter Default
CD_IsRunning ConditionDetection System.ExpressionFilter Default

Overrideable Parameters:

IDParameterTypeSelectorDisplay NameDescription
IntervalSecondsint$Config/IntervalSeconds$IntervalInterval in seconds
TimeoutSecondsint$Config/TimeoutSeconds$TimeoutTimeout in seconds

Source Code:

<UnitMonitorType ID="Microsoft.JEE.WebLogic.Windows.CompositeAvailabilityUnitMonitor" Accessibility="Public">
<MonitorTypeStates>
<MonitorTypeState ID="ProcessNotRunning" NoDetection="false"/>
<MonitorTypeState ID="ProcessRunning" NoDetection="false"/>
</MonitorTypeStates>
<Configuration>
<xsd:element name="ServerPath" type="xsd:string"/>
<xsd:element name="IntervalSeconds" type="xsd:integer"/>
<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.WebLogic.Windows.ServerProcessAvailabilityDataSource">
<IntervalSeconds>$Config/IntervalSeconds$</IntervalSeconds>
<TimeoutSeconds>$Config/TimeoutSeconds$</TimeoutSeconds>
</DataSource>
<ProbeAction ID="Probe" TypeID="Microsoft.JEE.WebLogic.Windows.ServerProcessAvailabilityProbe">
<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 ServerPath is found. -->
<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/ServerPath$"]</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 ServerPath. -->
<!-- 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/ServerPath$"]</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>