Spezielle Parameter des hierarchischen Layouts

Arbeitsrichtung (HL)

Der Parameter für die Arbeitsrichtung gibt die Richtung an, in die die meisten Links zeigen müssen. Wenn die Arbeitsrichtung nach oben nach unten verläuft, werden die Knotenebenen horizontal und die Links überwiegend vertikal ausgerichtet. Wenn die Arbeitsrichtung von links oder nach rechts verläuft, werden die Knotenebenen vertikal und die Links überwiegend horizontal ausgerichtet.
Wenn die Arbeitsrichtung nach unten verläuft, werden die Knoten der Ebene mit dem Index 0 am oberen Rand der Zeichnung platziert. Die Knoten mit dem Ebenenindex 0 sind gewöhnlich die Stammknoten der Zeichnung (d. h. die Knoten ohne eingehende Links). Wenn die Arbeitsrichtung nach oben verläuft, werden die Knoten mit dem Ebenenindex 0 am unteren Rand der Zeichnung platziert. Wenn die Arbeitsrichtung nach rechts verläuft, werden die Knoten am linken Rand der Zeichnung platziert.
Abbildung
hierarchischer Layouts, die den Parameter für die Arbeitsrichtung veranschaulicht
Arbeitsrichtungen
Gehen Sie folgt vor, um die Arbeitsrichtung nach unten festzulegen:
Verwenden Sie die Methode setFlowDirection. Beispiel:
layout.setFlowDirection(ibm_ilog.graphlayout.Direction.LEFT);
Die gültigen Werte für die Arbeitsrichtung sind folgende:
  • ibm_ilog.graphlayout.Direction.RIGHT (Standardwert)
  • ibm_ilog.graphlayout.Direction.LEFT
  • ibm_ilog.graphlayout.Direction.BOTTOM
  • ibm_ilog.graphlayout.Direction.TOP

Strategie für das Anlegen von Ebenen (HL)

Der Layoutalgorithmus teilt die Knoten in Ebenen ein (siehe Eine Kurzbeschreibung des HL-Algorithmus.). Die Strategie für das Anlegen von Ebenen gibt an, wie die Ebenen berechnet werden. Neben der Strategie für das Anlegen von Ebenen wirken sich Layoutvorgaben (siehe Layoutvorgaben für HL), Ebenenindizes (siehe Für Experten: Weitere Indizes (HL)) sowie der inkrementelle Modus (siehe Inkrementeller Modus mit dem hierarchischen Layout) auf die Berechnung der Ebenen auf. Wenn der inkrementelle Modus inaktiviert ist, bestimmt die Strategie für das Anlegen von Ebenen die Ebenen aller Knoten, die keinen Layoutvorgaben oder Ebenenindexspezifikationen unterliegen.
Strategien für das Anlegen von Ebenen
in einem hierarchischen Layout
Strategien für das Anlegen von Ebenen
Gehen Sie wie folgt vor, um die Strategie für das Anlegen von Ebenen festzulegen:
Verwenden Sie die Methode setLevelingStrategy. Beispiel:
layout.setLevelingStrategy(ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.SEMI_OPTIMAL);
Die gültigen Werte für die Strategie für das Anlegen von Ebenen sind folgende:
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.SEMI_OPTIMAL (Standardwert)
    Dieser Wert liefert häufig dasselbe Ergebnis wie die optimale Strategie, ist aber schneller. Der Layoutalgorithmus verwendet ein heuristisches Verfahren, um die Summe der Ebenenabstände für alle Kanten zu minimieren. Er zieht Stammknoten, sofern möglich, auf die Ebene mit höchsten Nummer und Blattknoten auf die Ebene mit der kleinsten Nummer.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.OPTIMAL
    Dieser Wert verwendet einen Algorithmus, der die Summe der Ebenenabstände für alle Kanten minimiert. Die optimale Strategie ist langsamer als die anderen Strategien, liefert aber häufig das beste Ergebnis.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.HIGHER_LEVELS
    Knoten haben die Neigung, möglichst die Ebene mit der höchsten Nummer zu verwenden. Alle Blattknoten befinden sich auf der Ebene mit der höchsten Nummer. Alle Stammknoten werden, sofern möglich, auf die Ebenen mit den höchsten Nummern gezogen.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.LOWER_LEVELS
    Knoten haben die Neigung, möglichst die Ebene mit der kleinsten Nummer zu verwenden. Alle Stammknoten befinden sich auf Ebene 0. Alle Blattknoten werden, sofern möglich, auf die Ebenen mit den kleinsten Nummern gezogen.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.SPREAD_OUT
    Diese Strategie ist eine Kombination aus den Strategien "lower-level" (kleinere Ebene) und "higher-level" (höhere Ebene). Alle Stammknoten befinden sich auf Ebene 0. Alle Blattknoten befinden sich auf der Ebene mit der höchsten Nummer. Alle inneren Knoten sind gleichmäßig verteilt.

