O algoritmo de Layout Hierárquico suporta restrições de posição relativa em
nós. Tal restrição é uma regra
sobre como um determinado nó (ou grupo de nós) deve ser posicionado
em relação aos outros nós. As restrições influenciam as posições
relativas. Por exemplo, é possível forçar o nó
A
para
ficar à esquerda do nó B
, portanto, a posição
de A
é expressa em relação à posição
de B
. Teoricamente é possível especificar
restrições opostas: se você especificar que o nó A
deve
estar à esquerda de B
e B
deve
estar à esquerda de A
, estas restrições
não serão resolvidas ao mesmo tempo. Se A
estiver
à esquerda de B
, B
deverá
estar à direita de A
. O algoritmo de
Layout Hierárquico tenta detectar e resolver conflitos de restrições
automaticamente. Ele ignora as restrições que são inviáveis. Como a resolução de restrição automática
é demorada, é recomendável especificar
restrições não conflitantes quando possível. Constraints must be used only if the incremental mode
is disabled. In fact, the incremental mode is implemented with additional
constraints that are added internally. Hence, if you use constraints
during the incremental mode, it is likely that the system detects
so many constraint conflicts that you get unexpected results.
Constraints must be used carefully. Quanto mais restrições
forem especificadas, mais difícil será calcular um layout. Therefore,
this resulting layout can have more link crossings and be less balanced
than a graph with no constraints.
Cada tipo de restrição é representado por uma subclasse
de ibm_ilog.graphlayout.hierarchical.HierarchicalConstraint. Os seguintes tipos de restrição estão disponíveis:
ibm_ilog.graphlayout.hierarchical.HierarchicalLevelRangeConstraint |
Força um nó para um intervalo de alguns níveis |
ibm_ilog.graphlayout.hierarchical.HierarchicalSameLevelConstraint |
Força dois nós para o mesmo nível. |
ibm_ilog.graphlayout.hierarchical.HierarchicalRelativeLevelConstraint |
Força um nó para um nível mais baixo/mais alto
do que outro nó. |
ibm_ilog.graphlayout.hierarchical.HierarchicalGroupSpreadConstraint |
Força um grupo de nós em níveis que
não são mais altos do que um valor de difusão especificado separadamente. |
ibm_ilog.graphlayout.hierarchical.HierarchicalRelativePositionConstraint |
Força um nó para uma posição mais baixa/mais alta
do que outro nó do mesmo nível. |
ibm_ilog.graphlayout.hierarchical.HierarchicalSideBySideConstraint |
Força dois nós do mesmo nível a serem posicionados
lado a lado. |
ibm_ilog.graphlayout.hierarchical.HierarchicalExtremityConstraint |
Força um nó para o primeiro ou último nível,
ou para a primeira ou última posição em um nível. |
ibm_ilog.graphlayout.hierarchical.HierarchicalSwimLaneConstraint |
Força um grupo de nós para a mesma área da raia retangular. |
Nota
Quando o layout hierárquico for usado para organizar nós e
links em um componente Diagram que contém
objetos de raia (instâncias ibm_ilog.graphlayout.SwimLane), as instâncias
ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.HierarchicalSwinLaneConstraint serão
criadas automaticamente para posicionar os objetos-filhos da raia na mesma área da raia
e para dimensionar corretamente as raias.