Layoutvorgaben für HL

Der Algorithmus für hierarchisches Layout unterstützt Vorgaben für die relative Position in Knoten. Eine solche Vorgabe ist eine Regel, die bestimmt, wie ein bestimmter Knoten (oder eine Gruppe von Knoten) in Bezug auf die anderen Knoten platziert werden muss. Die Vorgaben haben Einfluss auf die relativen Positionen. Sie können beispielsweise erzwingen, dass Knoten A auf der linken Seite von Knoten B platziert wird. Somit wird die Position von A relativ zur Position von B angegeben. Es ist theoretisch möglich, widersprüchliche Vorgaben anzugeben: Wenn Sie angeben, dass Knoten A auf der linken Seite von Knoten B und B auf der linken Seite von Knoten A platziert werden muss, können diese Vorgaben nicht gleichzeitig eingehalten werden. Wenn sich Knoten A auf der linken Seite von Knoten B befindet, dann muss sich Knoten B auf der rechten Seite von Knoten A befinden. Der Algorithmus für hierarchisches Layout versucht, Vorgabenkonflikte automatisch zu erkennen und zu beheben. Er ignoriert Vorgaben, die nicht lösbar sind. Da die automatische Auflösung von Vorgaben zeitaufwendig ist, wird empfohlen, nicht widersprüchliche Vorgaben anzugeben, sofern dies möglich ist.
Vorgaben dürfen nur verwendet werden, wenn der inkrementelle Modus inaktiviert ist. Der inkrementelle Modus ist mit zusätzlichen Vorgaben implementiert, die intern hinzugefügt werden. Wenn Sie also im inkrementellen Modus Vorgaben verwenden, erkennt das System wahrscheinlich so viele Vorgabenkonflikte, dass es zu unerwarteten Ergebnissen kommt.
Vorgaben müssen mit Sorgfalt verwendet werden. Je mehr Vorgaben angegeben werden, desto schwieriger ist die Berechnung des Layouts. Deshalb kann das erstellt Layout mehr Linkkreuzungen haben und weniger gleichmäßig sein als ein Graph ohne Vorgaben.
Jeder Typ von Vorgabe wird durch eine Unterklasse von ibm_ilog.graphlayout.hierarchical.HierarchicalConstraint dargestellt. Die folgenden Vorgabentypen sind verfügbar:
ibm_ilog.graphlayout.hierarchical.HierarchicalLevelRangeConstraint
Bewirkt, dass ein Knoten in einem Bereich bestimmter Ebenen platziert wird.
ibm_ilog.graphlayout.hierarchical.HierarchicalSameLevelConstraint
Bewirkt, dass zwei Knoten auf derselben Ebene platziert werden.
ibm_ilog.graphlayout.hierarchical.HierarchicalRelativeLevelConstraint
Bewirkt, dass ein Knoten auf einer niedrigeren/höheren Ebene als ein anderer Knoten platziert wird.
ibm_ilog.graphlayout.hierarchical.HierarchicalGroupSpreadConstraint
Bewirkt, dass eine Gruppe von Knoten auf Ebenen platziert wird, die nicht weiter als der angegebene Streuwert entfernt sind.
ibm_ilog.graphlayout.hierarchical.HierarchicalRelativePositionConstraint
Bewirkt, dass ein Knoten an einer niedrigeren/höheren Position als ein anderer Knoten derselben Ebene platziert wird.
ibm_ilog.graphlayout.hierarchical.HierarchicalSideBySideConstraint
Bewirkt, dass zwei Knoten derselben Ebene nebeneinander platziert werden.
ibm_ilog.graphlayout.hierarchical.HierarchicalExtremityConstraint
Bewirkt, dass ein Knoten auf der ersten oder letzten Ebene bzw. an der ersten bzw. letzten Position innerhalb einer Ebene platziert wird.
ibm_ilog.graphlayout.hierarchical.HierarchicalSwimLaneConstraint
Bewirkt, dass eine Gruppe von Knoten in derselben rechteckigen Bahn platziert wird.
Hinweis
Wenn das hierarchische Layout für das Anlegen von Knoten und Links in einer Diagram-Komponente verwendet wird, die Objekte für Bahnen (Instanzen von ibm_ilog.graphlayout.SwimLane) enthält, werden automatisch Instanzen von ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.HierarchicalSwinLaneConstraint erstellt, um die untergeordneten Bahnobjekte in derselben Bahn zu platzieren und die richtige Größe für die Bahnen zu wählen.