Ebenenausrichtung (HL)

Wenn das Layout horizontale Ebenen verwendet, werden die Knoten derselben Ebene ungefähr an der selben Y-Koordinate platziert. Die Knoten können in Abhängigkeit davon, ob der obere Rand, der untere Rand oder die Mitte aller Knoten derselben Ebene dieselbe Y-Koordinate haben, ausgerichtet werden.
Wenn das Layout vertikale Ebenen verwendet, werden die Knoten derselben Ebene ungefähr an derselben X-Koordinate platziert. Die Knoten können am linken Rand, am rechten Rand oder an der Mitte der Knoten, die zu derselben Ebene gehören, ausgerichtet werden.
Gehen Sie wie folgt vor, um die Ebenenausrichtung am oberen Rand festzulegen:
Verwenden Sie die Methode setLevelJustification. Beispiel:
layout.setLevelJustification(ibm_ilog.graphlayout.Direction.TOP);
Wenn die Arbeitsrichtung nach oben oder nach unten verläuft, sind die gültigen Werte für die Ebenenausrichtung folgende:
  • ibm_ilog.graphlayout.Direction.TOP
  • ibm_ilog.graphlayout.Direction.BOTTOM
  • ibm_ilog.graphlayout.Direction.CENTER (Standardwert)
 Abbildung
hierarchischer Layouts, die den Parameter für die Ebenenausrichtung für horizontale Ebenen veranschaulicht
Ebenenausrichtung für horizontale Ebenen
Wenn die Arbeitsrichtung nach links oder nach rechts verläuft, sind die gültigen Werte für die Ebenenausrichtung folgende:
  • ibm_ilog.graphlayout.Direction.LEFT
  • ibm_ilog.graphlayout.Direction.RIGHT
  • ibm_ilog.graphlayout.Direction.CENTER (Standardwert)
 Abbildung
hierarchischer Layouts, die den Parameter für die Ebenenausrichtung für vertikale Ebenen veranschaulicht
Ebenenausrichtung für vertikale Ebenen

Linkstil (HL)

Der Layoutalgorithmus positioniert die Knoten und steuert die Links. Zur Vermeidung von Knoten- und Linküberschneidungen erstellt er Kurvenpunkte für die Linkformen. Der Parameter für den Linkstil steuert die Position und die Anzahl der Kurvenpunkte. Der Linkstil kann global definiert werden. In diesem Fall haben alle Links dieselbe Form. Der Linkstil kann aber auch lokal für jeden einzelnen Link definiert werden, so dass in derselben Zeichnung verschiedene Linkformen vorkommen können.
Abbildung
hierarchischer Layouts, die den Parameter für den Linkstil veranschaulicht
Linkstile

Globaler Linkstil

