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 の各プロパティーに基づいて、自動的に割り振られます。 |
SwimLaneGraphic
、SwimLaneColor
、
および 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 を参照してください。