Für Experten: Spezielle Optionen des Layouts mit kurzen Links

Die folgenden Optionen sind nur für ibm_ilog.graphlayout.shortlink.ShortLinkLayout bestimmt.

Self-Link-Stil

Self-Links sind Links, deren Ursprung und Ziel identisch sind. Das Layout für kurze Links unterstützt zwei optionale Formen für Self-Links.
Graph, der zuerst
den Self-Link-Stil mit zwei Kurven und dann den Self-Link-Stil mit drei Kurven zeigt
Stiloptionen für Self-Links
Beispiel für die Festlegung des Self-Link-Stils (Link-Layout-Algorithmus)
Gehen Sie wie folgt vor, um den Stil der Self-Links festzulegen:
Verwenden Sie die Methode setGlobalSelfLinkStyle:
layout.setGlobalSelfLinkStyle(ibm_ilog.graphlayout.shortlink.ShortLinkLayout.TWO_BEND_ORTHOGONAL_STYLE);
Die gültigen Werte für den Stil sind folgende:
  • ibm_ilog.graphlayout.shortlink.ShortLinkLayout.TWO_BENDS_ORTHOGONAL_STYLE
  • ibm_ilog.graphlayout.shortlink.ShortLinkLayout.THREE_BENDS_ORTHOGONAL_STYLE

Anzahl der Optimierungsiterationen

Die Optimierung der Linkformen wird gestoppt, wenn die zulässige Zeit überschritten wird (siehe Zulässige Zeit (LL)) oder wenn die Anzahl der Iterationen die zulässige Iterationsanzahl überschreitet.
Beispiel für die Festlegung der Anzahl der Optimierungsiterationen (Link-Layout-Algorithmus)
Gehen Sie wie folgt vor, um die zulässige Anzahl der Optimierungsiterationen festzulegen:
Verwenden Sie die Methode setAllowedNumberOfIterations:
layout.setAllowedNumberOfIterations(3);
Hinweis
Sie können die Optimierung der Linkformen inaktivieren, indem Sie die Anzahl der Iterationen auf null setzen, um den Layoutprozess zu beschleunigen.

Randfaktor für gleichmäßig verteilte Verbindungspunkte

Mit dem Randfaktor können Sie die Art und Weise anpassen, in der Verbindungspunkte berechnet werden, wenn der Verbindungsstil (siehe Verbindungsstil) EVENLY_SPACED_PINS eingestellt ist und wenn AUTOMATIC_STYLE die Verbindungspunkte mit dem Stil EVENLY_SPACED_PINS platziert. Diese Option hat keinen Effekt, wenn der Verbindungsstil FIXED_OFFSET_PINS verwendet wird.
Beim Verbindungsstil mit “gleichmäßig verteilten Verbindungspunkten” werden die Verbindungspunkte der Links in gleichmäßigen Abständen entlang des Knotenrands unter Einhaltung eines Rands zu jeder Grenze des Knotenrands verteilt. Die Größe dieses Rands wird mit dem Randfaktor gesteuert und wird berechnet, indem das Offset zwischen den Links mit dem Faktor multipliziert wird.
Beispiel für die Festlegung des Randfaktors (Link-Layout-Algorithmus)
Gehen Sie zum Festlegen dieser Option wie folgt vor:
Verwenden Sie die Methode setEvenlySpacedPinsMarginRatio:
layout.setEvenlySpacedPinsMarginRatio(1);
Der Eingabewert muss eine positive Zahl oder null sein. Der Standardwert ist 0.5. Randfaktor für gleichmäßige Verteilung von Verbindungspunkten enthält Beispiele für Werte mit deren Bedeutung.
Randfaktor für gleichmäßige Verteilung von Verbindungspunkten
Faktor
Bedeutung
0
Kein Rand
0,5 (Standardwert)
Der Rand entspricht der Hälfte des Offsets zwischen den Links.
1
Der Rand entspricht dem Offset zwischen den Links.
2
Der Rand ist doppelt so breit wie das Offset zwischen den Links.

Linküberschneidung mit Knoten nicht zulässig

