Las opciones siguientes son sólo para ibm_ilog.graphlayout.shortlink.ShortLinkLayout.
Estilo de autoenlace
Los autoenlaces son enlaces cuyo origen y destino son el
mismo nodo. El Diseño de enlaces cortos proporciona dos formas
opcionales para los autoenlaces.

Opciones del estilo de autoenlace
Ejemplo de cómo establecer el estilo de los autoenlaces
(algoritmo Diseño de enlaces)
Para establecer el estilo de los autoenlaces:
Utilice el método setGlobalSelfLinkStyle:
layout.setGlobalSelfLinkStyle(ibm_ilog.graphlayout.shortlink.ShortLinkLayout.TWO_BEND_ORTHOGONAL_STYLE);
Los valores válidos para el estilo de enlace son:
- ibm_ilog.graphlayout.shortlink.ShortLinkLayout.TWO_BENDS_ORTHOGONAL_STYLE
- ibm_ilog.graphlayout.shortlink.ShortLinkLayout.THREE_BENDS_ORTHOGONAL_STYLE
Número de iteraciones de optimización
La optimización de formas de enlaces se detiene si el
tiempo supera el tiempo permitido (consulte
Tiempo permitido (DE) )
o si el número de iteraciones supera el número permitido de
iteraciones.
Ejemplo de cómo especificar el número de iteraciones de
optimización (algoritmo Diseño de enlaces)
Para establecer el número permitido de iteraciones en 3:
Utilice el método setAllowedNumberOfIterations:
layout.setAllowedNumberOfIterations(3);
Nota
Puede que desee inhabilitar la optimización de formas de
enlaces estableciendo el número de iteraciones en cero para aumentar
la velocidad del proceso de diseño.
Coeficiente de margen de fijaciones espaciadas de manera uniforme
El coeficiente de margen permite personalizar la forma
de calcular los puntos de conexión cuando el estilo de conector
(consulte
Estilo de conector )
es
EVENLY_SPACED_PINS
y cuando
el AUTOMATIC_STYLE
coloca los
puntos de conexión utilizando el estilo
EVENLY_SPACED_PINS
. Esta
opción no tiene ningún efecto si se utiliza el estilo de conector
FIXED_OFFSET_PINS
. En el estilo de conector “fijaciones
espaciadas de manera uniforme”, los puntos de conexión
de los enlaces están uniformemente espaciados a lo largo del borde
del nodo, conservando un margen en cada extremo del borde del nodo.
El tamaño de este margen se controla mediante el coeficiente de
margen y se calcula multiplicando el desplazamiento entre los enlaces
por el coeficiente.
Ejemplo de cómo especificar el coeficiente de margen
(algoritmo Diseño de enlaces)
Para especificar esta opción:
Utilice el método setEvenlySpacedPinsMarginRatio:
layout.setEvenlySpacedPinsMarginRatio(1);
El valor de entrada debe ser un valor positivo o cero.
El valor predeterminado es
0.5
. En
Coeficiente de margen de fijaciones espaciadas de manera uniforme
se muestran ejemplos de valores y su significado. Coeficiente de margen de fijaciones espaciadas de manera uniforme
Valor del coeficiente |
Significado |
---|---|
0 |
Sin márgenes. |
0,5 (valor predeterminado) |
El margen es igual a la mitad del
desplazamiento entre los enlaces. |
1 |
El margen es igual al desplazamiento entre
los enlaces. |
2 |
El margen es igual al doble del
desplazamiento entre los enlaces. |
Prohibido el solapamiento de enlaces con nodos
Con esta opción puede solicitar al algoritmo de diseño
que evite siempre el cambio de forma de los enlaces en caso de que se
solapen con algunos nodos. Si los solapamientos no están prohibidos,
el algoritmo intenta evitarlos de todas formas, pero puede que se
cree alguno, por ejemplo, porque el enlace se interseca con otros
enlaces.
Nota
Prohibir los solapamientos puede ralentizar el diseño y
puede aumentar el número de curvas para los enlaces que se solaparían
con otros nodos si los solapamientos no estuvieran estrictamente
prohibidos.
Ejemplo de cómo especificar el parámetro prohibido el
solapamiento de enlaces con nodos (algoritmo Diseño de enlaces)
Para especificar esta opción:
Utilice el método setLinkOverlapNodesForbidden:
layout.setLinkOverlapNodesForbidden(true);
El valor predeterminado de esta opción es
false
.
Cuando los solapamientos están prohibidos, el algoritmo
Diseño de enlaces cortos utiliza el Diseño de enlaces largos como
algoritmo auxiliar para diseñar sólo los enlaces que, de lo
contrario, se solaparían con otros nodos.
Ejemplo de cómo especificar el Diseño de enlaces largos
cuando los solapamientos están prohibidos (algoritmo Diseño de
enlaces)
Para recuperar la instancia auxiliar de Diseño de
enlaces largos:
Llame al método siguiente en la instancia de
ibm_ilog.graphlayout.shortlink.ShortLinkLayout:
var longLinkLayout = layout.getAuxiliaryLongLinkLayout();
Este método le permite obtener esta instancia de diseño
auxiliar y personalizar sus parámetros si es necesario. No debe
modificar la modalidad de punto de origen y de destino, ni
inhabilitar la conservación de enlaces fijos.
Modalidad de cambio de forma de enlaces incremental
En la modalidad incremental es posible personalizar las
reglas utilizadas por el Diseño de enlaces cortos para determinar qué
enlaces deben conservar su forma actual en la medida de lo posible,
tal y como se había calculado en la ejecución del diseño anterior.
Con la modalidad de cambio de forma de enlaces incremental, estas
reglas pueden personalizarse por separado para dos categorías de
enlaces.
Consulte los métodos setLinkConnectionBoxInterface
y setNodeBoxInterface.
- Los “enlaces modificados”: enlaces que tienen un “recuadro de conexión de enlace” diferente o están conectados a nodos que tienen un recuadro delimitador diferente que durante la ejecución del diseño anterior.
- Los “enlaces sin modificar”: enlaces que tienen el mismo “recuadro de conexión de enlace” y están conectados a nodos que tienen el mismo recuadro delimitador que durante la ejecución del diseño anterior.
La modalidad se puede personalizar para una de estas
categorías de enlaces o para ambas.
La modalidad de cambio de forma de enlaces incremental
no tiene ningún efecto si la modalidad incremental está inhabilitada.
El algoritmo de diseño proporciona dos modalidades de
cambio de forma de enlaces incremental. Se puede establecer la
modalidad de forma global, en cuyo caso todos los enlaces tienen la
misma modalidad, o de forma local en cada enlace, de modo que pueden
encontrarse diferentes modalidades en el mismo dibujo.
Modalidad de cambio de forma de enlaces incremental global
Ejemplo de cómo especificar una modalidad de cambio de
forma de enlaces incremental global (algoritmo Diseño de enlaces)
Para especificar la modalidad de cambio de forma de
enlaces incremental global:
Utilice los métodos setGlobalIncrementalModifiedLinkReshapeMode
y setGlobalIncrementalUnmodifiedLinkReshapeMode.
layout.setGlobalIncrementalModifiedLinkReshapeMode(ibm_ilog.graphlayout.shortlink.ShortLinkLayout.FIXED_NODE_SIDES_MODE);
Los valores válidos para
mode
son: - ibm_ilog.graphlayout.shortlink.ShortLinkLayout.FIXED_SHAPE_TYPE_MODE (valor predeterminado)El diseño incremental conserva el tipo de forma del enlace. Esto significa que se conserva tanto el número de curvas como las caras de los nodos a las que se conecta el enlace.
- ibm_ilog.graphlayout.shortlink.ShortLinkLayout.FIXED_NODE_SIDES_MODEEl diseño incremental conserva las caras de los nodos a las que se conectan los enlaces.
- ibm_ilog.graphlayout.shortlink.ShortLinkLayout.FIXED_CONNECTION_POINTS_MODEEl diseño incremental conserva los puntos de conexión de los enlaces.
- ibm_ilog.graphlayout.shortlink.ShortLinkLayout.FIXED_MODENo se cambia la forma de los enlaces durante la ejecución del diseño incremental. Sólo se redireccionan los enlaces que se acaban de añadir.
- ibm_ilog.graphlayout.shortlink.ShortLinkLayout.FREE_MODEEl diseño incremental puede cambiar la forma de los enlaces libremente. Es equivalente a un comportamiento no incremental de todos los enlaces; de ahí que lo recomendable sea inhabilitar la modalidad incremental en lugar de utilizar
FREE_MODE
como modalidad de cambio de forma de enlaces incremental global.Los valores que se hayan obtenido “fijando” enlaces (consulte Conservar enlaces fijos (DE) ) o personalizando la modalidad de punto de origen o de destino (consulte Modalidad de puntos finales (DE)) se siguen manteniendo. - ibm_ilog.graphlayout.shortlink.ShortLinkLayout.MIXED_MODECada enlace puede tener una modalidad diferente.
Modalidad de cambio de forma de enlaces incremental individual
Todos los enlaces tienen la misma modalidad de cambio de
forma de enlaces incremental a menos que la modalidad de cambio de
forma de enlaces incremental global sea
ibm_ilog.graphlayout.shortlink.ShortLinkLayout.MIXED_MODE.
Sólo si la modalidad global se establece en
MIXED_MODE
cada enlace tiene
una modalidad individual. Ejemplo de cómo especificar una modalidad de cambio de
forma de enlaces incremental individual (algoritmo Diseño de enlaces)
Para especificar la modalidad de un enlace individual:
Utilice los métodos siguientes en la instancia de
ibm_ilog.graphlayout.shortlink.ShortLinkLayout
: layout.setIncrementalModifiedLinkReshapeMode(link, mode);
layout.setIncrementalUnmodifiedLinkReshapeMode(link, mode);
var mode = layout.getIncrementalModifiedLinkReshapeMode(link);
var mode = layout.getIncrementalUnmodifiedLinkReshapeMode(link);
Los valores válidos para
mode
son: ibm_ilog.graphlayout.shortlink.ShortLinkLayout.FIXED_SHAPE_TYPE_MODE
(valor predeterminado)ibm_ilog.graphlayout.shortlink.ShortLinkLayout.FIXED_NODE_SIDES_MODE
ibm_ilog.graphlayout.shortlink.ShortLinkLayout.FIXED_CONNECTION_POINTS_MODE
ibm_ilog.graphlayout.shortlink.ShortLinkLayout.FREE_MODE
ibm_ilog.graphlayout.shortlink.ShortLinkLayout.FIXED_MODE
La misma forma para varios enlaces
Puede obligar al algoritmo de diseño a calcular la misma
forma para todos los enlaces que tienen nodos de origen y de destino
comunes.
Los enlaces tienen formas paralelas.
Cuando esta opción está inhabilitada, el diseño puede
calcular libremente formas diferentes para los enlaces que se
conectan al mismo par de nodos. Por lo general, se eligen formas
distintas para evitar algunos solapamientos.

