Parámetros específicos del DJ

Dirección del flujo (DJ)

El parámetro dirección del flujo especifica la dirección en que deben apuntar la mayoría de los enlaces. Si la dirección del flujo es hacia arriba o hacia abajo, los niveles de nodos se orientan horizontalmente y los enlaces, en su mayor parte, verticalmente. Si la dirección del flujo es a la izquierda o a la derecha, los niveles de nodos se orientan verticalmente y los enlaces, en su mayor parte, horizontalmente.
Si la dirección del flujo es hacia abajo, los nodos del nivel con índice 0 se colocan en el borde superior del dibujo. Los nodos con índice de nivel 0 normalmente son los nodos raíz del dibujo (es decir, los nodos sin enlaces de entrada). Si la dirección del flujo es hacia arriba, los nodos con índice de nivel 0 se colocan en el borde inferior del dibujo. Si la dirección del flujo es a la derecha, los nodos se colocan en el borde izquierdo del dibujo.
Imagen
de diseños jerárquicos que ilustra el parámetro dirección del
flujo
Direcciones del flujo
Para especificar que la dirección del flujo es hacia abajo:
Utilice el método setFlowDirection. Por ejemplo:
layout.setFlowDirection(ibm_ilog.graphlayout.Direction.LEFT);
Los valores válidos para la dirección del flujo son:
  • ibm_ilog.graphlayout.Direction.RIGHT (valor predeterminado)
  • ibm_ilog.graphlayout.Direction.LEFT
  • ibm_ilog.graphlayout.Direction.BOTTOM
  • ibm_ilog.graphlayout.Direction.TOP

Estrategia de nivelación (DJ)

El algoritmo de diseño divide los nodos en niveles (consulte Una breve descripción del algoritmo DJ ). La estrategia de nivelación especifica cómo se calculan los niveles. Además de la estrategia de nivelación, las restricciones de diseño (consulte Restricciones de diseño para DJ), los índices de nivel (consulte Para expertos: más índices (DJ) ), así como la modalidad incremental (consulte Modalidad incremental con DJ) también afectan a la forma en que se calculan los niveles. Si la modalidad incremental está inhabilitada, la estrategia de nivelación determina los niveles de todos los nodos que no están sujetos a las restricciones de diseño ni a las especificaciones de índice de nivel.
Estrategias
de nivelación en un diseño jerárquico
Estrategias de nivelación
Para especificar la estrategia de nivelación:
Utilice el método setLevelingStrategy. Por ejemplo:
layout.setLevelingStrategy(ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.SEMI_OPTIMAL);
Los valores válidos para la estrategia de nivelación son:
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.SEMI_OPTIMAL (valor predeterminado)
    Este valor suele proporcionar el mismo resultado que la estrategia óptima, pero es más rápido. El algoritmo de diseño utiliza una estrategia heurística para minimizar la suma de distancias de nivel para todas las aristas. Asigna a los nodos raíz el nivel más alto posible y a los nodos finales el nivel más bajo posible.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.OPTIMAL
    Este valor utiliza un algoritmo que minimiza la suma de distancias de nivel para todas las aristas. La estrategia óptima es más lenta que las otras estrategias, pero suele proporcionar el mejor resultado.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.HIGHER_LEVELS
    Los nodos tienen tendencia a utilizar el nivel más alto posible. Todos los nodos finales están en el nivel más alto. A todos los nodos raíz se les asignan los niveles más altos posibles.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.LOWER_LEVELS
    Los nodos tienen tendencia a utilizar el nivel más bajo posible. Todos los nodos raíz están en el nivel 0. A todos los nodos finales se les asignan los niveles más bajos posibles.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.SPREAD_OUT
    Esta estrategia es una combinación de las estrategias de nivel más alto y nivel más bajo. Todos los nodos raíz están en el nivel 0. Todos Los nodos finales están en el nivel más alto. Todos los nodos internos están en posiciones equilibradas.

Justificación de nivel (DJ)

