SwimLanes レンダラー

SwimLanes レンダラーは、ダイアグラムの背景の垂直または水平のストライプを表示します。 スイムレーンは、ノードの論理グループを表すために使用します。 例えば、ワークフロー・プロセスにおいて、各スイムレーンで会社の部門を表すことができ、各部門内で実行されるアクティビティーは、対応するスイムレーン内に配置されるというようなことが考えられます。
スイムレーンは、ビュー全体を覆う垂直または水平の矩形によってグラフィカルに表されます。 それぞれのスイムレーンの矩形には、そのスイムレーンに属するすべてのノードが (ジオメトリーで) 含まれます。 各スイムレーンの色は異なり、この色は自動的に生成するか、スタイル・シートでカスタマイズすることができます。 各スイムレーンにはタイトルもあります。
SwimLanes レンダラーは単体で使用できますが、 ほとんどの場合、階層型レイアウト・アルゴリズムを使用するように構成された GraphLayout レンダラーと組み合わせて使用されます。 これは、階層型レイアウトには、ノードが属するスイムレーンに従って階層のノードを自動的に配置する機能が用意されているからです。
階層型レイアウトはスイムレーンが重ならないことを保証しますが、階層型レイアウトが適用されていない場合、 またはノードがレイアウトの適用後に移動された場合には、スイムレーンが重なる可能性があります。
2 つの異なる実装に対応する、2 つのバージョンの SwimLanes レンダラーがあります。 1 つ目の IlvSwimLaneRenderer は、レンダラーによって内部的に管理されるスイムレーンの基本実装です。 2 つ目の IlvLaneRenderer は、以下のいくつかの点で 1 つ目のものとは異なります。
  • 各レーンは、データ・モデルの専用オブジェクトのグラフィック表示です。 この新しい実装の利点として、レーンのプロパティー (位置、サイズ、ラベルなど) をデータ・モデルに保管することができます。
  • IlvLaneRenderer は階層型スイムレーン (つまり、サブレーンを含むレーン) をサポートします。 レーン・コンテナーは「プール」と呼ばれる場合があります。
  • インタラクションは異なります (以下のIlvLaneRendererを参照)。
いずれかのレンダラーを選択するには、SDM ルールで以下を指定します。
  SDM {
   SwimLanes : true;
  }
または
  SDM {
   Lanes : true;
  }
IlvLaneRenderer は、BPMN モデラーで使用されます。

IlvSwimLanesRenderer

スイムレーンは、スタイル・シートの SwimLaneConstraints プロパティーの値に従って計算されます。 このプロパティーの値はノードごとに調べられ、スイムレーンはそれぞれの異なる値に対して作成されます。 なお、これは、GraphLayout レンダラーによって使用されるのと同じプロパティーであり、 これにより、GraphLayout レンダラーと SwimLanes レンダラーがノードをスイムレーンに同じようにグループ化することが保証されます。
例えば、以下のコード例では 2 つのスイムレーンを定義しています。 1 つは会社の R&D 部門を表しており、もう 1 つは Sales 部門を表しています。
node.activity[department=”R&D”] {
   SwimLaneConstraint : “R&D Department”;
}
node.activity[department=”Sales”] {
   SwimLaneConstraint : “Sales Department”;
}
上のルールにより、ダイアグラムは異なる色の 2 つのスイムレーンに分割され、それぞれにタイトル “R&D Department”“Sales Department” が設定されます。
以下の表に、SwimLanes レンダラーのプロパティーをリストします。
SwimLanes レンダラーのグローバル・プロパティー
プロパティー
タイプ
デフォルト
説明
alpha
浮動
0.5
割り振られた色のアルファ値 (つまり、透明度)。
brightness
浮動
0.8
割り振られた色の輝度。
defaultSwimLanes
ストリング
null
空のダイアグラムにデフォルト・スイムレーンを作成するために使用できます。 ストリングは、デフォルト・スイムレーンのタイトルが含まれたコンマ区切りのリストです。
draggingEnabled
ブール値
true
ノードをあるスイムレーンから別のスイムレーンにドラッグできるようになります。
hue
浮動
0.2
色割り振りアルゴリズムが開始する色調。
layer
整数
0
スイムレーン・グラフィックスが追加されるマネージャー・レイヤーのインデックス。
margin
整数
5
2 つの隣接するスイムレーン間のマージン。
saturation
浮動
0.5
割り振られた色の彩度。
以下の表に、SwimLanes レンダラーのオブジェクトごとのレンダリング・プロパティーをリストします。
SwimLanes レンダラーのオブジェクトごとのプロパティー
プロパティー
タイプ
デフォルト
説明
SwimLaneConstraint
オブジェクト
null
ノードが属するスイムレーンを定義します。
SwimLaneGraphic
IlvGraphic
null
スイムレーンを表すために使用されるグラフィック・オブジェクトをカスタマイズできます。 デフォルトでは、IlvGeneralNode が使用されます。
SwimLaneLabel
ストリング
null
スイムレーンのタイトルをカスタマイズできます。 デフォルトでは、タイトルは SwimLaneConstraint プロパティーの値です。
SwimLaneColor
null
スイムレーンの色をカスタマイズできます。 デフォルトでは、色は、レンダラーの hue、saturation、brightness、および alpha の各プロパティーに基づいて、自動的に割り振られます。
SwimLaneGraphicSwimLaneColor、 および SwimLaneLabel の各プロパティーはすべてのノードで設定する必要があります。 SwimLane レンダラーはこれらのプロパティーを設定するためにスイムレーンの最初のノードしか使用しませんが、最初のノードがどのノードなのかを追跡するのが簡単ではない場合があります。
詳しくは、クラス IlvSwimLanesRenderer を参照してください。

