Wenn Sie erzwingen möchten, dass Knoten direkte Nachbarn werden, verwenden Sie die Vorgabe für die Positionierung nebeneinander.
Sie können eine Vorgabe für die Positionierung nebeneinander für eine Gruppe des Typs
NodeGroup (siehe Knotengruppen) erstellen:
layout.addConstraint( new ibm_ilog.graphlayout.hierarchical.HierarchicalSideBySideConstraint(nodeGroup, priority));
Wenn die Knotengruppe nur aus zwei Knoten besteht,
wird erzwungen, dass die beiden Knoten nebeneinander platziert werden.
Es wird jedoch nicht festgelegt, welcher Knoten die niedrigere Knotenposition
und welcher Knoten die höhere Knotenposition erhält.
Wenn die Gruppe aus mehr als zwei Knoten besteht, wird erzwungen, dass die Knoten an Folgepositionen
positioniert werden, so dass alle Knoten in einer Gruppe zusammengefasst sind.
Ein Knoten, der nicht zur Gruppe gehört, kann nicht zwischen den Knoten der Gruppe platziert werden.
Angenommen, die Gruppe enthält die drei Knoten
A
, B
und C
. Die Vorgabe ist erfüllt,
wenn die Positionsindizes von A
, B
und C
3, 4, 5 oder 9, 7, 8 sind. Wenn der Knoten D
jedoch zwischen A
und B
platziert
wird (D
hat z. B. 4, A
hat Position 3 und C
hat
Position 5), ist die Vorgabe nicht erfüllt, weil D
nicht zu derselben Gruppe gehört. Die Vorgabe für die Positionierung nebeneinander hat nur einen Effekt, wenn die Knoten zu derselben Ebene gehören.
Um dies zu erreichen können Sie beispielsweise zusätzlich eine Vorgabe für die Verwendung derselben Ebene verwenden.
Vorgaben für die Positionierung nebeneinander haben Prioritäten, die entscheiden, wie Vorgabenkonflikte
behoben werden.
Je höher die Priorität, desto eher wird die Vorgabe erfüllt.
Sie können Vorgaben für die Positionierung nebeneinander verwenden, um verschachtelte Cluster zu erstellen.
Beispiel:
var group1 = new ibm_ilog.graphlayout.hierarchical.HierarchicalNodeGroup(); group1.add(nodeA); group1.add(nodeB); group1.add(nodeC); group1.add(nodeD); layout.addConstraint(new ibm_ilog.graphlayout.hierarchical.HierarchicalSideBySideConstraint(group1, 10)); var group2 = new ibm_ilog.graphlayout.hierarchical.HierarchicalNodeGroup(); group2.add(nodeB); group2.add(nodeC); layout.addConstraint(new ibm_ilog.graphlayout.hierarchical.HierarchicalSideBySideConstraint(group2, 10));
Die erste Vorgabe legt fest, dass
nodeA
, nodeB
, nodeC
und nodeD
zu einem Cluster zusammengefasst werden müssen. Die zweite Vorgabe legt fest, dass
nodeB
und nodeC
innerhalb des größeren Clusters wiederum zu einem Cluster
zusammengefasst werden müssen.
Das bedeutet, dass kein anderer Knoten zwischen den vier Knoten platziert werden kann, und darüber hinaus, dass
nodeA
oder nodeD
nicht zwischen nodeB
und nodeC
platziert
werden kann. Die folgende Abbildung zeigt vier Lösungen, die beide Vorgaben erfüllen.

Skizze der Lösungen für die Vorgaben für die Positionierung nebeneinander