As opções a seguir são apenas para ibm_ilog.graphlayout.shortlink.ShortLinkLayout.
Estilo de Self-link
Self-links são links cuja origem e destino
são o mesmo nó. O Layout de Link Curto fornece duas formas opcionais
para self-links.

Opções de estilo de self-link
Exemplo de Configuração de Estilo dos self-links (algoritmo de
Layout de Link)
Para configurar o estilo dos self-links:
Use o método setGlobalSelfLinkStyle:
layout.setGlobalSelfLinkStyle(ibm_ilog.graphlayout.shortlink.ShortLinkLayout.TWO_BEND_ORTHOGONAL_STYLE);
Os valores válidos para o estilo são:
- ibm_ilog.graphlayout.shortlink.ShortLinkLayout.TWO_BENDS_ORTHOGONAL_STYLE
- ibm_ilog.graphlayout.shortlink.ShortLinkLayout.THREE_BENDS_ORTHOGONAL_STYLE
Número de Iterações de Otimização
The link shape optimization is stopped if the time exceeds
the allowed time; see Tempo Permitido (LL)), or if the
number of iterations exceeds the allowed number of iterations.
Exemplo de Especificação do Número de Iterações de Otimização
(algoritmo de Layout de Link)
Para configurar o número permitido de iterações como 3:
Use o método setAllowedNumberOfIterations:
layout.setAllowedNumberOfIterations(3);
Nota
You might want to disable the link shape optimization
by setting the number of iterations to zero to increase the speed
of the layout process.
Proporção de Margem de Pinos Espaçados Uniformemente
A proporção de margem permite customizar a forma que os pontos de conexão
são calculados quando o estilo de conector (consulte Estilo de Conector) é
EVENLY_SPACED_PINS
,
e quando o AUTOMATIC_STYLE
posiciona
os pontos de conexão usando o estilo EVENLY_SPACED_PINS
.
Esta opção não terá efeito se o estilo de conector FIXED_OFFSET_PINS
for
usado. No estilo de conector de “pinos espaçados uniformemente”,
os pontos de conexão dos links são espaçados uniformemente na borda
do nó, preservando uma margem em cada extremidade da borda do nó. O tamanho desta margem é controlado pela proporção de margem
e é calculado multiplicando o deslocamento entre os links pela proporção.
Exemplo de Especificação da Proporção de Margem (algoritmo de Layout
de Link)
Para especificar esta opção:
Use o método setEvenlySpacedPinsMarginRatio:
layout.setEvenlySpacedPinsMarginRatio(1);
O valor de entrada deve ser um valor positivo ou zero. O
valor padrão é
0.5
. Proporção da Margem de Pinos Espaçados Uniformemente mostra exemplos
de valores com seu significado. Proporção da Margem de Pinos Espaçados Uniformemente
Valor de proporção |
Significado |
---|---|
0 |
Sem margem. |
0.5 (valor padrão) |
A margem é igual à metade do deslocamento entre
os links. |
1 |
A margem é igual ao deslocamento entre
os links. |
2 |
A margem é igual ao dobro do deslocamento entre
os links. |
Nós de Sobreposição de Link Proibidos
Com esta opção, é possível solicitar o algoritmo de layout
para evitar o redimensionamento estrito de links, de forma que eles sobreponham alguns nós.
Se as sobreposições não forem proibidas, o algoritmo tentará evitar sobreposições
de qualquer forma, mas criará sobreposições, por exemplo, para o link cruzar
outros links.
Nota
A proibição de sobreposições pode reduzir a velocidade do layout e pode aumentar
o número de curvaturas para os links que sobreporiam nós
se as sobreposições não fossem estritamente proibidas.
Exemplo de Especificação de Nós de Sobreposição de Links Proibidos (algoritmo de
Layout de Link)
Para especificar esta opção:
Use o método setLinkOverlapNodesForbidden:
layout.setLinkOverlapNodesForbidden(true);
O valor padrão desta opção é
false
.
Quando as sobreposições são proibidas, o algoritmo de Layout de Link Curto
usa o Layout de Link Longo como um algoritmo auxiliar para organizar
apenas os links que, de outra maneira, sobreporiam os nós.
Exemplo de Especificação de Layout de Link Longo Quando
as Sobreposições São Proibidas (algoritmo de Layout de Link)
Para recuperar a instância auxiliar do Layout de Link Longo:
Chame o seguinte método na instância ibm_ilog.graphlayout.shortlink.ShortLinkLayout:
var longLinkLayout = layout.getAuxiliaryLongLinkLayout();
Este método permite obter esta instância de layout auxiliar
e customizar seus parâmetros, se necessário. You must not modify the
origin and destination point mode, nor disable the preservation of
fixed links.
Modo de Redimensionamento de Link Incremental
In incremental mode, it is possible to customize the
rules used by Short Link Layout to determine which links must keep
their current shape as much as possible, as computed by the previous
layout execution. Com o modo de redimensionamento de link incremental, é possível customizar
estas regras separadamente para duas categorias de links.
Consulte os métodos setLinkConnectionBoxInterface e setNodeBoxInterface.
- Os “links modificados”: links que possuem uma “caixa de conexão de link” diferente ou estão conectados aos nós que possuem uma caixa delimitadora diferente durante a execução do layout anterior.
- Os “links não modificados”: links que possuem a mesma “caixa de conexão de link” e estão conectados aos nós que possuem a mesma caixa delimitadora durante a execução do layout anterior.
O modo pode ser customizado para duas ou apenas para uma
destas categorias de links.
O modo de redimensionamento de link incremental não terá efeito se o
modo incremental estiver desativado.
O algoritmo de layout fornece dois modos de redimensionamento de link incremental. É possível configurar o modo globalmente, neste caso, todos os links
têm o mesmo modo, ou localmente em cada link, neste caso, ocorrem
modos diferentes no mesmo desenho.
Modo de Redimensionamento de Link Incremental Global
Example of specifying a global incremental link reshape
mode (Link Layout algorithm)
Para especificar o modo de redimensionamento incremental global:
Use os métodos setGlobalIncrementalModifiedLinkReshapeMode e setGlobalIncrementalUnmodifiedLinkReshapeMode.
layout.setGlobalIncrementalModifiedLinkReshapeMode(ibm_ilog.graphlayout.shortlink.ShortLinkLayout.FIXED_NODE_SIDES_MODE);
Os valores válidos para
mode
são:
- ibm_ilog.graphlayout.shortlink.ShortLinkLayout.FIXED_SHAPE_TYPE_MODE (o padrão)O layout incremental preserva o tipo de forma do link. Isto significa que o número de curvaturas e os lados do nó aos quais o link está conectado são preservados.
- ibm_ilog.graphlayout.shortlink.ShortLinkLayout.FIXED_NODE_SIDES_MODEO layout incremental preserva os lados do nó aos quais os links estão conectados.
- ibm_ilog.graphlayout.shortlink.ShortLinkLayout.FIXED_CONNECTION_POINTS_MODEO layout incremental preserva os pontos de conexão dos links.
- ibm_ilog.graphlayout.shortlink.ShortLinkLayout.FIXED_MODEOs links não são redimensionados durante o layout incremental. Apenas os links recém-incluídos serão roteados novamente.
- ibm_ilog.graphlayout.shortlink.ShortLinkLayout.FREE_MODEO layout incremental pode redimensionar os links livremente. It is equivalent to non-incremental behavior for all the links; hence it is recommended to disable incremental mode instead of using
FREE_MODE
as global incremental reshape mode.As configurações que podem ter sido executadas “fixando” os links (consulte Preservar Links Fixos (LL)) ou customizando o modo de ponto de origem ou de destino (consulte Modo de Terminais (LL)) ainda são mantidas. - ibm_ilog.graphlayout.shortlink.ShortLinkLayout.MIXED_MODECada link pode ter um modo diferente.
Modo de Redimensionamento de Link Incremental Individual
Todos os links possuem o mesmo modo de redimensionamento de link incremental,
a menos que o modo de redimensionamento de link incremental global seja ibm_ilog.graphlayout.shortlink.ShortLinkLayout.MIXED_MODE.
Apenas quando o modo global estiver configurado como
MIXED_MODE
,
cada link poderá ter um modo individual. Example of specifying an individual incremental link
reshape mode (Link Layout algorithm)
Para especificar o modo de um link individual:
Use os seguintes métodos na instância
ibm_ilog.graphlayout.shortlink.ShortLinkLayout
: layout.setIncrementalModifiedLinkReshapeMode(link, mode);
layout.setIncrementalUnmodifiedLinkReshapeMode(link, mode);
var mode = layout.getIncrementalModifiedLinkReshapeMode(link);
var mode = layout.getIncrementalUnmodifiedLinkReshapeMode(link);
Os valores válidos para
mode
são: ibm_ilog.graphlayout.shortlink.ShortLinkLayout.FIXED_SHAPE_TYPE_MODE
(o padrão)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
Mesma Forma para Vários Links
É possível forçar o algoritmo de layout para calcular a mesma forma
para todos os links que possuem nós de origem e de destino comuns.
Os links possuem formas paralelas.
Quando esta opção for desativada, o layout ficará livre para calcular
formas diferentes para links que se conectam ao mesmo par de nós. Geralmente,
são escolhidas formas diferentes para evitar algumas sobreposições.

