アクティビティー図 その2
アクティビティー図を描いて残念だったこと
- 行動の位置(ノード)が自動配置の反面、思った位置にいってくれない
- 行動をつなぐ線・矢印(エッジ)がくねくねの曲線
- 条件分岐で、ダイヤモンドの外に条件が記載され、条件を見分けにくい
- 行動は1つだけ、2つ以上の同じ行動を使えない
もちろん、良い機能もたくさんあります。ただ、慣れてくると、贅沢になって、もっと機能が欲しくなるって気持ちです。
アクティビティー図(ベータ版)
plantUMLの公式に、アクティビティー図(ベータ版) の記述がある。どうも、アクティビティー図は過渡期のようで、新しい構文を提唱しているっぽい。
並列処理(fork)で気を付けること
今の構文は、エッジでつなぐ2つのノードを明示的に記述するので、極端な話、下のコードのように、どこに記述してもフロー図ができる。そのため、同期も上下ではさむ、必要がない。
@startuml title 現行のアクティビティー図の分岐 別の片方につなぐ --> (*) (*) --> 1つめ 1つめ --> 片方につなぐ 片方につなぐ --> (*) 1つめ --> 別の片方につなぐ @enduml
でも、ベータ版は上から下に1本のエッジをつなぐ。離れたところにあるノードをもってきてつなげない。
なので、上の流れをforkを使わずに記述すると、フローが縦につながる
@startuml title ベータ版は上から下につながるので並列処理が違う start :1つめ; :片方につなぐ; :1つめ; :別の片方につなぐ; :後ろで1つにする; stop @enduml
「1つめ」を2つに分岐して、「片方につなぐ」と「別の片方につなぐ」につなぎたい。でも、ノードは上から下につなぐルールなので、2回目の「1つ目」jは直前の「片方につなぐ」とつながっている。
このように、離れたノードを再帰的に持ってくると、同じ名前のエッジができる。
だから、fork構文が必要になる。
@startuml title forkで並列処理を挟む start :1つめ; fork :片方につなぐ; fork again :別の片方につなぐ; end fork :後ろで1つにする; stop @enduml
ベータ版は、同じ名前のノードを複数使える仕様になってる。これは便利。
ただ、今のアクティビティー図のエッジでつなぐノード同士を明示することで位置を問わずつなげる仕様も便利だったなあ、と改めて思う。
ここは少し混乱する。