Vorgaben für die Positionierung nebeneinander (HL)

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.
Vier verschiedene
Lösungen für einen Satz von Vorgaben für die Positionierung nebeneinander
Skizze der Lösungen für die Vorgaben für die Positionierung nebeneinander