IlvLaneRenderer

Lane レンダラーは、作成されるレーンをカスタマイズするプロパティーを定義します。
以下の表に、レーンのプロパティーをリストします。
レーン・プロパティー
プロパティー
タイプ
デフォルト
説明
defaultLength
浮動
500
レーンのデフォルトの長さ (つまり、レーンが水平の場合は幅、垂直の場合は高さ)。
defaultSize
浮動
100
レーンのデフォルトのサイズ (つまり、レーンが水平の場合は高さ、垂直の場合は幅)。
水平
ブール値
true
レーンの方向。
margin
浮動
5
レーン内のオブジェクトとレーンの端との間のマージン。
spacing
浮動
10
隣接するレーン間の最小間隔。
sublaneOffset
浮動
0
レーンが水平の場合は、このプロパティーは、サブレーンの左側と親レーンの左側との間のオフセットを変更します。 このオフセットは、ラベル用にスペースを確保するために使用されます。
レーンを作成するには、レーン・オブジェクトに一致するスタイル・シート・ルールに、 宣言 LaneName:<name> が含まれている必要があります (ここで、<name> はレーンの名前)。 このルールで ilog.views.IlvLabelInterface を実装する IlvGraphic も作成する場合は、 このグラフィックはレーンのラベルになり、レーンの前に表示されます。 一般的に、レーン・グラフィック表示のクラスは ilog.views.sdm.graphic.IlvDefaultLaneGraphic であり、 これは水平レーンに垂直ラベルを表示します。 この場合、LaneName に加えて、さらに以下の 2 つのプロパティーが解釈されます。
レーンの追加プロパティー
プロパティー
タイプ
デフォルト
説明
LaneName
ストリング
""
一致するノードをレーン (プール) として設定して、名前を定義します。
LaneLength
浮動
defaultLength
レーンのデフォルトの長さをオーバーライドします。
LaneSize
浮動
defaultSize
レーンのデフォルトのサイズをオーバーライドします。
以下に、スタイル・シートでのレーン指定の例を示します。
  node.Pool, node.Lane {
   // These properties define the look of pools and lanes.
   // The IlvDefaultLaneGraphic is a subclass of IlvGeneralNode
   // that can display its label vertically (when the lane is horizontal).
   //
   class : "ilog.views.sdm.graphic.IlvDefaultLaneGraphic";
   shapeType : "Rectangle";
   fillStyle : "SOLID_COLOR";
   strokeWidth : "1";
   horizontal : "true";
   label : "@Name";
   toolTipText : "@Name";
   labelPosition : "Center";
   labelSpacing : "5";
   minLabelZoom : "0";

   // This property identifies the object as a Pool or a Lane,
   // and tells the Lane renderer that it must handle it.
   //
   LaneName : "@Name";

   Anchor : "TopLeft";
   // Tell the link layout to preserve pools/lanes.
   LayoutFixed : "true";
}
以下のプロパティーは任意のノードで設定して、そのノードがレーンに属することを指示できます。
プロパティー
タイプ
デフォルト
説明
レーン
ストリング
""
一致するオブジェクトを指定レーンに設定します。
例:
node[lane] {
   Lane : "@lane";
}
このルールは、属性 "lane" を定義するすべてのノードが、"lane" 属性値を持つレーンに割り当てられることを指示します。

レーンの動作

編集が許可されている場合は、レーンの動作は以下のようになります。
  • レーン内のノードは任意の場所に移動できます。 プールおよびレーンは、新しいノード位置に合わせて自動的にサイズ変更されます。 なお、オブジェクトをレーンから削除するには、Lane プロパティーをノードから削除するだけです。
  • レーンは手動でサイズ変更できます。レーンの端にマウスを近づけたときに、マウスを押すとレーンのサイズ変更が可能であることを示すサイズ変更カーソルが表示されます。
詳しくは、クラス IlvLaneRenderer を参照してください。