Mit dieser Option können Sie den Layoutalgorithmus anweisen, ein Umformen von Links, das dazu führt, dass die Links einige Knoten schneiden, strikt zu vermeiden. Wenn Überschneidungen nicht verboten sind, versucht der Algorithmus trotzdem, Überschneidungen zu vermeiden, kann aber Überschneidungen erzeugen, damit der Link beispielsweise andere Links kreuzt.
Hinweis
Das Untersagen von Überschneidungen kann das Layout verlangsamen und die Anzahl der Kurven für diese Links erhöhen, die Knoten ansonsten schneiden würden, wenn Überschneidungen nicht strikt verboten wären.
Beispiel für das Untersagen von Links, die Knoten schneiden (Link-Layout-Algorithmus)
Gehen Sie zum Festlegen dieser Option wie folgt vor:
Verwenden Sie die Methode setLinkOverlapNodesForbidden:
layout.setLinkOverlapNodesForbidden(true);
Der Standardwert für diese Option ist false.
Wenn Überschneidungen verboten sind, verwendet der Algorithmus für das Layout mit kurzen Links einen Hilfsalgorithmus für das Anlegen der Links, die Knoten ansonsten Schneiden würden.
Beispiel für das Untersagen von Links, die Knoten schneiden im Layout mit langen Links (Link-Layout-Algorithmus)
Gehen Sie wie folgt vor, um die Hilfsinstanz des Layouts mit langen Links abzurufen:
Rufen Sie die folgende Methode in der Instanz von ibm_ilog.graphlayout.shortlink.ShortLinkLayout auf:
var longLinkLayout = layout.getAuxiliaryLongLinkLayout();
Mit dieser Methode können Sie die Hilfslayoutinstanz abrufen und bei Bedarf deren Parameter anpassen. Sie dürfen weder den Ursprungs- und Zielpunktmodus ändern noch die Beibehaltung fester Links inaktivieren.

Modus für inkrementelles Umformen von Links

Im inkrementellen Modus können die Regeln, die das Layout mit kurzen Links verwendet, um die Links zu bestimmen, die ihre aktuelle Form, die bei der vorherigen Layoutausführung berechnet wurde, so lange wie möglich behalten sollen, geändert werden. Im Modus für inkrementelles Umformen von Links können Sie diese Regeln separat für zwei Kategorien von Links anpassen.
Sehen Sie sich die Methoden setLinkConnectionBoxInterface und setNodeBoxInterface an.
  • “Geänderte Links”: Links, die einen anderen “Linkverbindungsrahmen” haben oder mit Knoten verbunden sind, die einen anderen Zeichenrahmen als bei der vorherigen Layoutausführung haben.
  • “Unveränderte Links”: Links, die denselben “Linkverbindungsrahmen” haben und mit Knoten verbunden sind, die denselben Zeichenrahmen wie bei der vorherigen Layoutausführung haben.
Der Modus kann für beide oder auch nur für eine dieser Linkkategorien angepasst werden.
Der Modus für inkrementelles Umformen von Links hat keinen Effekt, wenn der inkrementelle Modus inaktiviert ist.
Der Layoutalgorithmus unterstützt zwei Modi für inkrementelles Umformen von Links. Sie können den Modus global festlegen. In diesem Fall haben alle Links denselben Modus. Sie können den Modus aber auch lokal für jeden Link festlegen. In diesem Fall können in derselben Zeichnung verschiedene Modi vorkommen.

Globaler Modus für inkrementelles Umformen von Links

