グラフ構造の定義

nodesStore プロパティーに加え、データ・ソース内の項目間の関係を指定する必要があります。関係には、階層的と明示的の 2 つのタイプがあります。
ノード間に階層的関係および明示的関係を定義するには、nodesStore 内のメタデータを使用します。ノード間に明示的な関係を定義するには、linksStore 内のメタデータを使用します。
階層的関係と明示的関係の主な違いは、関係の表現方法にあります。階層的関係の表示は、createLinksForHierarchy 属性の値に基づいています。true の場合、階層的関係はリンクとして表示されます。false の場合、階層的関係は入れ子サブグラフとして表示されます。明示的関係は、常にリンクとして表示されます。

階層的関係を使用したリンクの定義

階層的関係を使用してリンクを定義するには、次のようにします。
例えば、次のデータ・ファイルは従業員階層を定義します。
{ 
  "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" 
      } 
      ... 
] }
この例では、データ・ファイルを以下のマークアップのようにロードする dojo.data.api.ItemFileReadStore データ・ストアを定義します。
<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>
Diagram ウィジェットの childBinding 属性を children に設定した場合、name プロパティーに対応するノードは、子配列で参照されるデータ項目を表すすべてのノードにリンクされます。

明示的関係を使用したリンクの定義

nodesStore の情報からノード間の階層的関係を記述するには、次のようにします。
linksStore の情報からノード間の階層的関係を記述するには、次のようにします。

より複雑な nodesStore 関係の定義

単純な nodesStore 属性検索ではより複雑な関係を決定することはできない場合があり、または宣言的に属性名を指定したくない場合があります。
複雑な nodesStore 関係を定義するには、次のようにします。
  • 属性 childBindingparentBindingsuccessorsBinding、 および predecessorsBinding を使用します。これらの属性は、関数を参照できます。
    以下の例では、関数 findChildren を使用して子検索を実行する方法を示しています。
    var findStartItem = function(linksStore, linkStoreItem, nodesStore) {
            return linksStore.getValue(linkStoreItem, "start");
    };