Parâmetros Específicos para Layouts de Links Curto e Longo

Modo de Layout (LL)

The figure Modos de links curto e longo com links ortogonais shows a small sample graph in short and long link modes. The short link mode bundles the links well. Devido à inclusão no pacote configurável, alguns links vermelhos parecem estar desconectados dos nós verdes. O algoritmo não pode localizar uma rota para os links vermelhos longos sem sobrepor alguns nós ou sem sobrepor o link verde. O modo de link longo funciona em uma grade. Ele é especializado para links longos e evita a sobreposição de quaisquer segmentos de nós ou de links. Ele pode conectar-se aos nós verdes escolhendo pontos de conexão nos diferentes lados dos nós de extremidade. No entanto, esta vantagem é penalizada por uma estrutura menos regular que não inclui no pacote configurável os links e um número maior de cruzamentos de links.
Picture
of link layouts illustrating the short link layout mode and the long
link layout mode
Modos de links curto e longo com links ortogonais

Escolhendo o Layout Apropriado (LL)

The short link mode must be used if any of the following conditions apply:
  • Most links are short and it is not fatal if long links overlap obstacles.
  • As rotas do link devem ser posicionadas livremente e não podem ser restritas a uma grade.
  • É importante limitar o número de curvaturas.
The long link mode must be used if any of the following conditions apply:
  • Muitos links são longos e é importante que os links longos não sobreponham obstáculos.
  • Há um roteamento preferencial porque os nós já estão posicionados na grade.
  • É importante ter uma distância mínima garantida entre segmentos de links.
  • Um número aumentado de curvaturas é aceitável se ele evitar qualquer sobreposição.
Roteamento de labirinto com o layout de link longo mostra como o modo de link longo pode ser usado para localizar uma rota ortogonal sem nenhuma sobreposição em um labirinto dos obstáculos do nó.
Um gráfico
mostra o modo de link longo usado para localizar uma rota ortogonal sem nenhuma sobreposição
em um labirinto de obstáculos do nó
Roteamento de labirinto com o layout de link longo

Estilo de Link (LL)

Os algoritmos de layout fornecem dois estilos de links. You can set the link style globally, in which case all links have the same shape, or locally on each link, in which case different link shapes occur in the same drawing.

Estilo de Link Global

Exemplo de Configuração do Estilo de Link Global (algoritmos de Layout de Link)
Para configurar o estilo de link global:
Use o método setGlobalLinkStyle:
layout.setGlobalLinkStyle(ibm_ilog.graphlayout.shortlink.ShortLinkLayout.ORTHOGONAL_STYLE);
É possível usar ibm_ilog.graphlayout.shortlink.ShortLinkLayout.ORTHOGONAL_STYLE ou ibm_ilog.graphlayout.longlink.LongLinkLayout.ORTHOGONAL_STYLE, dependendo do layout com o qual você trabalha. Os valores das duas constantes são iguais.
Os valores válidos são:
  • ibm_ilog.graphlayout.shortlink. ShortLinkLayout.ORTHOGONAL_STYLE ou ibm_ilog.graphlayout.longlink. LongLinkLayout.ORTHOGONAL_STYLE (o padrão)
    Os links são redimensionados em uma forma ortogonal (alternando segmentos horizontais e verticais). Consulte Layout de Link Curto com Links Ortogonais e Layout de link longo com links ortogonais como exemplos.
  • ibm_ilog.graphlayout.shortlink. ShortLinkLayout.DIRECT_STYLE ou ibm_ilog.graphlayout.longlink. LongLinkLayout.DIRECT_STYLE
    The links are reshaped to a polygonal line composed of three segments: a straight-line segment that starts and ends with a small horizontal or vertical segment. Consulte O mesmo gráfico no layout de link curto com links diretos como um exemplo.
  • ibm_ilog.graphlayout.shortlink. ShortLinkLayout.MIXED_STYLE ou ibm_ilog.graphlayout.longlink. LongLinkLayout.MIXED_STYLE
    Cada link pode ter um estilo de link diferente. O estilo de cada link individual pode ser configurado para ter formas de links diferentes ocorrendo no mesmo gráfico.

Estilo de Link Individual

