Prioridades de Restrição (HL)

Um conjunto de restrições pode causar conflitos. Isto significa que nem todas as restrições podem ser atendidas ao mesmo tempo. Por exemplo, é impossível forçar dois nós para o mesmo nível por um ibm_ilog.graphlayout.hierarchical.HierarchicalSameLevelConstraint enquanto força ao mesmo tempo um dos nós para um nível mais alto do que o outro nó por um ibm_ilog.graphlayout.hierarchical.HierarchicalRelativeLevelConstraint. Neste caso, uma das duas restrições deve ser ignorada durante o layout.
Em geral, os conflitos de restrição são resolvidos ignorando as restrições com a prioridade mais baixa enquanto as restrições com a prioridade mais alta são atendidas. As regras a seguir explicam detalhadamente as prioridades de restrição.
  • As restrições que influenciam o nível no qual um nó é posicionado são aplicadas antes das restrições que influenciam a posição do nó em um nível.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.HierarchicalExtremityConstraint é convertida em uma sequência de restrições com alta prioridade.
    Por exemplo, a restrição de extremidade com o lado sul é convertida em várias restrições do mesmo nível e em várias restrições de nível relativo.
  • Elas nunca entram em conflito entre si. Elas dominam as demais restrições, mesmo o índice de nível especificado.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.HierarchicalLevelRangeConstraint (e a especificação de índice de nível direto) possui a segunda prioridade mais alta.
    Se dois nós forem forçados para o mesmo nível mas tiverem intervalos de níveis especificados separados, o intervalo de níveis será ignorado. No exemplo a seguir:
    layout.addConstraint(new ibm_ilog.graphlayout.hierarchical.HierarchicalSameLevelConstraint(node1,node2));
    layout.setSpecNodeLevelIndex(node1, 5);
    layout.setSpecNodeLevelIndex(node2, 10);
    
    both node1 and node2 are placed at level 5. The conflicting specification: layout.setSpecNodeLevelIndex(node2, 10) is ignored.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.HierarchicalRelativeLevelConstraint é dominada pela restrição de mesmo nível, pela restrição de intervalo de níveis e pela especificação direta de índices de nível.
    Se várias restrições de nível relativo entrarem em conflito entre si, a que tiver a prioridade mais alta especificada dominará. However, all links are implicitly considered relative level constraints as well. If links with high priority force a node to a certain level, then a relative level constraint with lower priority is ignored.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.HierarchicalSwimLaneConstraint é sempre avaliada, mesmo que o modo incremental esteja ativado.
    A restrição tem uma prioridade mais alta do que a restrição de posição relativa e a restrição lado a lado. É possível especificar restrições lado a lado para um grupo de nós que pertencem à mesma raia, mas as restrições lado a lado de nós de raias diferentes são ignoradas. É possível especificar restrições de posição relativa entre nós da mesma raia. Também é possível especificar restrições de posição relativa entre um grupo inteiro de raias e outro grupo de raias, que ordena as raias de forma eficiente. Mas as restrições de posição relativa serão ignoradas se exigirem a separação das raias. A restrição de raia domina os índices de posição e as restrições de extremidade especificados, ou seja, se for usada uma restrição de raia, não será possível especificar índices de posição ou restrições de extremidade leste/oeste para nenhum nó.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.HierarchicalSideBySideConstraint será avaliada apenas se os nós correspondentes pertencerem ao mesmo nível.
    Typically you use a same level constraint to force the nodes to the same level, and then a side-by-side constraint to force the nodes to a certain ordering. As restrições lado a lado dominam as restrições de posição relativa. Se várias restrições lado a lado entrarem em conflito, a que tiver a prioridade mais alta especificada dominará as outras restrições.
  • ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.HierarchicalRelativePositionConstraint também será avaliada apenas se os nós correspondentes pertencerem ao mesmo nível.
    É dominada pela restrição lado a lado; no entanto, os conflitos com restrições lado a lado são raros. Se várias restrições de posição relativa entrarem em conflito, a que tiver a prioridade mais alta especificada dominará as outras restrições.