Hyperglance uses a fully automatic layout engine that employs some physical rules to decide how to arrange nodes and links. This layout solver is the default, it requires no configuration and is suitable for large sprawling topologies as well as small-scale topology graphs.


Hyperglance also supports for a tiered-based layout that can be enabled per datasource or even per group. Some of our integrations opt into this layout technique by default. It is suitable only for tree-like hierarchical topologies and requires careful configuration.


If you are using the HGAPI then you may prefer to opt into the tiered-based solver for your topology; otherwise the default physical-based solver will be used.


Note: The default physical-based solver is the recommended option most of the time, changing and configuring solvers is an advanced feature.



Selecting a solver

There are two layout solvers which a user can choose from:

  • standardphysical - The default solver. Uses a force directed layout technique


  • layered - For hierarchical topologies only. Uses a symmetrical, tiered technique.



To select a layout for a particular integration then add/change the line in that integration's runtime.properties file with the format:


<DatasourceName>.layout.solver = <layoutName>

E.g: Network.layout.solver = layered


To set a layout for a group in a particular integration,the add/change the line in that integration's runtime.properties with the format :


<DatasourceName>.<GroupName>.layout.solver=<layoutName>

E.g: Amazon.Marketing.layout.solver=layered


If you are enabling the "layered" solver then you will need to additionally configure which the nodes should be arranged into which of the tiered levels. See below.


Additional steps for layered layoutsolver:

There are 10 levels on which the nodes can be placed. 

Note: 

  1. level 1 is the bottom tier.
  2. Use semicolon to separate multiple values on each level

To specify the attribute on which the nodes should be layered, add/change the line in that integration's runtime.properties with the format:


<DatasourceName>.layered.attributeName=<attributeName>

E.g: Amazon.layered.attributeName=type


To provide level information, add/change the line in that integration's runtime.properties with the format:


<DatasourceName>.layered.level<Num>=<AttributeValue>

E.g: Amazon.layered.level1=EC2-Instance;Route-Table


Optionally, specify what kind of comparison (contains | eq) with the format:


<DatasourceName>.layered.levelComparator=<Comparator>

E.g : Amazon.layered.levelComparator=contains

(Default value is "eq")