ガント チャートを使用する際に、1つのアクティビティやいくつかのアクティビティ間の制限を示すことがしばしば必要となります。最もよく用いられる制限の1つは、アクティビティは別のアクティビティが終了していないと開始できないというものです。
JpGraph は、以下のような制限のタイプの視覚化をサポートしています。
2つのアクティビティ間の制限を指定する例を説明していきます。
ガント スキーマを以下のように開始することを前提としています。
ここで、アクティビティ"Label 3"はアクティビティ"Label 2"を終了させないと開始することができず、さらに"Phase 1 done"というマイルストーンはアクティビティ"Label 3"が行われた期日に依存するという制限を加えようとしています。
制限を加える際の決まりとしては、制限を与えたいアクティビティのそれぞれに対して、この制限が加えられるべき他のアクティビティが何かということを教えてあげなければならないということです。その他のアクテビティは、アクテビティがどの列で存在しているかを教えることで指定されます。たとえば、Start-to-End というような制限のタイプに応じて、矢印は正しい方法で2つのアクティビティを接続するでしょう。
制限を加えるには、アクティビティ上でSetConstrain() メソッドを呼びだします。この方法では、制限のタイプを指定することに加え、この制限が加えられるべき他のアクティビティが何かということを指定します。クラスリファレンスを読むと、使用した矢印のタイプやサイズを指定することができることも分かるでしょう。ここでは、デフォルトのサイズやタイプのみを使用しています。
例えば、 "Label 2" と"Label 3"の間に End-To-Start 制限を加えるためには、以下のように記述します。
$bar2->SetConstrain(2,CONSTRAIN_ENDSTART)
上記の呼び出しの際の最初のパラメータ "2" は、ターゲットアクティビティの行番号です。("Label 3"アクティビティの行)以下の例は、制限を加えた結果を示したものです。
注意:矢印によって示される実際のパスは、どんな制限であるかを明確にするためにいくつかのヒューリスティックスにより調節されています。APIをシンプルにするために、示された実際のパスをユーザーがさらに詳細に制御しないということが、当初の設計でした。しかし、今後のバージョンではそのヒューリスティックスが拡張され、ユーザー定義のパラメータが使用可能となるかもしれません。