Beispiel für die Festlegung des globalen Modus für inkrementelles Umformen von Links (Link-Layout-Algorithmus)
Gehen Sie wie folgt vor, um den globalen Modus für inkrementelles Umformen von Links festzulegen:
layout.setGlobalIncrementalModifiedLinkReshapeMode(ibm_ilog.graphlayout.shortlink.ShortLinkLayout.FIXED_NODE_SIDES_MODE);
Die gültigen Werte für mode sind folgende:
  • ibm_ilog.graphlayout.shortlink.ShortLinkLayout.FIXED_SHAPE_TYPE_MODE (Standardwert)
    Beim inkrementellen Layout wird der Formtyp des Links beibehalten. Das bedeutet, dass sowohl die Anzahl der Kurven als auch die Knotenseiten, mit denen der Link verbunden ist, beibehalten werden.
  • ibm_ilog.graphlayout.shortlink.ShortLinkLayout.FIXED_NODE_SIDES_MODE
    Im inkrementellen Layout werden die Knotenseiten, mit denen die Links verbunden sind, beibehalten.
  • ibm_ilog.graphlayout.shortlink.ShortLinkLayout.FIXED_CONNECTION_POINTS_MODE
    Im inkrementellen Layout werden die Verbindungspunkte der Links beibehalten.
  • ibm_ilog.graphlayout.shortlink.ShortLinkLayout.FIXED_MODE
    Die Links werden während des inkrementellen Layouts nicht umgeformt. Es werden nur neu hinzugefügte Links verlegt.
  • ibm_ilog.graphlayout.shortlink.ShortLinkLayout.FREE_MODE
    Im inkrementellen Layout können die Links beliebig umgeformt werden. Dieser Modus entspricht dem nicht inkrementellen Verhalten für alle Links. Deshalb wird empfohlen; den inkrementellen Modus zu inaktivieren und stattdessen FREE_MODE als globalen Modus für das inkrementelle Umformen von Links zu verwenden.
    Die Einstellungen, die durch das “Fixieren” von Links (siehe Feste Links beibehalten (LL)) oder durch das Anpassen von Ursprungs- oder Zielpunktmodus (siehe Endpunktmodus (LL)) vorgenommen wurden, werden weiterhin berücksichtigt.
  • ibm_ilog.graphlayout.shortlink.ShortLinkLayout.MIXED_MODE
    Jeder Link kann einen anderen Modus haben.

Individueller Modus für inkrementelles Umformen von Links

Alle Links haben denselben Modus für inkrementelles Umformen von Links, sofern der Parameter für den globalen Modus für inkrementelles Umformen von Links nicht auf ibm_ilog.graphlayout.shortlink.ShortLinkLayout.MIXED_MODE gesetzt ist.
Nur, wenn der globale Modus für inkrementelles Umformen von Links auf MIXED_MODE gesetzt ist, kann jeder Link einen eigenen Modus für inkrementelles Umformen von Links haben.
Beispiel für die Festlegung eines individuellen Modus für inkrementelles Umformen von Links (Link-Layout-Algorithmus)
Gehen Sie wie folgt vor, um den Modus für einen einzelnen Links festzulegen:
Verwenden Sie die folgenden Methoden in der Instanz von ibm_ilog.graphlayout.shortlink.ShortLinkLayout:
layout.setIncrementalModifiedLinkReshapeMode(link, mode);  
layout.setIncrementalUnmodifiedLinkReshapeMode(link, mode);
var mode = layout.getIncrementalModifiedLinkReshapeMode(link);
var mode = layout.getIncrementalUnmodifiedLinkReshapeMode(link); 
Die gültigen Werte für mode sind folgende:
  • ibm_ilog.graphlayout.shortlink.ShortLinkLayout.FIXED_SHAPE_TYPE_MODE (Standardwert)
  • ibm_ilog.graphlayout.shortlink.ShortLinkLayout.FIXED_NODE_SIDES_MODE
  • ibm_ilog.graphlayout.shortlink.ShortLinkLayout.FIXED_CONNECTION_POINTS_MODE
  • ibm_ilog.graphlayout.shortlink.ShortLinkLayout.FREE_MODE
  • ibm_ilog.graphlayout.shortlink.ShortLinkLayout.FIXED_MODE

Verwendung derselben Form für Mehrfachlinks

