Récursivité avancée : combinaison de différents agencements dans un graphe imbriqué

Il devient nécessaire de combiner différents agencements lorsque l'une des conditions suivantes au minimum est remplie :
  • L'algorithme d'agencement à appliquer aux sous-graphes n'est pas le même que celui qui est requis pour le graphe de niveau supérieur.
  • Différents agencements doivent être appliqués à différents sous-graphes.
  • Le même algorithme d'agencement doit être appliqué à différents graphes, mais avec des paramètres différents.
Dans les cas de récursivité avancée, où vous souhaitez appliquer différents agencements à différents sous-graphes, vous devez spécifier l'agencement à utiliser pour un sous-graphe donné. Vous pouvez indiquer l'agencement de noeud ou de liens à utiliser pour n'importe quel Subgraph en appelant les méthodes setNodeLayout ou setLinkLayout du Subgraph.
Exemple de code Dojo
var diagram = dijit.byId("diagram");

// use a tree layout for the top-level graph:
var treeLayout = new ibm_ilog.graphlayout.tree.TreeLayout();
diagram.attr("nodeLayout", treeLayout);

// use a grid layout for the first subgraph:
var gridLayout = new ibm_ilog.graphlayout.grid.GridLayout();
subgraph1.setNodelayout(gridLayout);

// use another tree layout with different parameters for the second subgraph:
var treeLayout2 = new ibm_ilog.graphlayout.tree.TreeLayout();
treeLayout2.setFlowDirection(ibm_ilog.graphlayout.Direction.BOTTOM);
subgraph2.setNodelayout(treeLayout2 );

// perform layout recursively:
diagram.performGraphLayout(true);
Si aucun agencement n'est spécifié pour un Subgraph donné, l'agencement de son parent est copié. Par conséquent, vous n'avez pas besoin de définir l'agencement sur tous les sous-graphes, mais uniquement sur ceux qui nécessitent un agencement différent ou des paramètres différents.