Same shape for multiple links option
Exemplo de Especificação da Mesma Forma para Vários Links
(algoritmo de Layout de Link)
Para ativar a mesma forma para vários links:
Use o método:
layout.setSameShapeForMultipleLinks(true);
O valor padrão é
false
. Penalidade de Cruzamento de Links
O cálculo da forma dos links é orientado pelo objetivo
de minimizar uma função de custo, que é proporcional ao número
de cruzamentos de link para link e de cruzamentos de link para nó. Por
padrão, estes dois tipos de cruzamento possuem pesos iguais de
1
.
É possível aumentar o peso dos cruzamentos de link para nó. Exemplo de Especificação de Penalidade de Cruzamento de Link para Nó
(algoritmo de Layout de Link)
Para aumentar o peso dos cruzamentos de link para nó:
Use o método:
layout.setLinkToNodeCrossingPenalty(5);
This setting increases the possibility of obtaining a
layout with no link-to-node crossings (or with only a few crossings),
at the expense of the possibility that more link-to-link crossings
could occur.
Como alternativa, é possível aumentar o peso dos cruzamentos de link para link.
Exemplo de Especificação de Penalidade de Cruzamento de Link para Link
(algoritmo de Layout de Link)
Para aumentar o peso dos cruzamentos de link para link,
por exemplo, para um valor de
3
: Use o método:
layout.setLinkToLinkCrossingPenalty(3);
This setting increases the possibility of obtaining a
layout with no link-to-link crossings (or with only a few crossings),
at the expense of the possibility of more link-to-node crossings.
Distância de Bypass
If the origin and destination nodes are too close, there
might not be enough space for routing the link directly between the
end nodes. Portanto, por padrão, se os nós de extremidade estiverem mais próximos
do que uma distância de limite, o layout escolherá formas de links que ignoram o intervalo
entre nós próximos. (Consulte Nós de extremidade e distância de bypass.)