Sie können den Layoutalgorithmus zwingen, dieselbe Form für alle Links zu berechnen, die gemeinsame Ursprungs- und Zielknoten haben. Die Links haben parallele Formen.
Wenn diese Option inaktiviert ist, kann das Layout verschiedene Formen für Links berechnen, die mit demselben Knotenpaar verbunden sind. Im Allgemeinen werden verschiedene Formen gewählt, um Überschneidungen zu vermeiden.
Zwei
miteinander verbundene Knoten, zuerst mit inaktivierter Option für Verwendung derselben Form und dann mit aktivierter Option für Verwendung derselben Form
Option für die Verwendung derselben Form für Mehrfachlinks
Beispiel für die Festlegung der Verwendung derselben Form für Mehrfachlinks (Link-Layout-Algorithmus)
Gehen Sie wie folgt vor, um die Verwendung derselben Form für Mehrfachlinks zu aktivieren:
Verwenden Sie die folgende Methode:
layout.setSameShapeForMultipleLinks(true);
Der Standardwert ist false.

Strafe für Linkkreuzungen

Die Berechnung der Linkform basiert auf der Zielsetzung, eine Kostenfunktion zu minimieren, die proportional zur Anzahl der Kreuzungen zwischen Links und zwischen Links und Knoten ansteigt. Standardmäßig haben diese beiden Typen von Kreuzungen dieselbe Gewichtung (1). Sie können die Gewichtung der Kreuzungen zwischen Links und Knoten erhöhen.
Beispiel für die Festlegung einer Strafe für Kreuzungen zwischen Links und Knoten (Link-Layout-Algorithmus)
Gehen Sie wie folgt, um die Gewichtung der Kreuzungen zwischen Links und Knoten zu erhöhen:
Verwenden Sie die folgende Methode:
layout.setLinkToNodeCrossingPenalty(5);
Diese Einstellung erhöht die Chance, ein Layout ohne Kreuzungen zwischen Links und Knoten (bzw. mit nur einigen wenigen dieser Kreuzungen) zu erhalten, allerdings mit dem Risiko von mehr Kreuzungen zwischen Links.
Alternativ können Sie die Gewichtung der Kreuzungen zwischen Links erhöhen.
Beispiel für die Festlegung einer Strafe für Kreuzungen zwischen Links (Link-Layout-Algorithmus)
Gehen Sie wie folgt, um die Gewichtung der Kreuzungen zwischen Links auf den Wert 3 zu erhöhen:
Verwenden Sie die folgende Methode:
layout.setLinkToLinkCrossingPenalty(3);
Diese Einstellung erhöht die Chance, ein Layout ohne Kreuzungen zwischen Links (bzw. mit nur einigen wenigen dieser Kreuzungen) zu erhalten, allerdings mit dem Risiko von mehr Kreuzungen zwischen Links und Knoten.

Umgehungsdistanz

Wenn Ursprungs- und Zielknoten zu nah beieinander liegen, ist möglicherweise nicht genügend Platz für das Verlegen des Links direkt zwischen den Endknoten verfügbar. Deshalb wählt das Layout standardmäßig Linkformen aus, die den Abstand zwischen nah beieinanderliegenden Knoten umgehen, wenn der Abstand zwischen den Endknoten kleiner ist als der Schwellenwert für den Abstand. (Weitere Informationen finden Sie unter Endknoten und Umgehungsdistanz.)
Zwei miteinander verbundene
Knoten, zuerst mit einem Abstand, der größer ist als die Umgehungsdistanz, und dann mit einem Abstand, der kleiner ist als die Umgehungsdistanz
Endknoten und Umgehungsdistanz
Die Umgebungsdistanz ist der Mindestabstand zwischen den Ursprungs- und Zielknoten, für den eine Linkform, die direkt von einem Knoten zum anderen führt, zulässig ist. Der Algorithmus versucht, Linkformen zu vermeiden, die die Seiten der Endknoten, deren Abstand zueinander kleiner ist als der Umgehungswert, direkt miteinander verbinden.
Beispiel für die Festlegung der Umgebungsdistanz (Link-Layout-Algorithmus)
Gehen Sie zum Festlegen der Umgehungsdistanz wie folgt vor:
Verwenden Sie die Methode setBypassDistance.
layout.setBypassDistance(1);
Der Standardwert ist ein strikter negativer Wert. Wenn die Umgebungsdistanz strikt negativ ist, wird der Wert für die Mindestlänge des letzten Segments als Umgehungsdistanz verwendet. Weitere Informationen finden Sie unter Mindestlänge des letzten Segments. Dieser Wert lässt die automatische Anpassung der Umgehungsdistanz auf der Basis des aktuellen Werts für die Mindestlänge des letzten Segment zu. Dieses Verhalten ist in den meisten Fällen geeignet. Sie können einen nicht negativen Wert angeben, um das Standardverhalten zu überschreiben.

