日々のつれづれ

不惑をむかえ戸惑いを隠せない男性の独り言

UMLを練習する、アクティビティー図 ベータ版-4

アクティビティー図 その2

アクティビティー図を描いて残念だったこと

  • 行動の位置(ノード)が自動配置の反面、思った位置にいってくれない
  • 行動をつなぐ線・矢印(エッジ)がくねくねの曲線
  • 条件分岐で、ダイヤモンドの外に条件が記載され、条件を見分けにくい
  • 行動は1つだけ、2つ以上の同じ行動を使えない

もちろん、良い機能もたくさんあります。ただ、慣れてくると、贅沢になって、もっと機能が欲しくなるって気持ちです。

アクティビティー図(ベータ版)

plantUMLの公式に、アクティビティー図(ベータ版) の記述がある。どうも、アクティビティー図は過渡期のようで、新しい構文を提唱しているっぽい。

並列処理(fork)で気を付けること

今の構文は、エッジでつなぐ2つのノードを明示的に記述するので、極端な話、下のコードのように、どこに記述してもフロー図ができる。そのため、同期も上下ではさむ、必要がない。

@startuml
title 現行のアクティビティー図の分岐
別の片方につなぐ --> (*)
(*) --> 1つめ
1つめ --> 片方につなぐ
片方につなぐ --> (*)
1つめ --> 別の片方につなぐ
@enduml

f:id:myopomme:20190714222228p:plain

でも、ベータ版は上から下に1本のエッジをつなぐ。離れたところにあるノードをもってきてつなげない。
なので、上の流れをforkを使わずに記述すると、フローが縦につながる

@startuml
title ベータ版は上から下につながるので並列処理が違う
start
:1つめ;
:片方につなぐ;
:1つめ;
:別の片方につなぐ;
:後ろで1つにする;
stop
@enduml

f:id:myopomme:20190714222331p:plain

「1つめ」を2つに分岐して、「片方につなぐ」と「別の片方につなぐ」につなぎたい。でも、ノードは上から下につなぐルールなので、2回目の「1つ目」jは直前の「片方につなぐ」とつながっている。
このように、離れたノードを再帰的に持ってくると、同じ名前のエッジができる
だから、fork構文が必要になる。

@startuml
title forkで並列処理を挟む
start
:1つめ;
fork
  :片方につなぐ;
fork again
  :別の片方につなぐ;
end fork
:後ろで1つにする;
stop
@enduml

f:id:myopomme:20190714221828p:plain

ベータ版は、同じ名前のノードを複数使える仕様になってる。これは便利。 ただ、今のアクティビティー図のエッジでつなぐノード同士を明示することで位置を問わずつなげる仕様も便利だったなあ、と改めて思う。
ここは少し混乱する。