アクティビティー図 その2
アクティビティー図を描いて残念だったこと
- 行動の位置(ノード)が自動配置の反面、思った位置にいってくれない
- 行動をつなぐ線・矢印(エッジ)がくねくねの曲線
- 条件分岐で、ダイヤモンドの外に条件が記載され、条件を見分けにくい
- 行動は1つだけ、2つ以上の同じ行動を使えない
もちろん、良い機能もたくさんあります。ただ、慣れてくると、贅沢になって、もっと機能が欲しくなるって気持ちです。
アクティビティー図(ベータ版)
plantUMLの公式に、アクティビティー図(ベータ版) の記述がある。どうも、アクティビティー図は過渡期のようで、新しい構文を提唱しているっぽい。
落穂ひろい
ホットケーキレシピで扱えなかった構文について、追記します。
スイムレーンの続き
スイムレーンで 並列処理(fork) 判定(repeat/while) if構文 パーティション(partition) を組み合わせるときは注意がある。
- 並列処理(fork) はスイムレーンを跨げない
- 判定(repeat/while) は fork を跨げない
- if構文 の条件と接続点は同じレーンに入る
- if構文 の接続点が戻ってもレーンの位置情報は変わらない
- パーティション(partition) はスイムレーンを跨げない
@startuml title スイムレーンでの他の構文の使い方 |1つ目のスイムレーン| start repeat :ノードa1; repeatwhile (条件A1) is (同じスイムレーンでループ) fork :ノードa2; -> 同じレーン内の返りのコメント\n出る; forkagain :ノードa3; |2つ目のスイムレーン| -> forkはレーンを跨げない; |2つ目のスイムレーン| if (条件B) then (Yes) :ノードb1; else (No) -> 条件の分岐先は別のレーンに描ける; |3つ目のスイムレーン| :ノードc1; -> 条件文は同じレーンで結合する; endif -> 結合位置に戻っても、レーンの位置は前の情報を保持している; :ノードc2; if (条件C) then (Yes) :ノードc3; -> レーンを跨ぐ返りのコメント\n出ない; else (No) :ノードc4; end endif end fork partition レーンを跨ぐwhile { |1つ目のスイムレーン| while (条件A2) -> ループはレーンを跨げる; |2つ目のスイムレーン| :ノードb2; -> レーンを跨ぐ返りのコメント\n出ない; end while (whileを別のレーンに抜けられる) } |2つ目のスイムレーン| :ノードb3; partition レーンを跨がないwhile { |1つ目のスイムレーン| while (条件A3) -> ループはレーンを跨げる; :ノードa3; -> 同じレーン内の返りのコメント\n出る; end while (whileを別のレーンに抜けられる) } |2つ目のスイムレーン| :ノードb4; stop @enduml
このとき
- ノードa2からforkの矢印コメント $\rightarrow$ 出る
- ノードc3からforkの矢印コメント $\rightarrow$ 出ない
- ノードb2から条件A2へのループの矢印コメント $\rightarrow$ 出ない
- ノードa3から条件A3へのループの矢印コメント $\rightarrow$ 出る
と、スイムレーンを跨ぐとき、コメントが出ない。
1つ目のスイムレーンを start の前に書くことや、fork と partition がスイムレーンを跨げないことを考えると、スイムレーンは一番上位の制約で、他はその中で制御される仕様なのかもしれない。