Schnittstelle für Linkverbindungsrahmen verwenden

Standardmäßig werden die Verbindungspunkte der Links auf dem Rand des Zeichenrahmens, symmetrisch zur Mitte jeder Seite, hin verteilt. Manchmal kann es erforderlich sein, die Verbindungspunkte auf einem Rechteck zu platzieren, das kleiner oder größer ist als der Zeichenrahmen, unter Umständen auch asymmetrisch. Dies kann beispielsweise passieren, wenn Beschriftungen oberhalb oder unterhalb der Knoten angezeigt werden.
Beispiel für die Verwendung einer Schnittstelle für Linkverbindungsrahmen zum Ändern der Position der Verbindungspunkte (Link-Layout-Algorithmus)
Sie können die Position der Verbindungspunkte der Links ändern, indem Sie eine Klasse implementieren, die die Schnittstelle ILinkConnectionBoxProvider implementiert.
Diese Schnittstelle definiert die folgende Methode:
getBox(graphModel, node)
Mit dieser Methode können Sie das effektive Rechteck zurückgeben, in dem die Verbindungspunkte der Links platziert werden.
Eine zweite in der Schnittstelle definierte Methode ermöglicht eine tangentiale Verschiebung der Verbindungspunkte, für jede Seite des Knotens auf jeweils andere Weise:
getTangentialOffset(graphModel, node, nodeSide)
Rufen Sie beispielsweise Folgendes auf, um einen Provider für Linkverbindungsrahmen zu definieren, der ein Linkverbindungsrechteck zurückgibt, das kleiner als der Zeichenrahmen für alle Knoten des Typs MyNode ist und die Verbindungspunkte auf der linken und auf der rechten Seite aller Knoten verlagert:
dojo.declare('MyLinkConnectionBoxProvider', ibm_ilog.graphlayout.ILinkConnectionBoxProvider,
 {
    getBox: function(graphModel, node)
   {
        var rect:Rectangle = graphModel.getBounds(node);
        if (node is MyNode) {
            // for example, the size of the bounding box is reduced:
            rect.x += 4;
            rect.y += 4;
            rect.width -= 8;
            rect.height -= 8;
        }
        return rect;
    },

    getTangentialOffset: function(graphModel, node, side)
    {
        switch (side) {
             case ibm_ilog.graphlayout.Direction.LEFT:
             case ibm_ilog.graphlayout.Direction.RIGHT:
                 return -10; // shift up with 10 for both left and right side
             case ibm_ilog.graphlayout.Direction.TOP:
             case ibm_ilog.graphlayout.Direction.BOTTOM:
             default:
                 return 0; // no shift for top and bottom side
         }
    }
});

layout.setLinkConnectionBoxProvider(new MyLinkConnectionBoxProvider());
Stiloptionen für Self-Links veranschaulicht die Auswirkungen der Anpassung des Verbindungsrahmens. Auf der linken Seite sehen Sie das Ergebnis bei der Verwendung der Standardeinstellungen: Die Verbindungspunkte sind auf dem Zeichenrahmen des Knotens (der die Beschriftung enthält) verteilt und symmetrisch mit der Mitte jeder Knotenseite (einschließlich der Beschriftung). Auf der rechten Seite sehen Sie das Ergebnis nach Angabe der Schnittstelle für Linkverbindungsrahmen. An der Unterseite der Knoten sind die Links jetzt mit den Knoten verbunden (über der Beschriftung), während die Verbindungspunkte auf der linken und auf der rechten Seite der Knoten jetzt symmetrisch mit der Mitte des Knotens sind (ohne Beschriftung).
Ein Graph mit dem
Standardlinkverbindungsrahmen und dann mit einem angepassten Linkverbindungsrahmen
Anpassung des Linkverbindungsrahmens