Définition de la structure de graphe

Outre la propriété nodesStore, il est aussi nécessaire d'indiquer les relations entre les éléments de la source de données. Il existe deux types de relation : hiérarchique et explicite.
Pour définir des relations explicites et hiérarchiques entre des noeuds, utilisez des métadonnées de la propriété nodesStore. Pour définir des relations explicites entre des noeuds, utilisez des métadonnées de la propriété linksStore.
La principale différence entre des relations hiérarchiques et explicites réside dans la manière dont elles sont représentées. La représentation de relations hiérarchiques est basée sur la valeur de l'attribut createLinksForHierarchy. Si la valeur est true, les relations hiérarchiques sont représentées sous la forme de liens. Si la valeur est false, les relations hiérarchiques sont représentées sous la forme d'une série de sous-graphes imbriqués. Les relations explicites sont toujours représentées sous la forme de liens.

Définition de liens à l'aide de relations hiérarchiques

Pour définir des liens à l'aide de relations hiérarchiques :
Par exemple, le fichier de données suivant définit une hiérarchie d'employés :
{ 
  "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" 
      } 
      ... 
] }
Dans cet exemple, vous définissez un magasin de données dojo.data.api.ItemFileReadStore qui charge le fichier de données comme dans le balisage suivant :
<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>
Lorsque vous définissez l'attribut childBinding du widget Diagram sur la valeur children, le noeud qui correspond à la propriété de nom est relié à tous les noeuds représentant l'élément de données référencé dans le tableau des enfants.

Définition de liens à l'aide de relations explicites

Pour décrire les relations hiérarchiques entre des noeuds à partir d'informations du nodesStore :
Pour décrire les relations hiérarchiques entre des noeuds à partir d'informations du linksStore :

Définition de relations nodesStore plus complexes

Il peut s'avérer impossible de déterminer des relations plus complexes par une recherche d'attribut simple nodesStore, ou vous pouvez souhaiter ne pas spécifier de nom d'attribut de manière déclarative.
Pour définir des relations nodesStore complexes :
  • Utilisez les attributs childBinding, parentBinding, successorsBinding et predecessorsBinding. Ces attributs peuvent faire référence à une fonction.
    L'exemple suivant montre comment effectuer la recherche d'enfants à l'aide de la fonction findChildren.
    var findStartItem = function(linksStore, linkStoreItem, nodesStore) {
            return linksStore.getValue(linkStoreItem, "start");
    };