Traversal configuration
Traversal configuration consists of included and excluded relations between objects.
By default, all existing CIs and their relations are traversed
during business application composition. Business applications are
composed during the grouping pattern processing. However, if you use
traversal configuration, some relations can be skipped from processing.
It means that the compositor does not go further through excluded
relationships. It applies to either implicit relations, which are
relations that are defined in Common Data Model, or explicit relations,
which can link any CIs and can be created by using TADDM API or UI.
However, explicit relations that are generated for implicit relations
by using the explicitrel.sh
script are ignored by
default, and it cannot be configured.
In the following example,
first two relation
tags exclude completely the whole
CI type by excluding all incoming and outgoing relations. The third relation
tag
excludes only one simple relation.
- Example:
<traversalConfiguration> <excludedRelationships> <exclude relation="{any}" source="admin.AdminInfo" target="{any}"/> <exclude relation="{any}" source="{any}" target="admin.AdminInfo"/> <exclude relation="only relation.DeployedTo" source="app.j2ee.J2EEApplication" target="app.j2ee.websphere.WebSphereCell"/> ... <includedRelationships> <include relation="{any}" source="admin.AdminInfo" target="{any}"/> <include relation="{any}" source="{any}" target="admin.AdminInfo"/> ...
- excludedRelationships
- This parameter contains a series of excluded relationships.
- includedRelationships
- This parameter contains a series of included relationships. Although all relationships are included by default, this parameter is useful in case of grouping pattern configuration, when you want to include a relation that is excluded in the default configuration.
excludedRelationships
and
includedRelationships
parameters contain the following elements:- relation
- The name of the relation or the dependency type.
- source
- The name of the relation source object type. If you do not want to define any specific source, you can set the value to {any}.
- target
- The name of the relation target object type. If you do not want to define any specific target, you can set the value to {any}.
- direction
- The direction of the dependency traversal defined for a specific
relationship. The following values are available:
UP
: The exclusion or inclusion rule is applied only when the current traversal direction is up the dependency chain, starting from the source object type.DOWN
: The exclusion or inclusion rule is applied only when the current traversal direction is down the dependency chain, starting from the source object type.UP_AFTER_DOWN
: The exclusion or inclusion rule is applied only when the current traversal direction is down and then up the dependency chain, starting from the source object type. It is the equivalent of theLowerUp
option that you can select in Data Management Portal.DOWN_AFTER_UP
: The exclusion or inclusion rule is applied only when the current traversal direction is up and then down the dependency chain, starting from the source object type. It is the equivalent of theHigherDown
option that you can select in Data Management Portal.
Traversal configuration is related to relation direction as defined in Common Data Model (relations direction configuration is not taken under consideration). However, in case of explicit dependencies traversal does take direction into consideration because the source and target class is not constrained by Common Data Model (any class can be used as a source or target of explicit relation).
More examples
- Skipping a specific relation between a pair of specific objects.
<exclude relation="relation.RunsOn" source="sys.OperatingSystem" target="sys.ComputerSystem"/>
- Skipping any relations, for which a particular class is a source.
<exclude relation="{any}" source="net.BindAddress" target="{any}"/>
- Skipping any relations, for which a particular class is a target.
<exclude relation="{any}" source="{any}" target="net.BindAddress"/>
- Skipping a relation but not its subclasses.Note:
dev.RealizesExtent
is a subclass ofrelation.Realizes
and it is processed even thoughrelation.Realizes
is skipped.<exclude relation="only relation.Realizes" source="sys.FileSystem" target="sys.FileSystem"/>
- Skipping any relation, for which IBM Tivoli
Enterprise Console object of the AppServer object type is a source.
<exclude relation="{any}" source="app.AppServer:IBMTivoliEnterpriseConsole" target="{any}"/>
Note: For more information abouthierarchyType
attribute of custom server templates, see Creating and managing custom server templates. - Skipping a specific relation between a pair
of specific objects. Additionally, the relation is skipped only when
it is found while traversing the objects down the dependency chain.
If this exclusion rule is added to the patten configuration, which is attached to a pattern where ComputerSystem CI is a core CI (traversal starting point), then all AppServers (applications) that run on this core CI are added to the topology, because AppServers depend on ComputerSystem. Other AppServers that are connected with the already added AppServers can also be added to the topology through IpConnection dependencies. However, the exclusion rule provided in the example is applied when the traversal engine tries to add the host ComputerSystems on which these AppServers are running. In this case, the AppServer->RunsOn->ComputerSystem relation is traversed down and the exclusion rule is applied.<exclude relation="relation.RunsOn" source="app.AppServer" target="sys.ComputerSystem" direction="DOWN"/>
- Skipping any relation, for which the target is an object with
SSoftwareServer type, and has the
hierachyDomain
attribute set toapp.placeholder.client.remote
, and thehierarchyType
attribute set toUnknown
.<exclude relation="{any}" source="{any}" target="simple.SSoftwareServer:app.placeholder.client.remote.Unknown"/>
BizAppsAgent
to
traverse only specific set of relations. For example:<excludedRelationships>
<exclude source="{any}" target="{any}" relation="{any}"/>
</excludedRelationships>
<includedRelationships>
<include target="{any}" source="sys.SystemPComputerSystem" relation="relation.Virtualizes"/>
<include target="{any}" source="sys.linux.LinuxUnitaryComputerSystem" relation="relation.Virtualizes"/>
<include target="{any}" source="only sys.ComputerSystem" relation="relation.Virtualizes"/>
</includedRelationships>