Si el diseño utiliza niveles horizontales, los nodos del mismo nivel se colocan aproximadamente en la misma coordenada y. Los nodos se pueden justificar, dependiendo de si el borde superior, el borde inferior o el centro de todos los nodos del mismo nivel tienen la misma coordenada y.
Si el diseño utiliza niveles verticales, los nodos del mismo nivel se colocan aproximadamente en la misma coordenada x. Los nodos se pueden justificar de modo que se alineen en el borde izquierdo, en el borde derecho o en el centro de los nodos que pertenecen al mismo nivel.
Para especificar la justificación de nivel hacia arriba:
Utilice el método setLevelJustification. Por ejemplo:
layout.setLevelJustification(ibm_ilog.graphlayout.Direction.TOP);
Si la dirección del flujo es hacia arriba o hacia abajo, los valores válidos para la justificación de nivel son:
  • ibm_ilog.graphlayout.Direction.TOP
  • ibm_ilog.graphlayout.Direction.BOTTOM
  • ibm_ilog.graphlayout.Direction.CENTER (valor predeterminado)
Imagen
de diseños jerárquicos que ilustra el parámetro justificación de
nivel para niveles horizontales
Justificación de nivel para niveles horizontales
Si la dirección del flujo es a la izquierda o a la derecha, los valores válidos para la justificación de nivel son:
  • ibm_ilog.graphlayout.Direction.LEFT
  • ibm_ilog.graphlayout.Direction.RIGHT
  • ibm_ilog.graphlayout.Direction.CENTER (valor predeterminado)
Imagen
de diseños jerárquicos que ilustra el parámetro justificación de
nivel para niveles verticales
Justificación de nivel para niveles verticales

Estilo de enlace (DJ)

El algoritmo de diseño coloca los nodos y dirige los enlaces. Para evitar que los nodos y enlaces se solapen, crea puntos de inflexión para las formas de los enlaces. El parámetro estilo de enlace controla la posición y el número de puntos de inflexión. El estilo de enlace se puede establecer de forma global, en cuyo caso todos los enlaces tienen la misma forma, o de forma local en cada enlace de modo que pueden encontrarse diferentes formas de los enlaces en el mismo dibujo.
Imagen
de diseños jerárquicos que ilustra el parámetro estilo de
enlace
Estilos de enlace

Estilo de enlace global

Para establecer el estilo de enlace global:
Utilice el método setGlobalLinkStyle. Por ejemplo:
layout.setGlobalLinkStyle(ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.ORTHOGONAL_STYLE);
Los valores válidos para el estilo de enlace son:
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.POLYLINE_STYLE
    Todos los enlaces tienen forma de polilínea. Una forma de polilínea consta de una secuencia de segmentos de líneas que están conectados a puntos de inflexión. Los segmentos de línea pueden girarse en cualquier dirección. Este es el valor predeterminado.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.ORTHOGONAL_STYLE
    Todos los enlaces tienen forma ortogonal. Una forma ortogonal consta de segmentos de líneas ortogonales que están conectados a puntos de inflexión. Una forma ortogonal es una forma de polilínea en que los segmentos sólo pueden girarse en direcciones de 0, 90, 180 ó 270 grados.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.STRAIGHT_LINE_STYLE
    Todos los enlaces tienen forma straight-line. Todos los puntos de inflexión intermedios (si hay alguno) se eliminan. Este valor a menudo provoca el solapamiento de nodos y enlaces.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.NO_RESHAPE_STYLE
    No se cambia la forma de ningún enlace. Observe, no obstante, que a diferencia de los enlaces fijos, los enlaces no se ignoran completamente. Se siguen utilizando para calcular la nivelación.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.MIXED_STYLE
    Cada enlace puede tener un estilo de enlace distinto. El estilo de cada enlace individual se puede establecer de modo que en el mismo gráfico aparezcan formas de enlaces distintas.

Estilo de enlace individual

Todos los enlaces tienen el mismo estilo de forma a menos que el estilo de enlace global sea MIXED_STYLE. Únicamente si el estilo de enlace global es MIXED_STYLE, cada enlace puede tener un estilo de enlace individual.
Combinación
de distintos estilos de enlace en el mismo dibujo
Combinación de distintos estilos de enlace en el mismo dibujo
Para especificar el estilo de un enlace individual:
Utilice los métodos:
layout.setLinkStyle(link, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.ORTHOGONAL_STYLE);
var style = layout.getLinkStyle();
Los valores válidos para el estilo de enlace de los enlaces locales son los mismos que para el estilo de enlace global:
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.POLYLINE_STYLE
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.ORTHOGONAL_STYLE
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.STRAIGHT_LINE_STYLE
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.NO_RESHAPE_STYLE

