階層型レイアウト・アルゴリズムは、ノードに対する相対位置制約 をサポートします。 この制約は、特定のノード
(またはノードのグループ)
をその他のノードに関連してどのように配置する必要があるのかを規定するルールです。
制約は相対位置に影響します。例えば、ノード
A
がノード B
の左側になるように強制できます。
これにより、A
の位置は B
の位置に対して相対的に表現されます。
矛盾する制約を指定することも理論的には可能です。例えば、ノード A
が B
の左側になる必要があり、 B
が A
の左側になる必要があることを指定した場合、
これらの制約は同時には解決できません。 A
が B
の左側になる場合は、 B
は A
の右側になる必要があります。
階層型レイアウト・アルゴリズムは、制約の競合を自動的に検出して解決しようとします。
実行不可能な制約は無視します。自動的な制約の解決は時間がかかるため、可能な限り、競合のない制約を指定することをお勧めします。制約を使用するのは、インクリメンタル・モードが使用不可の場合のみにする必要があります。実際、インクリメンタル・モードは、内部的に付加された追加制約とともに実装されています。
そのため、インクリメンタル・モード時に制約を使用すると、システムで検出される制約の競合があまりにも多くなり、予期しない結果が生じる可能性が高くなります。
制約は慎重に使用する必要があります。指定する制約が多ければ多いほど、レイアウトの計算が難しくなります。
そのため、制約を使用した結果のレイアウトでは、制約がないグラフよりもリンク交差数が増加したり、バランスが取れなくなったりする可能性があります。
制約の各タイプは、ibm_ilog.graphlayout.hierarchical.HierarchicalConstraint のサブクラスで表されます。
以下の制約タイプが使用可能です。
ibm_ilog.graphlayout.hierarchical.HierarchicalLevelRangeConstraint |
ノードが特定のレベルの範囲内に入るように強制します。 |
ibm_ilog.graphlayout.hierarchical.HierarchicalSameLevelConstraint |
2 つのノードが同じレベルになるように強制します。 |
ibm_ilog.graphlayout.hierarchical.HierarchicalRelativeLevelConstraint |
ノードが別のノードよりも低い/高いレベルになるように強制します。 |
ibm_ilog.graphlayout.hierarchical.HierarchicalGroupSpreadConstraint |
ノードのグループが、指定したスプレッド値より離れていないレベルになるように強制します。 |
ibm_ilog.graphlayout.hierarchical.HierarchicalRelativePositionConstraint |
ノードが、同じレベルの別のノードよりも低い/高い位置になるように強制します。 |
ibm_ilog.graphlayout.hierarchical.HierarchicalSideBySideConstraint |
同じレベルの
2 つのノードが横並びで配置されるように強制します。 |
ibm_ilog.graphlayout.hierarchical.HierarchicalExtremityConstraint |
ノードが最初または最後のレベル、あるいはレベル内の最初または最後の位置になるように強制します。 |
ibm_ilog.graphlayout.hierarchical.HierarchicalSwimLaneConstraint |
ノードのグループが、同じ矩形のスイムレーン領域内に入るように強制します。 |
メモ
スイムレーン・オブジェクト
(ibm_graphlayout.SwimLane インスタンス)
を含む Diagram コンポーネント内にノードおよびリンクをレイアウトするために階層型レイアウトを使用すると、
スイムレーンの子オブジェクトを同じスイムレーン領域に配置し、スイムレーンのサイズを適切に調整できるよう
に、ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.HierarchicalSwinLaneConstraint インスタンスが自動的に作成されます。