Restrições de Layout para HL

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.