Estilo de conector (DJ)

El algoritmo de diseño coloca automáticamente los puntos finales de los enlaces (las fijaciones de conector) en los nodos. El parámetro estilo de conector especifica cómo se calculan estos puntos finales.
Imagen
de diseños jerárquicos que ilustra el parámetro estilo de
conector
Estilos de conector
Para especificar el estilo de conector:
Utilice el método setConnectorStyle. Por ejemplo:
layout.setConnectorStyle(ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.CENTERED_PINS);
Los valores válidos para style son:
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.CENTERED_PINS
    Los puntos finales de los enlaces se colocan en el centro del borde donde se conectan los enlaces. Esta opción es adecuada para los enlaces polilínea y los enlaces straight-line. Es menos adecuada para los enlaces ortogonales, puesto que éstos pueden parecer ambiguos en este estilo.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.CLIPPED_PINS
    Cada enlace apunta al centro del nodo que está recortado en el borde del nodo. Las fijaciones de conector se colocan en los puntos del borde donde los enlaces están recortados. Esta opción es adecuada para los enlaces polilínea sin especificaciones de puerto. No debe utilizarse si se especifica una cara del puerto para cualquier enlace.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.EVENLY_SPACED_PINS
    Las fijaciones de conector están distribuidas de manera uniforme a lo largo del borde del nodo. Este estilo garantiza que los puntos finales de los enlaces no se solapen. Es el mejor estilo para los enlaces ortogonales y funciona bien para otros estilos de enlace.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.AUTOMATIC_PINS
    El estilo de conector se selecciona automáticamente en función del estilo de enlace. Si alguno de los enlaces tiene un estilo ortogonal o si alguno de los enlaces tiene una especificación de cara del puerto, el algoritmo elige conectores espaciados de manera uniforme. Si todos los enlaces son directos, elige conectores centrados. De lo contrario, elige conectores recortados.

Modalidad de punto final (DJ)

Normalmente, el algoritmo de diseño puede elegir libremente los puntos de terminación de cada enlace. Sin embargo, el usuario puede especificar que debe utilizarse la actual fijación de terminación fija de un enlace.
El algoritmo de diseño proporciona dos modalidades de punto final. Se puede establecer la modalidad de punto final de forma global, en cuyo caso todos los puntos finales tienen la misma modalidad, o de forma local en cada enlace, en cuyo caso pueden encontrarse diferentes modalidades de punto final en el mismo dibujo.

Modalidad de punto final global

Para establecer la modalidad de punto final global:
Utilice los métodos setGlobalOriginPointMode y setGlobalDestinationPointMode. Por ejemplo:
layout.setGlobalOriginPointMode(ibm_ilog.graphlayout.HierarchicalLayout.FREE_MODE);
Los valores válidos para mode son:
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.FREE_MODE (valor predeterminado)
    El diseño puede elegir libremente la posición adecuada del punto de conexión en el nodo de origen o destino.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.FIXED_MODE
    El diseño debe conservar la posición actual del punto de conexión en el nodo de origen o destino.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.MIXED_MODE
    Cada enlace puede tener una modalidad de punto final diferente.

Modalidad de punto final individual

Todos los enlaces tienen la misma modalidad de punto final a menos que la modalidad de punto final global sea ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.MIXED_MODE. Sólo si la modalidad de punto final global se establece en MIXED_MODE cada enlace tiene una modalidad de punto final individual.
Para establecer la modalidad de punto final de un enlace individual:
Utilice los métodos:
layout.setOriginPointMode(link, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.FIXED_MODE);
var mode = layout.getOriginPointMode();
layout.setDestinationPointMode(link, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.FIXED_MODE);
var mode = layout.getDestinationPointMode();
Los valores válidos para mode son:
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.FREE_MODE (valor predeterminado)
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.FIXED_MODE

Utilización de una interfaz de recuadro de conexión de enlace (DJ)