Gehen Sie wie folgt vor, um den globalen Linkstil festzulegen:
Verwenden Sie die Methode setGlobalLinkStyle. Beispiel:
layout.setGlobalLinkStyle(ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.ORTHOGONAL_STYLE);
Die gültigen Werte für den Linkstil sind folgende:
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.POLYLINE_STYLE
    Alle Links erhalten eine Mehrfachlinienform. Eine Mehrfachlinienform setzt sich aus einer Folge von Liniensegmenten zusammen, die an Kurvenpunkten miteinander verbunden sind. Die Liniensegmente können in jede Richtung gedreht werden. Dieser Wert ist der Standardwert.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.ORTHOGONAL_STYLE
    Alle Links erhalten eine orthogonale (rechtwinklige) Form. Die orthogonale Form setzt sich aus orthogonalen Liniensegmenten zusammen, die an Kurvenpunkten miteinander verbunden sind. Eine orthogonale Form ist eine Mehrfachlinienform, in der die Segmente nur in Richtungen von 0, 90, 180 oder 270 Grad gedreht werden können.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.STRAIGHT_LINE_STYLE
    Alle Links erhalten eine gerade Linienform (siehe straight-line). Alle Zwischenkurvenpunkte (sofern vorhanden) werden entfernt. Dieser Wert führt häufig zu Knoten- und Linküberschneidungen.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.NO_RESHAPE_STYLE
    Keiner der Links wird umgeformt. Beachten Sie jedoch, dass die Links anders als feste Links nicht vollständig ignoriert werden. Sie werden weiterhin zur Berechnung der Ebenen verwendet.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.MIXED_STYLE
    Jeder Link kann einen anderen Linkstil haben. Der Stil jedes einzelnen Links kann definiert werden, so dass verschiedene Linkformen in demselben Graphen vorkommen können.

Individueller Linkstil

Alle Links haben denselben Formstil, sofern der Parameter für den globalen Linkstil nicht auf MIXED_STYLE gesetzt ist. Nur, wenn der Parameter für den globalen Linkstil auf MIXED_STYLE gesetzt ist, kann jeder Link einen eigenen Linkstil haben.
Mischung verschiedener Linkstile in derselben Zeichnung
Mischung verschiedener Linkstile in derselben Zeichnung
Gehen Sie wie folgt vor, um den Stil eines einzelnen Links festzulegen:
Verwenden Sie die folgenden Methoden:
layout.setLinkStyle(link, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.ORTHOGONAL_STYLE);
var style = layout.getLinkStyle();
Die gültigen Werte für den Linkstil lokaler Links sind dieselben wie für den globalen Linkstil:
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.POLYLINE_STYLE
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.ORTHOGONAL_STYLE
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.STRAIGHT_LINE_STYLE
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.NO_RESHAPE_STYLE

Verbindungsstil (HL)

Der Layoutalgorithmus positioniert die Endpunkte von Links (Verbindungspunkte) an den Knoten automatisch. Der Verbindungsstil gibt an, wie diese Endpunkte berechnet werden.
Abbildung hierarchischer Layouts, die
den Parameter für den Verbindungsstil veranschaulicht
Verbindungsstile
Gehen Sie zum Festlegen des Verbindungsstils wie folgt vor:
Verwenden Sie die Methode setConnectorStyle. Beispiel:
layout.setConnectorStyle(ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.CENTERED_PINS);
Die gültigen Werte für style sind folgende:
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.CENTERED_PINS
    Die Endpunkte der Links werden in der Mitte des Rands platziert, dem die Links zugeordnet sind. Diese Option eignet sich für Mehrfachlinienlinks und Links mit geraden Linien (siehe straight-line). Sie eignet sich weniger für orthogonale Links, weil orthogonale Links in diesem Stil mehrdeutig aussehen können.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.CLIPPED_PINS
    Jeder Link, der auf die Mitte des Knotens zeigt, wird am Knotenrand befestigt. Die Verbindungspunkte werden an den Punkten auf dem Rand platziert, an dem die Links befestigt werden. Diese Option eignet sich für Mehrfachlinienlinks ohne Portspezifikationen. Sie darf nicht verwendet werden, wenn eine Portseite für einen Link angegeben ist.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.EVENLY_SPACED_PINS
    Die Verbindungspunkte werden gleichmäßig entlang des Knotenrands verteilt. Dieser Stil gewährleistet, dass sich die Endpunkte der Links nicht überschneiden. Er ist der beste Stil für orthogonale Links und eignet sich auch gut für andere Linkstile.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.AUTOMATIC_PINS
    Der Verbindungsstil wird je nach Linkstil automatisch ausgewählt. Wenn Links einen orthogonalen Stil oder Portseitenspezifikation haben, wählt der Algorithmus Verbindungen im gleichen Abstand aus. Wenn alle Links gerade sind, wählt er zentrierte Verbindungen aus. Andernfalls wählt er befestigte Verbindungen aus.

Endpunktmodus (HL)

