ExpressionType (GroupPopulationSchema)
Updated: August 10, 2011
Applies To: Operations Manager 2007 R2
The ExpressionType (GroupPopulationSchema) complex data type defines an expression that can be evaluated to either true or false from within a MembershipRuleType definition in the context of group population filtering.
<xsd:complexType name="ExpressionType">
<xsd:choice>
<xsd:element name="SimpleExpression" type="SimpleCriteriaType" />
<xsd:element name="UnaryExpression" type="UnaryCriteriaType" />
<xsd:element name="RegExExpression" type="RegExCriteriaType" />
<xsd:element name="Contains" type="ContainsCriteriaType" />
<xsd:element name="NotContains" type="ContainsCriteriaType" />
<xsd:element name="Contained" type="ContainedCriteriaType" />
<xsd:element name="NotContained" type="ContainedCriteriaType" />
<xsd:element name="And" type="AndType" />
<xsd:element name="Or" type="OrType" />
</xsd:choice>
</xsd:complexType>
The ExpressionType (GroupPopulationSchema) schema type allows for many different comparison scenarios in the context of a group population.
The basic expression types that can be combined with logical operators are described in the following table.
| Expression Type | Description |
|---|---|
|
SimpleExpression |
Evaluates two values by using a simple comparison (equal, not equal, less than, greater than, less than or equal, greater than or equal). The two values can be cast to the appropriate type for comparison. |
|
UnaryExpression |
Evaluates whether or not the value is null. Supports only two operators (IsNull, IsNotNull). |
|
RegexExpression |
Evaluates one value against a regular expression or a wildcard expression; or searches for a substring. |
SimpleExpression
A SimpleExpression type compares two values (left side and right side) with a simple operator of the types described in the following table.
| Operator | Description |
|---|---|
|
Like |
Evaluates to true if the left side of the expression is not like the right side. This evaluation is case-insensitive by default. |
|
NotLike |
Evaluates to true if the left side of the expression is not like the right side. This evaluation is case-insensitive by default. |
|
Equal |
Evaluates to true if the left side of the expression is equal to the right side. This evaluation is case-insensitive by default. |
|
NotEqual |
Evaluates to true if the left side of the expression is not equal to the right side. This evaluation is case-insensitive by default. |
|
Greater |
Evaluates to true if the left side of the expression is greater in value than the right side. This is a string comparison by default. |
|
Less |
Evaluates to true if the left side of the expression is less in value than the right side. This is a string comparison by default. |
|
GreaterEqual |
Evaluates to true if the left side of the expression is greater than or equal in value to the right side. This is a string comparison by default. |
|
LessEqual |
Evaluates to true if the left side of the expression is less than or equal in value to the right side. This is a string comparison by default. |
The following XML is a simple example of an expression that filters out all Windows-based computers that are not virtual machines.
<Expression>
<SimpleExpression>
<ValueExpression>
<Property>$MPElement[Name="Windows!Microsoft.Windows.Computer"]/IsVirtualMachine$</Property>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>False</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
UnaryExpression
The UnaryExpression type evaluates whether or not a value expression is a null value. The operator for a unary expression can be one of the following values: IsNull or IsNotNull. The following expression returns true if the NetBios name is null; otherwise, it returns false.
<Expression>
<UnaryExpression>
<ValueExpression>
<Property>$MPElement[Name="Windows!Microsoft.Windows.Computer"]/NetbiosDomainName$</Property>
</ValueExpression>
<Operator>IsNull</Operator>
</UnaryExpression>
</Expression>
RegexExpression
The RegExExpression type compares a value expression (left side) to a wildcard or regular expression (right side). The value expression is specified in the same way as the simple expression. The regular expression is specified by using a pattern element.
The allowed operators for regular expression comparisons are described in the following table.
| Operator | Description |
|---|---|
|
MatchesWildcard |
The expression evaluates as true if it matches the specified wildcard expression. The following wildcard characters are allowed:
|
|
ContainsSubstring |
Expression evaluates as true if it contains the substring specified in the pattern. The pattern is mapped to a regular expression, such as |
|
MatchesRegularExpression |
The expression evaluates as true if it matches the specified regular expression pattern. The regular expression evaluation uses the ATL regular expression engine. |
|
DoesNotContainSubstring |
The expression evaluates as true if it does not contain the substring specified in the pattern. |
|
DoesNotMatchWildcard |
The expression evaluates as true if it does not match the specified wildcard pattern. |
|
DoesNotMatchRegularExpression |
The expression evaluates as true if it does not match the specified regular expression pattern. |
Note |
|---|
| Some Operations Manager 2005 comparison types are allowed in the operator for backward compatibility only. These should not be used for new management packs. |
The following code shows an example of the use of the RegExExpression type. In this sample, a regular expression is to filter out all Windows-based computers that do not contain the pattern ‘^MicrosoftCorp’:
<Expression>
<RegExExpression>
<ValueExpression>
<Property>$MPElement[Name="Windows!Microsoft.Windows.Computer"]/NetbiosDomainName$</Property>
</ValueExpression>
<Operator>MatchesRegularExpression</Operator>
<Pattern>^MicrosoftCorp</Pattern>
</RegExExpression>
</Expression>
Contains, NotContains, Contained, Contained
The containment expressions Contained, NotContained, Contains, and NotContains allow you to provide a filter based on the hosting relationships of the monitoring class. The Contains and NotContains expressions allow you to provide a filter based on the class types that the monitoring class might or might not contain. The Contained and NotContained expressions allow you provide a filter based on the class types that contain or do not contain the monitoring class.
The following code illustrates a Contains expression. A Microsoft.SystemCenter.Agent class type is defined as being contained by a Microsoft.SystemCenter.ManagedComputer instance. Not all managed computers contain agents, but in this sample, the group filter wants to include only those managed computers that contain an agent.
<MembershipRule>
<MonitoringClass>$MPElement[Name="SCLibrary!Microsoft.SystemCenter.ManagedComputer"]$</MonitoringClass>
<RelationshipClass>$MPElement[Name="SCLibrary!Microsoft.SystemCenter.ComputerGroupContainsComputer"]$</RelationshipClass>
<Expression>
<Contains>
<MonitoringClass>$MPElement[Name="SCLibrary!Microsoft.SystemCenter.Agent"]$</MonitoringClass>
</Contains>
</Expression>
</MembershipRule>
The RegExExpression, SimpleExpression, and UnaryExpression elements can be combined to form multiple comparisons.
| Operator Element | Description |
|---|---|
|
And |
Combines two or more expressions with a logical AND. All expressions contained in the And element must evaluate to true for the overall expression to evaluate to true; otherwise, the result is false. |
|
Or |
Combines two or more expressions with a logical OR. At least one expression contained in the Or element must evaluate to true for the overall expression to evaluate to true; otherwise, the result is false. |
Multiple expression types are represented in the XML configuration with the operator as the element and then one or more expressions contained as sub-elements.
The following example shows how to combine two expressions in an AND operation:
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<Property>$MPElement[Name="Windows!Microsoft.Windows.Computer"]/IsVirtualMachine$</Property>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>False</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<Property>$MPElement[Name="Windows!Microsoft.Windows.Computer"]/NetBiosDomainName$</Property>
</ValueExpression>
<Operator>Like</Operator>
<ValueExpression>
<Value>Red</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
There is no limit to how many expressions can be combined with a single operator. Multiple operators can be combined as required.
The following code example shows an AND expression contained within an OR expression:
<Expression>
<Or>
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<Property>$MPElement[Name="Windows!Microsoft.Windows.Computer"]/IsVirtualMachine$</Property>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>False</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<Property>$MPElement[Name="Windows!Microsoft.Windows.Computer"]/NetBiosDomainName$</Property>
</ValueExpression>
<Operator>Like</Operator>
<ValueExpression>
<Value>Red</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<Property>$MPElement[Name="Windows!Microsoft.Windows.Computer"]/NetBiosDomainName$</Property>
</ValueExpression>
<Operator> Like </Operator>
<ValueExpression>
<Value Type="String">Blue</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<Property>$MPElement[Name="Windows!Microsoft.Windows.Computer"]/IsVirtualMachine$</Property>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>True</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</Or>
</Expression>
|
Schema Type |
Microsoft.SystemCenter.GroupPopulationSchema |
|
Library |
Microsoft.SystemCenter.Library |
Note