Nós de extremidade e distância de bypass
A distância de bypass é a distância mínima entre os nós de origem e de
destino para os quais é permitida uma forma de link que vai diretamente
de um nó para o outro. O algoritmo tenta evitar formas de
links que conectam diretamente os lados dos nós de extremidade que estão
mais próximos do que o valor de bypass.
Exemplo de Especificação da Distância de Bypass (algoritmo de Layout
de Link)
Para configurar a distância de bypass:
Use o método setBypassDistance.
layout.setBypassDistance(1);
O valor padrão é um valor estritamente negativo. Se a distância de
bypass for estritamente negativa, o valor do parâmetro de comprimento mínimo do segmento final
será usado como a distância de bypass. Consulte o Comprimento Mínimo do Segmento Final. It allows
the automatic adjustment of the bypass distance according to the current
value of the minimum final segment length. Este comportamento é apropriado na maioria
dos casos. É possível especificar um valor não negativo para substituir o comportamento padrão.
Usando uma Interface da Caixa de Conexão de Link
Por padrão, os pontos de conexão
dos links são distribuídos na borda da caixa delimitadora dos nós,
simetricamente em relação ao meio de cada lado. Sometimes, it might be necessary
to place the connection points on a rectangle smaller or larger than
the bounding box, possibly in an asymmetric way. For example, when
labels are displayed below or above nodes.
Exemplo de Uso de uma Interface da Caixa de Conexão de Link para Modificar
a Posição dos Pontos de Conexão (algoritmo de Layout de Link)
É possível modificar a posição dos pontos de conexão
dos links implementando uma classe que implementa a interface ILinkConnectionBoxProvider.
Esta interface define o seguinte método:
getBox(graphModel, node)
With this method, you can obtain the effective rectangle
on which the connection points of the links are placed.
Um segundo método definido na interface permite que os
pontos de conexão sejam deslocados tangencialmente, de uma maneira
diferente para cada lado de cada nó:
getTangentialOffset(graphModel, node, nodeSide)
For example, to set a link connection box provider that
returns a link connection rectangle that is smaller than the bounding
box for all nodes of type
MyNode
and that
shifts up the connection points on the left and right side of all
the nodes, call: 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());
Opções de estilo de self-link mostra os efeitos
da customização da caixa de conexão. À esquerda está o resultado
usando as configurações padrão: os pontos de conexão são distribuídos
na caixa delimitadora do nó (que inclui o rótulo) e são simétricos
com o meio de cada lado do nó (incluindo o rótulo).
On the right is the result after specifying a link connection box interface. On the lower side of the nodes,
the links are now connected to the node (passing over the label),
while on the left and right sides of the nodes, the connection points
are now symmetric to the middle of the node (without the label).

Customização da caixa de conexão de link