Normalerweise kann der Layoutalgorithmus die Endpunkte jedes Links frei wählen. Der Benutzer kann jedoch angeben, dass der aktuelle feste Endpunkt eines Links verwendet werden muss.
Der Layoutalgorithmus unterstützt zwei Endpunktmodi. Sie können den Endpunktmodus global festlegen. In diesem Fall haben alle Endpunkte denselben Modus. Sie können den Modus aber auch lokal für jeden Link festlegen. In diesem Fall können in derselben Zeichnung verschiedene Endpunktmodi vorkommen.

Globaler Endpunktmodus

Gehen Sie zum Festlegen des globalen Endpunktmodus wie folgt vor:
Verwenden Sie die Methoden setGlobalOriginPointMode und setGlobalDestinationPointMode. Beispiel:
layout.setGlobalOriginPointMode(ibm_ilog.graphlayout.HierarchicalLayout.FREE_MODE);
Die gültigen Werte für mode sind folgende:
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.FREE_MODE (Standardwert)
    Das Layout kann die geeignete Position des Verbindungspunkts im Ursprungs-/Zielknoten frei wählen.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.FIXED_MODE
    Das Layout muss die aktuelle Position des Verbindungspunkts im Ursprungs-/Zielknoten beibehalten.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.MIXED_MODE
    Jeder Link kann einen anderen Endpunktmodus haben.

Individueller Endpunktmodus

Alle Links haben denselben Endpunktmodus, sofern der Parameter für den globalen Endpunktmodus nicht auf ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.MIXED_MODE gesetzt ist. Nur, wenn der globale Endpunktmodus auf MIXED_MODE gesetzt ist, kann jeder Link einen eigenen Endpunktmodus haben.
Gehen Sie wie folgt vor, um den Endpunktmodus eines einzelnen Links festzulegen:
Verwenden Sie die folgenden Methoden:
layout.setOriginPointMode(link, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.FIXED_MODE);
var mode = layout.getOriginPointMode();
layout.setDestinationPointMode(link, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.FIXED_MODE);
var mode = layout.getDestinationPointMode();
Die gültigen Werte für mode sind folgende:
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.FREE_MODE (Standardwert)
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.FIXED_MODE

Schnittstelle für Linkverbindungsrahmen verwenden (HL)

Standardmäßig bestimmt der Verbindungsstil, wie die Verbindungspunkte der Links auf dem Rand des Zeichenrahmens, symmetrisch zur Mitte jeder Seite, verteilt werden. Manchmal kann es erforderlich sein, die Verbindungspunkte auf einem Rechteck zu platzieren, das kleiner oder größer ist als der Zeichenrahmen. Dies kann beispielsweise passieren, wenn Beschriftungen oberhalb oder unterhalb der Knoten angezeigt werden.
Sie können die Position der Verbindungspunkte der Links ändern, indem Sie eine Klasse bereitstellen, die ILinkConnectionBoxProvider implementiert. Zum Festlegen einer Schnittstelle für Linkverbindungsrahmen verwenden Sie die Methode setLinkConnectionBoxInterface.
Die Schnittstelle für Linkverbindungsrahmen stellt für jeden Knoten einen Linkverbindungsrahmen und tangentiale Versatzoffsets bereit. Das hierarchische Layout verwendet den Linkverbindungsrahmen, aber nicht die tangentialen Offsets.
Die folgende Abbildung veranschaulicht die Auswirkungen der Anpassung des Verbindungsrahmens. Auf der linken Seite sehen Sie das Ergebnis ohne Schnittstelle für Linkverbindungsrahmen. Die Abbildung auf der rechten Seite zeigt den Effekt, wenn der Linkverbindungsrahmen das gestrichelte Rechteck für den entsprechenden Knoten zurückgibt.
Abbildung, die den Effekt
der Schnittstelle für Linkverbindungsrahmen veranschaulicht
Effekt der Schnittstelle für Linkverbindungsrahmen

Für Experten: Dicke Links (HL)