Opción la misma forma para varios enlaces
Ejemplo de cómo especificar la misma forma para varios
enlaces (algoritmo Diseño de enlaces)
Para habilitar la misma forma para varios enlaces:
Utilice el método:
layout.setSameShapeForMultipleLinks(true);
El valor predeterminado es
false
.
Penalización de las intersecciones de enlaces
El cálculo de la forma de los enlaces tiene el objetivo
de minimizar una función de coste, que es proporcional al número de
intersecciones de enlace a enlace y de enlace a nodo. De forma
predeterminada, estos dos tipos de intersecciones tienen el mismo
peso,
1
.
Puede aumentar el peso de las intersecciones de enlace a nodo. Ejemplo de cómo especificar la penalización de las
intersecciones de enlace a nodo (algoritmo Diseño de enlaces)
Para aumentar el peso de las intersecciones de enlace a
nodo:
Utilice el método:
layout.setLinkToNodeCrossingPenalty(5);
Este valor aumenta la posibilidad de obtener un diseño
sin intersecciones de enlace a nodo (o sólo con unas pocas
intersecciones) en detrimento de la posibilidad de que se puedan
producir más intersecciones de enlace a enlace.
Opcionalmente, puede aumentar el peso de las
intersecciones de enlace a enlace.
Ejemplo de cómo especificar la penalización de las
intersecciones de enlace a enlace (algoritmo Diseño de enlaces)
Para aumentar el peso de las intersecciones de enlace a
enlace, por ejemplo, en un valor de
3
: Utilice el método:
layout.setLinkToLinkCrossingPenalty(3);
Este valor aumenta la posibilidad de obtener un diseño
sin intersecciones de enlace a enlace (o sólo con unas pocas
intersecciones) en detrimento de la posibilidad de que haya más
intersecciones de enlace a nodo.
Distancia de bypass
Si los nodos de origen y de destino están demasiado
cerca, puede que no haya suficiente espacio para direccionar el
enlace directamente entre los nodos finales. Por lo tanto, de forma
predeterminada, si los nodos finales están más cerca que una
distancia umbral, el diseño elige formas de enlace que omiten el
intervalo entre los nodos cercanos. (Consulte
Nodos finales y distancia de bypass. ).

