The following HierarchyFile example uses nested generator statements to create an element hierarchy 4 levels deep from 4 generations of parent class names. Under the hierarchy built from class names, are two main group elements: Networking (with Switch and Router child elements) and Performance.
structure.parent.parent.parent.name
structure.parent.parent.name
structure.parent.name
structure.name
Networking
Switch
Router
Performance
<?xml version="1.0" standalone="no"?>
<!DOCTYPE hierarchy PUBLIC "-//NetIQ, Inc.//DTD hierarchy 2.0//EN" "http://www.ManagedObjects.com/dtds/hierarchy_2.0.dtd">
<hierarchy case="yes">
<generator affected="no" class_from_field="structure.parent.parent.parent.objectClass" field="structure.parent.parent.parent.name">
<generator affected="no" class_from_field="structure.parent.parent.objectClass" field="structure.parent.parent.name">
<generator affected="no" class_from_field="structure.parent.objectClass" field="structure.parent.name">
<generator affected="yes" class_from_field="structure.objectClass" field="structure.name">
<group name="Networking" class="net_lan" >
<group name="Switch" class="telcom_switch">
<param name="match.0.type" value="FIXED" />
<param name="match.0.expr" value="gen_device=${formula.util.encodeURL($parent.parent.name)}" />
<param name="match.0.root" value="gen_container=Switches/demo=SNMP+Manager/root=Elements" />
</group>
<group name="Router" class="device_router">
<generator field="#set($s=${structure.id}%32)$s" class="gen_port">
<param name="match.0.type" value="FIXED" />
<param name="match.0.expr" value="port=${name}/server=${formula.util.encodeURL($parent.parent.parent.name)}" />
<param name="match.0.root" value="gen_container=Routers/demo=SNMP+Manager/root=Elements" />
<param name="script" value="element.DisplaySourceElements=true" />
</generator>
</group>
</group>
<group name="Performance" class="gen_container" >
<param name="match.0.type" value="REGEXP" />
<param name="match.0.expr" value="[^\x2f]*/${parent.objectClass}=${formula.util.encodeURL(${formula.util.escapeRegExp($parent.name)})}" />
<param name="match.0.root" value="Hosts=Hosts/tec=Tivoli+T%2FEC/root=Elements" />
<param name="match.1.type" value="LDAP" />
<param name="match.1.expr" value="(cn=${parent.name})" />
<param name="match.1.root" value="gen_container=Hosts/script=Sitescope/root=Elements" />
</group>
<group name="Tickets" class="gen_action" >
<param name="match.0.type" value="CLASS" />
<param name="match.0.expr" value="(&(cn=${parent.name})(objectClass=*))" />
<param name="match.0.root" value="remedy=ARS+Help+Desk/root=Elements" />
</group>
</generator>
</generator>
</generator>
</generator>
</hierarchy>