Wenn Punkte mit gleichmäßigem Abstand als Verbindungsstil verwendet werden, können die Links mit gleichem Abstand in Bezug auf die Linkmitte oder mit Bezug auf den Linkrahmen verteilt werden. Der Unterschied ist nur sichtbar, wenn Links, die mit demselben Knoten verbunden sind, unterschiedliche Breiten haben. Wenn die Linkbreite beispielsweise Aufschluss über die Kosten oder die Kapazität eines Ablaufs in einer Anwendung gibt, können viele verschiedene Linkbreiten vorkommen.
Abbildung Linkbreite verwenden veranschaulicht den Effekt der Verwendung verschiedener Linkbreiten. In der Zeichnung auf der linken Seite, sind die Mittelpunkte der Links gleichmäßig am linken Knoten verteilt. Jeder Link hat denselben Platz an der Knotenseite. Deshalb scheinen die dicken Links enger beieinander zu liegen als die dünneren Links, und die Offsets (Abstände) zwischen den Linkrändern sind unterschiedlich. In der Zeichnung auf der rechten Seite haben die dicken Links mehr Platz als die dünneren Links. Das Offset zwischen dem Linkrand (an den Segmenten, die mit dem linken Knoten verbunden sind) ist konstant, weil die Linkbreite in der Berechnung der Verbindungspunkte berücksichtigt wird.
Abbildung
hierarchischer Layouts, die den Parameter für die Linkbreite veranschaulicht
Linkbreite verwenden
Gehen Sie wie folgt vor, um die Verbindungsberechnung zu aktivieren, bei der die Linkbreite berücksichtigt wird:
Verwenden Sie die Methode setLinkWidthUsed. Beispiel:
layout.setLinkWidthUsed(true);
Die Einstellung für die Linkbreite ist standardmäßig inaktiviert. Die Linkbreite hat keinen Effekt, wenn der Verbindungsstil CENTERED_PINS oder CLIPPED_PINS verwendet wird.

Parameter für Portseiten (HL)

Der Algorithmus für hierarchisches Layout erzeugt ein Layout, in dem die meisten Links in dieselbe Richtung weisen. Wenn die Arbeitsrichtung nach unten verläuft, sind die eingehenden Links gewöhnlich mit der oberen Seite des Knotens verbunden und die abgehenden Links mit der unteren Seite des Knotens. Es ist auch möglich, die Seite anzugeben, an der ein Link mit dem Knoten verbunden wird.
Um die Erläuterungen der Portseiten zu vereinfachen, werden die Portseiten mithilfe der Kompassrichtungen Norden, Süden, Osten und Westen bezeichnet. Die angegebene Linkarbeitsrichtung verläuft immer nach Süden, und die erste Ebene ist immer nach Norden ausgerichtet. Wenn die Arbeitsrichtung nach unten verläuft, ist Norden oben, Süden unten, Osten auf der rechten Seite und Westen auf der linken Seite der Zeichnung. Wenn die Arbeitsrichtung nach rechts verläuft, ist Norden auf der linken Seite, Süden auf der rechten Seite, Osten oben und Westen unten.
Die Abbildung Linkverbindungen an Portseiten zeigt eine Zeichnung, in der die Links mit dem größeren mittleren Knoten an den angegebenen Portseiten verbunden sind. Ein Kompasssymbol zeigt die Kompassrichtungen in diesen Zeichnungen an.
Abbildung
hierarchischer Layouts, die die Kompassrichtungen zur Festlegung der Knotenseiten veranschaulicht
Linkverbindungen an Portseiten
Sie können festlegen, an welcher Seite der Link mit seinem Quellenknoten verbunden wird.
Gehen Sie wie folgt vor, um festlegen, an welcher Seite der Link mit seinem Quellenknoten verbunden wird:
Verwenden Sie die folgende Methode:
layout.setFromPortSide(link, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.EAST);
Auf ähnliche Weise können Sie festlegen, an welcher Seite der Link mit seinem Zielknoten verbunden wird.
Gehen Sie wie folgt vor, um festlegen, an welcher Seite der Link mit seinem Zielknoten verbunden wird:
Verwenden Sie die folgende Methode:
layout.setToPortSide(link, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.WEST);
Die gültigen Werte für side sind folgende:
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.UNSPECIFIED (Standardwert)
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.NORTH
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.SOUTH
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.EAST
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.WEST
Zum Abrufen der aktuellen Auswahl für einen Link verwenden Sie die folgenden Methoden:
var side = layout.getFromPortSide();
var side = layout.getToPortSide();
Die Portseiten Osten und Westen eignen sich für den orthogonalen Linkstil. Mehrfachlinienlinks mit diesen Portseiten haben manchmal unnötige Kurven. Wenn Portseiten angegeben werden, darf außerdem der Verbindungsstil CLIPPED_PINS nicht verwendet werden.

