Restricciones de diseño para DJ

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.