Nodos finales y distancia de bypass.
La distancia de bypass es la distancia mínima entre los
nodos de origen y de destino permitida para una forma de enlace que
va directamente de un nodo a otro. El algoritmo intenta evitar las
formas de enlace que se conectan directamente a las caras de los
nodos finales que están más cerca que el valor de bypass.
Ejemplo de cómo especificar la distancia de bypass (algoritmo Diseño de enlaces)
Para establecer la distancia de bypass:
Utilice el método setBypassDistance.
layout.setBypassDistance(1);
El valor predeterminado es un valor estrictamente
negativo. Si la distancia de bypass es estrictamente negativa, se
utiliza el valor del parámetro longitud mínima del segmento final
como distancia de bypass. Consulte
Longitud mínima del segmento final .
Permite el ajuste automático de la distancia de bypass según el valor
actual de la longitud mínima del segmento final. Este
comportamiento es adecuado en la mayoría de los casos. Puede
especificar un valor no negativo para alterar temporalmente el
comportamiento predeterminado.
Utilización de una interfaz de recuadro de conexión de enlace
De forma predeterminada, los puntos de conexión de los
enlaces se distribuyen en el borde del recuadro delimitador de los
nodos simétricamente respecto al centro de cada cara. A veces, puede
ser necesario colocar los puntos de conexión en un rectángulo menor o
mayor que el recuadro delimitador, posiblemente de forma asimétrica.
Por ejemplo, cuando se muestran etiquetas debajo o encima de los
nodos.
Ejemplo de cómo utilizar una interfaz de recuadro de
conexión de enlace para modificar la posición de los puntos de
conexión (algoritmo Diseño de enlaces)
Puede modificar la posición de los puntos de conexión de
los enlaces implementando una clase que implemente la interfaz de
ILinkConnectionBoxProvider.
Esta interfaz define el método siguiente:
getBox(graphModel, node)
Con este método puede obtener el rectángulo útil en que
se colocan los puntos de conexión de los enlaces.
Un segundo método definido en la interfaz permite
desplazar tangencialmente los puntos de conexión de un modo distinto
para cada cara de cada nodo:
getTangentialOffset(graphModel, node, nodeSide)
Por ejemplo, para establecer un proveedor de recuadro de
conexión de enlace que devuelva un rectángulo de conexión de enlace
que es menor que el recuadro delimitador para todos los nodos de tipo
MyNode
y que desplace hacia
arriba los puntos de conexión de las caras derecha e izquierda de
todos los nodos, llame a: dojo.declare('MyLinkConnectionBoxProvider', ibm_ilog.graphlayout.ILinkConnectionBoxProvider, { getBox: function(graphModel, node) { var rect:Rectangle = graphModel.getBounds(node); if (node is MyNode) { // for example, the size of the bounding box is reduced: rect.x += 4; rect.y += 4; rect.width -= 8; rect.height -= 8; } return rect; }, getTangentialOffset: function(graphModel, node, side) { switch (side) { case ibm_ilog.graphlayout.Direction.LEFT: case ibm_ilog.graphlayout.Direction.RIGHT: return -10; // shift up with 10 for both left and right side case ibm_ilog.graphlayout.Direction.TOP: case ibm_ilog.graphlayout.Direction.BOTTOM: default: return 0; // no shift for top and bottom side } } }); layout.setLinkConnectionBoxProvider(new MyLinkConnectionBoxProvider());
Opciones del estilo de autoenlace
muestra el efecto de personalizar el recuadro de conexión. A la
izquierda se puede ver el resultado utilizando los valores
predeterminados: los puntos de conexión están distribuidos en el
recuadro delimitador del nodo (que incluye la etiqueta) y son
simétricos respecto al centro de cada cara del nodo (incluida la
etiqueta). A la derecha se puede ver el resultado después de
especificar una interfaz de
link connection box. En la cara inferior de
los nodos, ahora los enlaces están conectados al nodo (pasando sobre
la etiqueta), mientras que en las caras derecha e izquierda de los
nodos, los puntos de conexión ahora son simétricos respecto al centro
del nodo (sin la etiqueta).

Personalización del recuadro de conexión de enlace