Parameter für Portindex (HL)

Sie können festlegen, wo die Links mit dem Knoten verbunden werden. Sie können zwar nicht die exakte Position angeben, aber Sie können die relative Position verglichen mit den Verbindungspunkten der anderen Links angeben. Hierfür können Sie einen Portindex verwenden. Abbildung Beispiellayout mit Ports und orthogonalem Linkstil zeigt ein Beispiellayout mit Ports an vielen Knoten.
Links, die denselben Portindex haben, werden mit demselben Punkt des Knotens verbunden. Die Ports werden gleichmäßig an den Knotenseiten verteilt, ähnlich wie beim Verbindungsstil EVENLY_SPACED_PINS. Die Ports werden entsprechend ihren Indizes sortiert. Auf der Nord- und Südseite eines Knotens werden die Portindizes in Richtung Osten größer. Auf der Ost- und Westseite eines Knotens werden die Portindizes in Richtung Süden größer. Wenn Portindizes auf diese Weise verwendet werden, ist es einfacher, einen Graphen zu drehen, indem einfach die Arbeitsrichtung geändert wird, ohne alle Portspezifikationen aktualisieren zu müssen.
Abbildung Konventionen für die Nummerierung von Portindizes relativ zur Arbeitsrichtung zeigt, wie die Portindizes von der Arbeitsrichtung abhängen.
Abbildung hierarchischer Layouts, die
die Portindizes veranschaulicht
Konventionen für die Nummerierung von Portindizes relativ zur Arbeitsrichtung
Portnummern werden gewöhnlich in Kombination mit Portseiten verwendet. Deshalb müssen Sie angeben, wie viele Ports auf jeder Seite eines Knotens verfügbar sind.
Gehen Sie zum Abfragen der Portanzahl wie folgt vor:
Verwenden Sie die folgende Methode:
layout.setNumberOfPorts(node, side, numberOfPorts);
Wenn Sie beispielsweise vier Ports auf jeder Seite eines Knotens verwenden möchten, verwenden Sie die folgenden Aufrufe:
layout.setNumberOfPorts(node, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.EAST, 4);
layout.setNumberOfPorts(node, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.WEST, 4);
layout.setNumberOfPorts(node, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.NORTH, 4);
layout.setNumberOfPorts(node, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.SOUTH, 4);
Die Knotenseite wird erneut mit ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.EAST, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.WEST, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.NORTH und ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.SOUTH angegeben. Verwenden Sie die folgende Methode, um die Anzahl der am Knoten verfügbaren Ports abzurufen:
var n = layout.getNumberOfPorts(node);
Nach der Angabe der Portanzahl pro Seite können Sie den Port auswählen, mit dem jeder Link verbunden werden soll.
Gehen Sie wie folgt vor, um die Portseite und den Portindex für einen Link auszuwählen:
Verwenden Sie die folgenden Methoden, um die Verbindung am Quellenknoten anzugeben:
layout.setFromPortSide(link, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.EAST);
layout.setFromPortIndex(link, 2);
Verwenden Sie die folgenden Methoden, um die Verbindung am Zielknoten anzugeben:
layout.setToPortSide(link, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.WEST);
layout.setToPortIndex(link, 2);
Verwenden Sie die folgenden Methoden, um den aktuellen Portindex eines Links abzurufen:
var index = layout.getFromPortIndex(link);
var index = layout.getToPortIndex(link);
Die Verwendung der Portseiten- und Portindexspezifikationen sind zusätzliche Vorgaben für den Layoutalgorithmus. Je mehr Vorgaben angegeben werden, desto schwieriger ist die Berechnung des Layouts. Wenn zu viele Links einen angegebenen Portindex haben, kann das erstellte Layout deshalb unter Umständen mehr Linkkreuzungen haben und weniger gleichmäßig sein.

Gabellinkform (HL)