De forma predeterminada, el estilo de conector determina cómo se distribuyen los puntos de conexión de los enlaces en el borde del recuadro delimitador de los nodos, simétricamente respecto al centro de cada lado. A veces puede ser necesario colocar los puntos de conexión en un rectángulo menor o mayor que el recuadro delimitador. Por ejemplo, cuando se muestran etiquetas debajo o encima de los nodos.
Puede modificar la posición de los puntos de conexión de los enlaces proporcionando una clase que implemente la ILinkConnectionBoxProvider. Para establecer una interfaz de recuadro de conexión de enlace, utilice el método setLinkConnectionBoxInterface.
La interfaz de recuadro de conexión de enlace proporciona a cada nodo un recuadro de conexión de enlace y desplazamientos tangenciales. El Diseño jerárquico utiliza el recuadro de conexión de enlace pero no utiliza los desplazamientos tangenciales.
En la figura siguiente se muestra el efecto de personalizar el recuadro de conexión. A la izquierda se puede ver el resultado sin ninguna interfaz de recuadro de conexión. La imagen de la derecha muestra el efecto si la interfaz de recuadro de conexión devuelve el rectángulo discontinuo para el nodo correspondiente.
Imagen
que ilustra el efecto de la interfaz de recuadro de conexión de
enlace
Efecto de la interfaz de recuadro de conexión

Para expertos: enlaces gruesos (DJ)

Si como estilo de conector se utilizan fijaciones espaciadas de manera uniforme, los enlaces se pueden espaciar de manera uniforme con respecto al centro del enlace o con respecto al borde del enlace. La diferencia sólo es visible cuando los enlaces que se conectan al mismo nodo tienen anchos diferentes. Por ejemplo, cuando el ancho del enlace indica el coste o la capacidad de un flujo en la aplicación, pueden aparecer enlaces de distinto ancho.
En la figura Utilización del ancho del enlace se muestra el efecto de utilizar enlaces de distinto ancho. En la ilustración de la izquierda, el centro de los enlaces se distribuye de manera uniforme en el nodo izquierdo. Cada enlace tiene el mismo espacio disponible en la cara del nodo. Por lo tanto, los enlaces gruesos aparecen más cerca uno de otro que los enlaces más finos y los desplazamientos entre los bordes de los enlaces son diferentes. En la ilustración de la derecha, los enlaces gruesos tienen más espacio disponible que los enlaces más finos. El desplazamiento entre el borde del enlace (en los segmentos que se conectan con el nodo de la izquierda) es constante porque el ancho del enlace se tiene en cuenta en el cálculo de los puntos de conexión.
Imagen
de diseños jerárquicos que ilustra el parámetro ancho de línea
utilizado
Utilización del ancho del enlace
Para permitir que el cálculo del conector respecte el ancho del enlace:
Utilice el método setLinkWidthUsed. Por ejemplo:
layout.setLinkWidthUsed(true);
El valor del ancho del enlace aparece inhabilitado de forma predeterminada. El ancho del enlace no tiene ningún efecto si se utilizan los estilos de conector CENTERED_PINS o CLIPPED_PINS.

Parámetro caras del puerto (DJ)

