El algoritmo Diseño jerárquico admite
restricciones de posición
relativa en los
nodos. Una
restricciones de este tipo es una regla de cómo un nodo concreto (o
un grupo de nodos) deben colocarse con respecto a los demás nodos.
Las restricciones afectan a las posiciones relativas. Por ejemplo,
puede obligar al nodo
A
a
estar a la izquierda del nodo
B
, de modo que la posición de
A
se expresa en relación con
la posición de B
. En teoría,
es posible especificar restricciones contradictorias: si especifica
que el nodo A
debe estar en el
lado izquierdo de B
y que
B
debe estar en el lado
izquierdo de A
, es imposible
aplicar estas restricciones al mismo tiempo. Si
A
está a la izquierda de
B
, entonces
B
debe estar a la derecha de
A
. El algoritmo Diseño
jerárquico intenta detectar y resolver automáticamente conflictos de
restricciones. Pasa por alto las restricciones que no son factibles.
Puesto que lleva tiempo resolver automáticamente las restricciones,
se recomienda especificar restricciones que no entren en conflicto
siempre que sea posible. Las restricciones se deben utilizar sólo si la modalidad
incremental está inhabilitada. De hecho, la modalidad incremental se
implementa con restricciones adicionales que se añaden internamente.
Por lo tanto, si utiliza restricciones durante la modalidad
incremental, es probable que el sistema detecte tantos conflictos de
restricciones que se obtengan resultados imprevistos.
Las restricciones se deben utilizar con cuidado. Cuantas
más restricciones se especifiquen, más difícil será calcular un
diseño. Por lo tanto, el diseño resultante puede tener más
intersecciones de enlaces y ser menos equilibrado que un gráfico sin
restricciones.
Cada tipo de restricción se representa mediante una
subclase de
ibm_ilog.graphlayout.hierarchical.HierarchicalConstraint.
Existen los siguientes tipos de restricción:
ibm_ilog.graphlayout.hierarchical.HierarchicalLevelRangeConstraint |
Obliga a colocar un nodo en un intervalo de
varios niveles |
ibm_ilog.graphlayout.hierarchical.HierarchicalSameLevelConstraint |
Obliga a colocar dos nodos en el mismo nivel. |
ibm_ilog.graphlayout.hierarchical.HierarchicalRelativeLevelConstraint |
Obliga a colocar un nodo en un nivel más bajo
o más alto que otro nodo. |
ibm_ilog.graphlayout.hierarchical.HierarchicalGroupSpreadConstraint |
Obliga a colocar un grupo de nodos en niveles
que están dentro de la distancia de propagación especificada. |
ibm_ilog.graphlayout.hierarchical.HierarchicalRelativePositionConstraint |
Obliga a colocar un nodo en una posición
inferior o superior a otro nodo del mismo nivel. |
ibm_ilog.graphlayout.hierarchical.HierarchicalSideBySideConstraint |
Obliga a colocar dos nodos del mismo nivel
uno junto al otro. |
ibm_ilog.graphlayout.hierarchical.HierarchicalExtremityConstraint |
Obliga a colocar un nodo en el primer o el
último nivel, o en la primera o la última posición dentro de un
nivel. |
ibm_ilog.graphlayout.hierarchical.HierarchicalSwimLaneConstraint |
Obliga a colocar un grupo de nodos en el
mismo carril rectangular. |
Nota
Cuando se utiliza el diseño jerárquico para presentar
nodos y enlaces en un componente
Diagram que contiene
objetos de tipo carril (instancias de
ibm_ilog.graphlayout.SwimLane),
se crean automáticamente instancias de
ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.HierarchicalSwinLaneConstraint
para colocar los objetos hijo de los carriles en el mismo carril y
para establecer el tamaño correcto de los carriles.