Wenn mehrere Links an derselben Position beginnen und orthogonal verlegt sind, ist es manchmal empfehlenswert, dass die Links die ersten beiden Linksegmente gemeinsam nutzen. Die Form eines Linkbündels dieser Art sieht wie eine Gabel aus. Zum Aktivieren des Gabelformmodus für abgehende Links rufen Sie die folgende Methode auf:
layout.setFromFork(true);
Zum Aktivieren des Gabelformmodus für eingehende Links rufen Sie die folgende Methode auf:
Verwenden Sie die Methode setToFork. Beispiel:
layout.setToFork(true);
Diese Anweisungen sind nur effektiv, wenn die Links orthogonal verlegt sind. Die Gabel erscheint nur für die Links, die exakt an demselben Punkt beginnen oder enden. Das Setzen von setFromFork auf true allein bewirkt nicht, dass die Links an demselben Punkt beginnen. Damit Links an demselben Punkt beginnen oder enden, müssen Sie den zentrierten Verbindungsstil (siehe Verbindungsstil (HL)) verwenden oder denselben Port für die Links angeben (siehe Parameter für Portindex (HL)).
Quellen- und Zielgabelformen für Gabellinks
Gabellinkform
Es gibt zwei Abstandsparameter für die Gabelform:
layout.setMinForkSegmentLength(30);
Legt die Mindestlänge des Segments fest, das sich direkt in der Nähe des Knotens befindet.
layout.setPreferredForkAxisLength(10);
Legt die bevorzugte Länge der Gabelachse pro Verzweigung (das zweite Segment zum Knoten hin) fest.
Wenn die Gabel fünf Verzweigungen hat, hat die gesamte Achse eine bevorzugte Länge, die fünf Mal so lang ist wie der angegebene Parameter. Die bevorzugte Länge für die Gabelachse ist nur ein Hinweis für den Layoutalgorithmus. Wenn genügend Platz verfügbar ist, verlängert der Algorithmus die Gabelachse, um unnötige Linkkurven zu vermeiden. Wenn nicht genügend Platz verfügbar ist, kann der Algorithmus eine Gabelachse berechnen, die kleiner ist als die bevorzugte.
Gabellinkformen können manchmal mehrdeutig aussehen, insbesondere, wenn ein Link an demselben Punkt beginnt, an dem ein anderer Link endet. In diesem Fall ist nicht erkennbar, ob die Pfeilspitze zu dem einen oder dem anderen Link gehört.

Parameter für die Linkpriorität (HL)

Der Layoutalgorithmus versucht, die Knoten so zu platzieren, dass alle Links kurz sind, in dieselbe Richtung weisen und einander nicht kreuzen. Dies ist jedoch nicht immer möglich. Häufig können Links nicht dieselbe Länge haben. Wenn der Graph Zyklen (siehe cycle) hat, müssen einige Links umgekehrt werden, so dass sie in die entgegengesetzte Richtung weisen. Wenn ein Graph ein nicht planarer Graph (siehe nonplanar graph) ist, müssen einige Links einander kreuzen.
Der Parameter für die Linkpriorität steuert, welche Links ausgewählt werden müssen, wenn lange, umgekehrte oder kreuzende Links erforderlich sind. Links mit einer niedrigen Priorität werden eher ausgewählt als Links mit einer hohen Priorität. Das bedeutet nicht, dass Links mit einer niedrigen Priorität immer länger, umgekehrt oder gekreuzt sind. Der Graph kann eine Struktur haben, so dass keine langen, umgekehrten oder kreuzenden Links erforderlich sind.
Gehen Sie zum Festlegen der Linkpriorität wie folgt vor:
Verwenden Sie die folgenden Methoden:
layout.setLinkPriority(link, 0.5);
var priority = layout.getLinkPriority();
Der Standardwert für die Linkpriorität ist 1,0. Negative Linkprioritäten sind nicht zulässig.
Als Beispiel für die Linkpriorität stellen Sie sich einen Zyklus A->B->C->D->E->A vor. Es ist nicht möglich, diesen Graphen anzulegen, ohne einen Link umzukehren. Deshalb wählt der Layoutalgorithmus einen Link aus, den er umkehrt. Um zu steuern, welcher Link ausgewählt wird, können Sie einem Link eine niedrigere Priorität als den anderen geben. Dieser Link wird dann umgekehrt. In Abbildung Mit Linkprioritäten arbeiten veranschaulicht das untere Layout die Verwendung der Linkpriorität. Dem Link C->D wurde die Priorität 0,5 zugewiesen, während alle anderen Links die Priorität 1,0 haben. Deshalb wird C-D umgekehrt. Das obere Layout in Mit Linkprioritäten arbeiten veranschaulicht, was passiert, wenn alle Links dieselbe Priorität haben. Link E->A wird umgekehrt.
Mit Linkprioritäten arbeiten
Mit Linkprioritäten arbeiten
Die Verwendung von Linkprioritäten ist besonders wichtig in Kombination mit Ports. Links mit Quellenports an der Südseite und Zielports an der Nordseite werden vorzugsweise entgegen der Arbeitsrichtung angelegt. Ein solcher Feedback-Link kann dazu führen, dass Teile der Zeichnung gekippt werden. Die Abbildung Linkprioritäten und Ports verwenden zeigt ein Beispiel. Der rote Link ist ein Feedback-Link mit Portspezifikationen. Um das richtige Ergebnis zu erhalten, das auf der rechten Seite der folgenden Abbildung gezeigt wird, müssen Sie die Priorität des Feedback-Link auf einen sehr niedrigen Wert setzen.
Beispiel
für den Effekt der Zuweisung einer niedrigen Priorität zu einem einzigen Link
Linkprioritäten und Ports verwenden

