Recursividad simple: aplicación del mismo diseño a todos los subgráficos

Puede aplicar el mismo diseño si se cumplen las condiciones siguientes:
  • El mismo algoritmo de diseño debe aplicarse al gráfico superior y a todos sus subgráficos.
  • Los valores del algoritmo de diseño (es decir, los parámetros de diseño) deben ser los mismos para el gráfico superior y para todos los subgráficos.
En la figura siguiente se muestra un ejemplo en el que se aplica un Diseño de árbol al gráfico superior y a todos sus subgráficos. Además, los valores del algoritmo Diseño de árbol son los mismos para todos los gráficos: la aplicación no necesita, por ejemplo, un dirección del flujo en el gráfico superior y otra distinta en los subgráficos.
Ejemplo
de diseño recursivo de un gráfico anidado que muestra a la izquierda
Componente 1, que contiene Red 1 con dos subgráficos, Red 1.1 y 1.2,
y a la derecha Componente 2 que contiene Red 2 con dos subgráficos,
Red 2.1 y 2.2. Se lee Componente 1 antes que Componente 2. Red 1
contiene un nodo en el primer nivel, tres nodos en el segundo nivel y
dos nodos en el tercer nivel. Los nodos del segundo y tercer nivel se
disponen horizontalmente. Nodo 1 se conecta con todos los nodos del segundo
nivel. El nodo medio del segundo nivel se conecta con los dos
nodos del tercer nivel. Red 2 tiene el mismo diseño que Red 1. Red
1.1 tiene un nodo en el primer nivel, dos nodos en el segundo nivel y
tres nodos en el tercer nivel. Los nodos del segundo y tercer nivel
se disponen horizontalmente. Nodo 1 se conecta con todos los nodos
del segundo nivel. El nodo a la derecha del segundo nivel se conecta
con todos los nodos del tercer nivel. Red 2.1 tiene el mismo diseño
que Red 1.1. Red 1.2 tiene un nodo en el primer nivel y tres nodos en
el segundo nivel. Los nodos del segundo nivel se disponen
horizontalmente. Nodo 1 se conecta con todos los nodos del segundo
nivel. Red 2.2 tiene el mismo diseño que Red 1.2.
Ejemplo de diseño recursivo de un gráfico anidado
Obtener estos diseños recursivos es fácil. Debe especificar el diseño de gráficos en la instancia de Diagram o Graph de nivel superior y llamar al método performGraphLayout. El diseño se ejecuta de forma recursiva, porque el argumento recursive del método es true de forma predeterminada.

Mecanismo interno

El mecanismo interno se basa en el principio de que una instancia de diseño sólo se utiliza para un gráfico y no se reutiliza para sus subgráficos. Por lo tanto, la instancia de Diseño de árbol se “clona” automáticamente utilizando el método ibm_ilog.graphlayout.GraphLayout.copy().
El diseño de gráficos se aplica a un modelo de gráfico y el mismo principio se aplica a los modelos de gráficos: una instancia de modelo de gráfico se utiliza sólo para un gráfico y no se reutiliza para subgráficos.
Los modelos de gráficos de los subgráficos se crean mediante llamadas al método ibm_ilog.graphlayout.GraphLayout.copy(), que a su vez crea el modelo de gráficos utilizando el método ibm_ilog.graphlayout.GraphLayout.getGraphModel().
Todas estas operaciones se realizan automáticamente, de forma transparente. Todo lo que tiene que hacer es llamar al método performGraphLayout con el argumento establecido en recursive true u omitirlo.

Ejemplo de código de Dojo

En el ejemplo de código siguiente se muestra cómo aplicar un solo algoritmo de diseño a un gráfico anidado:
var diagram = dijit.byId("diagram");
var treeLayout = new ibm_ilog.graphlayout.tree.TreeLayout();
diagram.attr("nodeLayout", treeLayout);
diagram.performGraphLayout(true);