再帰レイアウト

Dojo Diagrammer は、入れ子グラフをサポートします。すなわち、グラフであるノードが含まれたグラフをレンダリングできます。
別のグラフのノードであるグラフはサブグラフと呼ばれます。 異なるサブグラフのノードを接続するリンクは、グラフ間リンクと呼ばれます。 折れ線リンク・スタイルを使用した入れ子グラフでの再帰階層型レイアウト では、赤色のすべてのリンクはグラフ間リンクであり、黒色のすべてのリンクは通常のリンクです。 これについては、入れ子レイアウト で詳細に説明しています。
階層型レイアウトは、入れ子グラフを同時に処理し、すべての入れ子ノードを配置して、グラフ間リンクを含むすべてのリンクを経路指定することができます。
再帰モードを使用可能にするには、以下のようにします。
以下のメソッドを使用します。
layout.setRecursiveLayoutMode(enable);
再帰レイアウト・モードでは、すべてのサブグラフを同じスタイルでレイアウトする必要があります。例えば、すべてのサブグラフで同じ方向選択を使用する必要があります。サブグラフごとに個別のレイアウトを指定しないと、自動的に同じレイアウトになります。 サブグラフごとに異なるレイアウト・スタイルが必要な場合は、 サブグラフごとに個別のレイアウトを指定する必要があります。 詳細については、「上級の再帰: 1 つの入れ子グラフでの異なるレイアウトの混合」を参照してください。
この場合、階層型レイアウトはグラフ間リンクを経路指定できません。 ユーザーがリンク・レイアウト・アルゴリズムを使用して、グラフ間リンクを経路指定する必要があります。
再帰階層型レイアウト
— 折れ線リンク・スタイル
折れ線リンク・スタイルを使用した入れ子グラフでの再帰階層型レイアウト
再帰階層型レイアウト
— 直交リンク・スタイル
直交リンク・スタイルを使用した入れ子グラフでの再帰階層型レイアウト

再帰モードのレイアウト・パラメーターの設定

再帰レイアウト・モードでは階層型レイアウトがトップレベルのグラフに接続されます。グローバル・レイアウト・パラメーターは、このレイアウト・インスタンスに設定する必要があります。 ノードごとまたはリンクごとのレイアウト・パラメーターは、以下のように設定する必要があります。
var sublayout = new ibm_ilog.graphlayout.hierarchical.HierarchicalLayout();
subgraph.setNodeLayout(sublayout);
// The configuration of per node or per link parameters must be
// done after attaching the layout to the subgraph
sublayout.setSpecNodeLevelIndex(node, 5);
これは、ノードごとまたはリンクごとのレイアウト・パラメーターは、 トップレベル・レイアウトでは設定できず、サブグラフをレイアウトするサブレイアウトで設定する必要があることを意味します。
再帰レイアウト・モードでのレイアウト制約は、同じサブグラフに属するノード間 でのみ作用します。異なるサブグラフのノード間の制約は無視されます。 末端制約の EAST、WEST、NORTH、SOUTH の各概念は、グローバル・グラフに対してではなく、 サブグラフに対して解釈されます。 ノードごとまたはリンクごとのレイアウト・パラメーターと同様に、 制約も、ノードのサブグラフのレイアウト・インスタンスでインストールする必要があります。
// node1, node2 is directly contained in subgraph
var sublayout = topLevelLayout.getRecursiveLayout().getLayout(subgraph);
sublayout.addConstraint(new ibm_ilog.graphlayout.SameLevelConstraint(node1, 
  node2));
スイムレーン制約は、再帰レイアウト・モードではまったく作用しません。