Abstandsparameter (HL)

Der Abstand des Layouts wird mit drei Arten von Abstandsparametern gesteuert: Mindestoffset zwischen Knoten, Mindestoffset zwischen parallelen Segmenten von Links und Mindestoffset zwischen einem Knotenrand und einem Kurvenpunkt eines Links oder eines Linksegments, das parallel zu diesem Rand liegt. Das Offset (Abstand) zwischen parallelen Segmenten von Links ist gleichzeitig das Offset zwischen Kurvenpunkten von Links. Alle drei Parameterarten kommen in beiden Richtungen vor: horizontal und vertikal.
Vom hierarchischen Layout verwendete
Parameter für horizontalen und vertikalen Abstand
Abstandsparameter
Gehen Sie zum Festlegen der Abstandsparameter wie folgt vor:
Für ein Layout mit horizontalen Ebenen (die Arbeitsrichtung verläuft nach oben oder nach unten) ist das horizontale Knotenoffset der Mindestabstand zwischen Knoten derselben Ebene. Das vertikale Knotenoffset ist der Mindestabstand zwischen Knoten verschiedener Ebenen, d. h. der Mindestabstand zwischen den Ebenen. Für nicht orthogonale Linkstile ist das horizontale Link-Offset im Grund der Mindestabstand zwischen Kurvenpunkten von Links. Das horizontale Knoten-Link-Offset ist der Mindestabstand zwischen dem Knotenrand und dem Kurvenpunkt eines Links. Für horizontale Ebenen spielen das vertikale Link-Offset und das vertikale Knoten-Link-Offset nur eine Rolle, wenn die Linkformen orthogonal (rechtwinklig) sind.
Bei einem Layout mit vertikalen Ebenen (Arbeitsrichtung verläuft nach links oder nach rechts) steuert das vertikale Knotenoffset die Knotenabstände innerhalb der Ebenen. Das horizontale Knotenoffset ist der Mindestabstand zwischen den Ebenen. In diesem Fall spielen das vertikale Link-Offset und das vertikale Knoten-Link-Offset immer eine Rolle, während sich das horizontale Link-Offset und das horizontale Knoten-Link-Offset nur auf das Layout mit orthogonalen Links auswirkt.
Für orthogonale Links ist das horizontale Link-Offset der Mindestabstand zwischen parallelen vertikalen Linksegmenten. Das vertikale Link-Offset ist der Mindestabstand zwischen parallelen horizontalen Linksegmenten. Der Layoutalgorithmus kann diese Offsetanforderungen jedoch nicht immer erfüllen. Wenn ein Knoten sehr klein ist, aber viele Einfallslinks hat, ist es unter Umständen nicht möglich, die Links orthogonal mit dem angegebenen Mindestlinkabstand auf dem Knotenrand zu platzieren. In diesem Fall platziert der Algorithmus einige Linksegmente enger als das angegebene Link-Offset.
Abstandsparameter
für orthogonale Links in einem hierarchischen Layout
Abstandsparameter für orthogonale Links