Todos os links possuem o mesmo estilo de forma, a menos que o estilo de link global seja MIXED_STYLE.
Apenas quando o estilo de link global estiver configurado como MIXED_STYLE, cada link poderá ter um estilo de link individual.
Um gráfico
organizado no modo de link curto com diferentes estilos de links
Diferentes estilos de links combinados no mesmo desenho (layout de link curto)
Um gráfico
organizado no modo de link longo com diferentes estilos de links
Diferentes estilos de links combinados no mesmo desenho (layout de link longo)
Exemplo de Especificação do Estilo de Link Individual (algoritmos de Layout de Link)
Para configurar e recuperar o estilo de um link individual:
Use os métodos:
layout.setLinkStyle(link, ibm_ilog.graphlayout.shortlink.ShortLinkLayout.ORTHOGONAL_STYLE); 
var style = layout.getLinkStyle(node);
Os valores válidos são:
  • ibm_ilog.graphlayout.shortlink.ShortLinkLayout.ORTHOGONAL_STYLE ou ibm_ilog.graphlayout.longlink.LongLinkLayout.ORTHOGONAL_STYLE (o padrão)
  • ibm_ilog.graphlayout.shortlink.ShortLinkLayout.DIRECT_STYLE ou ibm_ilog.graphlayout.longlink.LongLinkLayout.DIRECT_STYLE
  • ibm_ilog.graphlayout.shortlink.ShortLinkLayout.NO_RESHAPE_STYLE ou ibm_ilog.graphlayout.longlink.LongLinkLayout.NO_RESHAPE_STYLE (ou seja, o link não é redimensionado de maneira alguma)

Modo de Terminais (LL)

O algoritmo de layout fornece dois modos de terminais. É possível configurar o modo de terminal globalmente, neste caso, todos os terminais terão o mesmo modo, ou localmente em cada link, neste caso, ocorrem diferentes modos de terminais no mesmo desenho.

Modo de Terminal Global

Exemplo de Especificação de Modo Global e de Terminal (Algoritmo de Layout de Link)
Para configurar o modo de terminal global:
Use os métodos setGlobalOriginPointMode e setGlobalDestinationPointMode.
Os valores válidos para determinar o modo são:
  • ibm_ilog.graphlayout.shortlink.ShortLinkLayout.FREE_MODE ou ibm_ilog.graphlayout.longlink.LongLinkLayout.FREE_MODE (o padrão)
    O layout é livre para escolher a posição apropriada do ponto de conexão no nó de origem ou de destino.
  • ibm_ilog.graphlayout.shortlink.ShortLinkLayout.FIXED_MODE ou ibm_ilog.graphlayout.longlink.LongLinkLayout.FIXED_MODE
    O layout deve manter a posição atual do ponto de conexão no nó de origem ou de destino.
  • ibm_ilog.graphlayout.shortlink.ShortLinkLayout.MIXED_MODE ou ibm_ilog.graphlayout.longlink.LongLinkLayout.MIXED_MODE
    Cada link pode ter um modo de terminal diferente.

Modo de Terminal Individual

Todos os links possuem o mesmo modo de terminal, a menos que o modo de terminal global seja MIXED_MODE.
Apenas quando o modo de terminal global estiver configurado como MIXED_MODE, cada link poderá ter um modo de terminal individual.
Exemplo de Especificação do Modo de Terminal Individual (Algoritmo de Layout de Link)
Para configurar o modo de um link individual:
Use os métodos:
layout.setOriginPointMode(link, mode)  
var mode = getOriginPointMode(link)
layout.setDestinationPointMode(link, mode)
var mode = getDestinationPointMode(link)   
Os valores válidos para mode são:
  • ibm_ilog.graphlayout.shortlink.ShortLinkLayout.FREE_MODE ou ibm_ilog.graphlayout.longlink.LongLinkLayout.FREE_MODE (o padrão)
  • ibm_ilog.graphlayout.shortlink.ShortLinkLayout.FIXED_MODE ou ibm_ilog.graphlayout.longlink.LongLinkLayout.FIXED_MODE

Modo Incremental (LL)

