Graphenstruktur definieren

Zusätzlich zur Eigenschaft nodesStore müssen die Beziehungen zwischen den Elementen im Datenspeicher angegeben werden. Es gibt zwei Typen von Beziehungen: hierarchische und explizite.
Zum Definieren hierarchischer und expliziter Beziehungen zwischen Knoten verwenden Sie Metadaten in nodesStore. Zum Definieren expliziter Beziehungen zwischen Knoten verwenden Sie Metadaten in linksStore.
Der Hauptunterschied zwischen hierarchischen und expliziten Beziehungen ist die Art ihrer Darstellung. Die Darstellung hierarchischer Beziehungen basiert auf dem Wert des Attributs createLinksForHierarchy. Wenn das Attribut den Wert true hat, werden die hierarchischen Beziehungen als Links dargestellt. Hat das Attribut den Wert false, werden die hierarchischen Beziehungen als Serie verschachtelter Untergraphen dargestellt. Explizite Beziehungen werden immer als Links dargestellt.

Links mithilfe hierarchischer Beziehungen definieren

Gehen Sie zum Definieren von Links mithilfe hierarchischer Beziehungen wie folgt vor:
Die folgende Datendatei definiert beispielsweise eine Mitarbeiterhierarchie:
{ 
  "identifier":"Name", 
  "label":"Name", 
  "items":[ 
      { "children":[ 
          {"_reference":"Hermann Bacchus"}, 
          {"_reference":"Marion Daignan"}, 
          {"_reference":"Margaret Brinkmeier"}, 
          {"_reference":"Peter Courcelle"} 
        ], 
        "Name":"Friedrich Azaretto", 
        "EMail":"fazaretto@my.com" 
      } 
      ... 
] }
In diesem Beispiel definieren Sie einen dojo.data.api.ItemFileReadStore-Datenspeicher, der die Datendatei, wie in der folgenden Markup gezeigt, lädt:
<div dojoType="dojo.data.ItemFileReadStore" url="./mycompany.json" jsId="graphModel" ></div>
   <div id="canvas" dojoType='ibm_ilog.diagram.widget.Diagram' style="width:900px;height:700px" nodesStore="graphModel" childBinding="children" nodesQuery="{Name:'*'}" ></div>
Wenn Sie das Attribut childBinding des Diagram-Widgets auf children setzen, wird der Knoten, der der Eigenschaft "name" entspricht, mit allen Knoten verlinkt, die das Datenelement darstellt, das im Array untergeordneter Elemente referenziert wird.

Links mithilfe expliziter Beziehungen definieren

Gehen Sie wie folgt vor, um hierarchische Beziehungen zwischen Knoten anhand von Informationen in nodesStore zu beschreiben:
Gehen Sie wie folgt vor, um hierarchische Beziehungen zwischen Knoten anhand von Informationen in linksStore zu beschreiben:

Komplexere nodesStore-Beziehungen definieren

Es ist unter Umständen nicht möglich, komplexere Beziehungen über eine einfache nodesStore-Attributsuche zu bestimmen, und möglicherweise möchsten Sie den Attributnamen nicht deklarativ angeben.
Gehen Sie wie folgt vor, um komplexe nodesStore-Beziehungen zu definieren:
  • Verwenden Sie die Attribute childBinding, parentBinding, successorsBinding und predecessorsBinding. Diese Attribute können auf eine Funktion verweisen.
    Das folgende Beispiel veranschaulicht, wie die Suche untergeordneter Elemente aus dem vorherigen Beispiel mithilfe der Funktion findChildren gestaltet werden kann.
    var findStartItem = function(linksStore, linkStoreItem, nodesStore) {
            return linksStore.getValue(linkStoreItem, "start");
    };