Vous pouvez appliquer le même agencement lorsque les deux conditions suivantes sont remplies :
- Le même algorithme d'agencement doit être appliqué au graphe de niveau supérieur et à tous ses sous-graphes.
- Les paramètres de l'algorithme d'agencement (c'est-à-dire, les paramètres d'agencement) doivent être identiques pour le graphe de niveau supérieur et pour tous les sous-graphes.
La figure ci-après illustre un exemple dans lequel un agencement arborescent est appliqué au graphe de niveau supérieur et à tous ses sous-graphes. De plus, les paramètres de l'algorithme d'agencement arborescent sont les mêmes pour tous les graphes. L'application n'a pas besoin, par exemple, de directions de flux différentes dans le graphe de niveau supérieur et dans les sous-graphes.

Exemple d'agencement récursif d'un graphe imbriqué
Il est facile d'obtenir de tels agencements récursifs. Vous devez spécifier l'agencement de graphe sur l'instance Diagram ou Graph de niveau supérieur et appeler la méthode performGraphLayout. L'agencement sera effectué de façon récursive, car, par défaut, l'argument recursive de la méthode a pour valeur
true
. Mécanisme interne
Le mécanisme interne repose sur le principe selon lequel une instance d'agencement est utilisée pour un graphe uniquement et ne peut pas être réutilisée pour ses sous-graphes. Par conséquent, l'instance d'agencement arborescent est automatiquement "clonée" à l'aide de la méthode ibm_ilog.graphlayout.GraphLayout.copy().
L'agencement de graphe est appliqué à un modèle de graphe, et le même principe s'applique aux modèles de graphe : une instance de modèle de graphe est utilisée pour un graphe uniquement et ne peut pas être réutilisée pour des sous-graphes.
Les modèles de graphe des sous-graphes sont créés par des appels à la méthode ibm_ilog.graphlayout.GraphLayout.copy(), laquelle crée à son tour le modèle de graphe à l'aide de la méthode ibm_ilog.graphlayout.GraphLayout.getGraphModel().
Toutes ces opérations sont effectuées automatiquement, de façon transparente. Il vous suffit d'appeler la méthode
performGraphLayout
, avec l'argument recursive
défini avec la valeur true
ou omis. Exemple de code Dojo
L'exemple de code suivant montre comment appliquer un seul algorithme d'agencement à un graphe imbriqué :
var diagram = dijit.byId("diagram"); var treeLayout = new ibm_ilog.graphlayout.tree.TreeLayout(); diagram.attr("nodeLayout", treeLayout); diagram.performGraphLayout(true);