O algoritmo de Layout de Link normalmente roteia todos os links a partir do início. If the graph changes incrementally because you add or remove links or nodes, the subsequent layout can differ considerably from the previous layout. Para evitar este efeito e ajudar o usuário a manter um mapa mental do gráfico, o algoritmo possui um modo incremental.
Exemplo de Ativação do Modo Incremental (Algoritmo de Layout de Link)
Para ativar o modo incremental:
Use o método setIncrementalMode:
layout.setIncrementalMode(true);
No modo incremental, o layout tenta minimizar as mudanças no layout. A link is only rerouted if it is new, if a link bend has moved, if its layout parameters have changed, or if a node was moved such that it overlaps the link.
No modo de link curto, se o próximo layout for incremental, os links preservarão o lado da conexão e a forma geral calculada por um layout anterior, exceto se um de seus nós de extremidade tiver sido movido ou redimensionado.
No modo de link longo, é buscada uma nova rota para os links que não estão mais na grade ou que se sobrepõem com nós. A forma e o lado da conexão dos links roteados novamente podem ser completamente alterados. Os links que já estão na grade e não sobrepõem nós ou outros links não são roteados novamente no modo incremental. Também é possível especificar qual link deve ser roteado novamente pelo próximo layout incremental, mesmo que o layout não tenha sido alterado.
Exemplo de Especificação de Qual Link Deve Ser Roteado Novamente pelo Próximo Layout Incremental (algoritmo de Layout de Link)
Para selecionar um link individual para ser usado para um novo roteamento incremental:
Use o método:
layout.markForIncremental(link)

Roteamento de Links entre Gráficos (LL)

Gráfico aninhado com links normais (azuis) e
links entre gráficos (vermelhos)
Gráfico aninhado com links normais (azuis) e links entre gráficos (vermelhos)
Por padrão, o Layout de Link roteia os links normais e os links entre gráficos.
Exemplo de Roteamento apenas de Links Normais (algoritmo de Layout de Link)
Para rotear apenas links normais, desative o roteamento de links entre gráficos:
Use o método setInterGraphLinksMode:
layout.setInterGraphLinksMode(false);
Exemplo de Roteamento de Links entre Gráficos ou Normais ou Ambos (algoritmo de Layout de Link)
Se o modo de links entre gráficos estiver ativado, será possível selecionar se apenas os links entre gráficos serão roteados ou se os links entre gráficos e os links normais serão roteados ao mesmo tempo.
Configure o método setCombinedInterGraphLinksMode para que o próximo layout roteie os links entre gráficos, mas não redimensione nenhum dos links normais:
layout.setCombinedInterGraphLinksMode(false);
Configure o método setCombinedInterGraphLinksMode para que o próximo layout roteie os links normais e os links entre gráficos:
layout.setCombinedInterGraphLinksMode(true);
Quando o modo de links entre gráficos estiver ativado, o layout não poderá rotear os links incrementalmente. Consulte o Modo Incremental (LL).
O layout roteia apenas os links que pertencem ao gráfico anexado. Em um gráfico aninhado, cada subgráfico é anexado a uma instância de layout diferente. Portanto, ao iniciar um layout normal (não recursivo) para o gráfico de nível superior (consulte Gráfico aninhado com links normais (azuis) e links entre gráficos (vermelhos)), nem todos os links mostrados nesta figura serão roteados, mas apenas os links que pertencem ao gráfico de nível superior.
Na figura a seguir, o sombreamento amarelo indica o subgráfico ao qual o layout de link não recursivo é aplicado. O gráfico de nível superior está à esquerda e à direita está o subgráfico, que é amarelo sombreado. Se o modo de links entre gráficos estiver ativado, os links vermelhos (entre gráficos) e azuis (normais) serão roteados. Se o modo de links entre gráficos estiver desativado, apenas os links azuis (normais) serão roteados. The gray links are not routed because they do not belong to the graph to which the link layout is applied.
Picture
showing which links are routed in a nested graph
Links roteados em um gráfico aninhado: gráfico de nível superior e, em seguida, subgráfico
Para rotear todos os links de um gráfico aninhado:
  • Use o mecanismo de herança padrão que também aplica o layout de link especificado no gráfico de nível superior aos subgráficos.
    ou
  • Especifique um layout de link explicitamente em cada subgráfico.