El algoritmo Diseño jerárquico genera un diseño donde la mayoría de los flujos de los enlaces apunta en la misma dirección. Si la dirección del flujo es hacia abajo, normalmente los enlaces de entrada están conectados con la cara de arriba del nodo y los enlaces de salida están conectados con la cara de abajo del nodo. También es posible especificar en qué cara del nodo se conecta un enlace.
Para simplificar las explicaciones de las caras del puerto, se hace referencia a ellas mediante los puntos cardinales norte, sur, este y oeste. La dirección del flujo de los enlaces especificada siempre es hacia el sur y el primer nivel es hacia el norte. Si la dirección del flujo es hacia abajo, el norte está arriba, el sur abajo, el este a la derecha y el oeste a la izquierda del dibujo. Si la dirección del flujo es hacia la derecha, el norte está a la izquierda, el sur a la derecha, el este arriba y el oeste abajo.
En la figura Conexiones de enlaces con las caras del puerto se muestra un dibujo donde los enlaces se conectan con el nodo medio mayor en las caras del puerto especificadas. Un icono con forma de brújula muestra los puntos cardinales en estos dibujos.
Imagen
de diseños jerárquicos que ilustra el uso de los puntos cardinales
para especificar las caras de los nodos
Conexiones de enlaces con las caras del puerto
Puede establecer en qué cara de su nodo de origen se conecta el enlace.
Para establecer en qué cara de su nodo de origen se conecta el enlace:
Utilice el método:
layout.setFromPortSide(link, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.EAST);
De forma parecida, puede establecer en qué cara de su nodo de destino se conecta el enlace.
Para establecer en qué cara de su nodo de destino se conecta el enlace:
Utilice el método:
layout.setToPortSide(link, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.WEST);
Los valores válidos para side son:
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.UNSPECIFIED (valor predeterminado)
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.NORTH
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.SOUTH
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.EAST
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.WEST
Para recuperar la opción actual de un enlace, utilice los métodos:
var side = layout.getFromPortSide();
var side = layout.getToPortSide();
Las caras del puerto este y oeste funcionan bien con el estilo de enlace ortogonal. Los enlaces polilínea con estas caras del puerto a veces tienen curvas innecesarias. Además, si se especifican caras del puerto, no debería utilizarse el estilo de conector CLIPPED_PINS.

Parámetro índice de puerto (DJ)

Puede especificar dónde se conectan los enlaces con el nodo. No puede especificar el punto exacto, pero puede especificar la posición relativa comparada con los puntos de conexión de los otros enlaces. Esto se lleva a cabo utilizando un índice de puerto. En la figura Diseño de ejemplo con puertos y estilo de enlace ortogonal se muestra un diseño de ejemplo con puertos en muchos nodos.
Los enlaces que tienen el mismo índice de puerto se conectan al mismo punto del nodo. Los puertos están distribuidos de manera uniforme en las caras del nodo, de forma parecida que en el caso del estilo de EVENLY_SPACED_PINS. Los puertos se ordenan de acuerdo con sus índices. En los lados norte y sur de un nodo, el valor de los índices de puerto aumenta hacia el este. En los lados este y oeste de un nodo, el valor de los índices de puerto aumenta hacia el sur. Al utilizar los índices de puerto de este modo es más fácil girar un gráfico cambiando simplemente la dirección del flujo sin tener que actualizar todas las especificaciones de puerto.
En la figura Convenios de numeración de índices de puerto en relación con la dirección del flujo se muestra cómo los índices de puerto dependen de la dirección del flujo.
Imagen
de diseños jerárquicos que ilustra los índices de
puerto
Convenios de numeración de índices de puerto en relación con la dirección del flujo
Los números de puerto normalmente se utilizan en combinación con las caras del puerto. Por lo tanto, debe especificar cuántos puertos están disponibles en cada cara de un nodo.
Para especificar el número de puertos:
Utilice el método:
layout.setNumberOfPorts(node, side, numberOfPorts);
Por ejemplo, para utilizar cuatro puertos en cada cara de un nodo específico, utilice las llamadas:
layout.setNumberOfPorts(node, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.EAST, 4);
layout.setNumberOfPorts(node, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.WEST, 4);
layout.setNumberOfPorts(node, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.NORTH, 4);
layout.setNumberOfPorts(node, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.SOUTH, 4);
La cara del nodo se vuelve a especificar mediante ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.EAST, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.WEST, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.NORTH y ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.SOUTH. Para recuperar el número de puertos disponibles en el nodo, utilice el método:
var n = layout.getNumberOfPorts(node);
Tras especificar el número de puertos por cara, se puede elegir con qué puerto se conecta cada enlace.
Para elegir la cara del puerto y el índice de puerto de un enlace:
Para especificar la conexión en el nodo de origen, utilice los métodos:
layout.setFromPortSide(link, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.EAST);
layout.setFromPortIndex(link, 2);
Para especificar la conexión en el nodo de destino, utilice los métodos:
layout.setToPortSide(link, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.WEST);
layout.setToPortIndex(link, 2);
Para obtener el índice de puerto actual de un enlace, utilice los métodos:
var index = layout.getFromPortIndex(link);
var index = layout.getToPortIndex(link);
Las especificaciones de cara del puerto y de índice de puerto son restricciones adicionales para el algoritmo de diseño. Cuantas más restricciones se especifiquen, más difícil será calcular un diseño. Por lo tanto, si se especifica un índice de puerto para demasiados enlaces, el diseño resultante puede que tenga más intersecciones de enlaces y que sea menos equilibrado.

Enlaces de forma bifurcar (DJ)

Si varios enlaces empiezan en la misma posición y se direccionan ortogonalmente, a veces es preferible que los enlaces compartan los dos primeros segmentos del enlace. La forma de un paquete de enlaces de este tipo parece una bifurcación. Para habilitar la modalidad de forma bifurcar para enlaces de salida, llame a:
layout.setFromFork(true);
Para habilitar la modalidad de forma bifurcar para enlaces de entrada:
Utilice el método setToFork. Por ejemplo:
layout.setToFork(true);
Estas sentencias son efectivas sólo si los enlaces se direccionan ortogonalmente. La bifurcación aparece solamente en los enlaces que empiezan o acaban exactamente en el mismo punto. Establecer setFromFork en true no obliga a los enlaces a empezar en el mismo punto. Para obligar a los enlaces a empezar o acabar en el mismo punto, utilice el estilo de conector centrado (consulte Estilo de conector (DJ)) o especifique el mismo puerto para los enlaces (consulte Parámetro índice de puerto (DJ)).
Enlaces
de forma bifurcar de origen y de destino
Enlaces de forma bifurcar
Hay dos parámetros de espaciado para la forma bifurcar:
layout.setMinForkSegmentLength(30);
Establezca la longitud mínima del segmento directamente colindante con el nodo.
layout.setPreferredForkAxisLength(10);
Establece la longitud preferida del eje de la bifurcación de cada ramificación (el segundo segmento colindante con el nodo).
Si la bifurcación tiene cinco ramificaciones, la longitud preferida de todo el eje es de cinco veces el parámetro especificado. La longitud preferida del eje de la bifurcación sólo es una sugerencia para el algoritmo de diseño. Si hay espacio suficiente, el algoritmo aumenta el eje de la bifurcación para evitar curvas innecesarias de los enlaces. Si no hay espacio suficiente, el algoritmo puede calcular un eje de la bifurcación menor que el preferido.
A veces, los enlaces de forma bifurcar pueden resultar ambiguos, en particular si un enlace empieza en el mismo punto en que acaba otro. En este caso, es imposible reconocer si la punta de flecha pertenece a un enlace o al otro.

Parámetro prioridad del enlace (DJ)

El algoritmo de diseño intenta colocar los nodos de forma que todos los enlaces sean cortos, apunten en la dirección del flujo y no se intersequen. Sin embargo, no siempre es posible. Con frecuencia, los enlaces no tienen la misma longitud. Si el gráfico tiene cycles, la dirección de algunos enlaces debe invertirse con respecto a la dirección del flujo. Si el gráfico es un nonplanar graph, algunos enlaces tienen que intersecarse.
El parámetro prioridad del enlace controla qué enlaces deben seleccionarse si hacen falta enlaces largos, invertidos o que se intersequen. Es más probable que se seleccionen los enlaces con una prioridad baja que los enlaces con una prioridad alta. Esto no significa que los enlaces con una prioridad baja siempre sean más largos, invertidos o que se intersequen. El gráfico puede tener una estructura tal que no sean necesarios enlaces largos, invertidos o que se intersequen.
Para establecer la prioridad del enlace:
Utilice los métodos:
layout.setLinkPriority(link, 0.5);
var priority = layout.getLinkPriority();
El valor predeterminado de la prioridad de los enlaces es 1,0. No se permiten prioridades de enlaces negativas.
Para ver un ejemplo de uso de la prioridad de los enlaces, supongamos el ciclo A->B->C->D->E->A. Es imposible diseñar este gráfico sin invertir algún enlace. Por consiguiente, el algoritmo de diseño selecciona un enlace que se debe invertir. Para controlar qué enlace se selecciona, puede otorgar a un enlace una prioridad más baja que a los otros. Es este enlace el que se invertirá. En la figura Trabajar con prioridades de enlaces , el diseño de abajo muestra el uso de la prioridad de los enlaces. Al enlace C->D se le ha otorgado la prioridad 0,5, mientras que los demás enlaces tienen la prioridad 1,0. Por lo tanto, el enlace C-D se invierte. El diseño de arriba en Trabajar con prioridades de enlaces muestra lo que sucede cuando todos los enlaces tienen la misma prioridad. El enlace E->A se invierte.
Trabajar
con prioridades de enlaces
Trabajar con prioridades de enlaces
El uso de las prioridades de enlaces es importante en combinación con los puertos. Los enlaces con puertos “de origen” en el lado sur y con puertos “de destino” en el lado norte se presentan preferentemente en sentido opuesto a la dirección del flujo. Un enlace de respuesta como este puede hacer que algunas partes del dibujo se vuelquen. En la figura Utilización de prioridades de enlaces y puertos se muestra un ejemplo. El enlace rojo es un enlace de respuesta con especificaciones de puerto. Para obtener el resultado correcto que se muestra en el lado derecho de la figura siguiente, debería establecer la prioridad del enlace de respuesta en un valor muy bajo.
Ejemplo
del efecto de otorgar una prioridad inferior a un
enlace
Utilización de prioridades de enlaces y puertos

Parámetros de espaciado (DJ)

El espaciado del diseño se controla mediante tres tipos de parámetros de espacio: el desplazamiento mínimo entre nodos, el desplazamiento mínimo entre segmentos paralelos de enlaces y el desplazamiento mínimo entre el borde de un nodo y el punto de inflexión de un enlace o un segmento de enlace que es paralelo a este borde. El desplazamiento entre segmentos paralelos de enlaces es al mismo tiempo el desplazamiento entre puntos de inflexión de enlaces. Los tres tipos de parámetros se producen en ambas direcciones: horizontal y verticalmente.
Parámetros
de espaciado horizontales y verticales utilizados por el diseño
jerárquico
Parámetros de espaciado
Para establecer los parámetros de espaciado:
Para un diseño con niveles horizontales (la dirección del flujo es hacia arriba o hacia abajo), el desplazamiento horizontal de nodos es la distancia mínima entre nodos del mismo nivel. El desplazamiento vertical de nodos es la distancia mínima entre nodos de diferentes niveles, es decir, la distancia mínima entre los niveles. Para los estilos de enlace no ortogonales, el desplazamiento horizontal de enlaces es básicamente la distancia mínima entre puntos de inflexión de enlaces. El desplazamiento horizontal de nodo a enlace es la distancia mínima entre el borde del nodo y el punto de inflexión de un enlace. Para los niveles horizontales, el desplazamiento vertical de enlaces y el desplazamiento vertical de nodo a enlace desempeñan una función sólo si las formas de los enlaces son ortogonales.
Igualmente, para un diseño con niveles verticales (la dirección del flujo es hacia la izquierda o hacia la derecha), el desplazamiento vertical de nodos controla las distancias entre nodos dentro de los niveles. El desplazamiento horizontal de nodos es la distancia mínima entre los niveles. En este caso, el desplazamiento vertical de enlaces y el desplazamiento vertical de nodo a enlace siempre desempeñan una función, mientras que el desplazamiento horizontal de enlaces y el desplazamiento horizontal de nodo a enlace sólo afectan al diseño con enlaces ortogonales.
Para los enlaces ortogonales, el desplazamiento horizontal de enlaces es la distancia mínima entre segmentos de enlaces verticales paralelos. El desplazamiento vertical de enlaces es la distancia mínima entre segmentos de enlaces horizontales paralelos. Sin embargo, el algoritmo de diseño no siempre puede satisfacer estos requisitos de desplazamiento. Si un nodo es muy pequeño pero tiene muchos enlaces incidentes, puede ser imposible colocar los enlaces ortogonalmente con la distancia mínima entre enlaces especificada en el borde del nodo. En este caso, el algoritmo coloca algunos segmentos de enlaces más cerca que el desplazamiento de enlace especificado.
Parámetros
de espaciado de enlaces ortogonales en un diseño
jerárquico
Parámetros de espaciado de los enlaces ortogonales