スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
Prev.    Category    Next 

PlantUML - アクティビティ図

PlantUML でのアクティビティ図の記法についての解説です。

PlantUML ではサクサク書けるので、フローチャートがわりとしていいのではないかと思います。
  1. 基本的なアクティビティ図
  2. ラベル
  3. 分岐と矢印の方向
  4. 並列処理
  5. ノート
  6. パーティション
  7. 参考
Activity sample
@startuml{plantuml_act_sample.png}
title <size:18>アクティビティ図のサンプル</size>

(*) --> "目覚ましを止める"

if "体調状態" then
    partition "出勤準備"
        --> [健康] "顔を洗う" as wash
    end partition
else
    -> [病気] "病気の報告"
    --> "寝る"
endif

partition "出勤準備" {
    wash --> ===fork===

    ===fork=== --> "新聞を読む"
    --> ===join===

    ===fork=== --> "歯を磨く"
    --> ===join===

    ===join=== --> "服を着替える"
}
-->(*)
note right : 家を出る

@enduml

タイトル(title)HTML タグ に関してはシーケンス図の説明を参照してください。

基本的なアクティビティ図

アクティビティ図の記法では (*) が開始ノード、終了ノードとなります。
アクションノードは "処理名" で記述し、 これらを矢印(-->)でつないでいきます。
@startuml{plantuml_act_base2.png}

(*) --> "処理 1"
"処理 1" --> "処理 2"
"処理 2" --> (*)

@enduml

また、前のアクションノードを省略して書くこともできます。
(*) --> "処理 1"
--> "処理 2"
--> (*)
Base sample
なお、開始ノードを先頭に書かない場合には (*) ではなく、 (*top) と記述します。
PlantUML では、 この (*) や (*top) があるかどうかで、 アクティビティ図か判断しています。


複数行にわたるような長い処理名を使いたい場合は直接改行して書くか、 \n を使います。
@startuml{plantuml_act_long.png}

(*) --> "複数行にまたがる\n長い処理名 1"
--> "複数行にまたがる
     長い処理名 2"
--> (*)

@enduml
Long name sample

ラベル

遷移(矢印)にラベルを付ける場合は以下の形式となります。
--> [ラベル] "処理名"
@startuml{plantuml_act_label.png}

(*) --> [ラベル 1] "処理 1"
--> [ラベル 2] "処理 2"
--> (*)

@enduml
Label sample

分岐と矢印の方向

分岐を作る場合には if/then/else キーワードを使用します。
if "分岐名" then
    分岐フロー
else
    分岐フロー
endif
分岐すると同じアクションノードを書く必要がある場合があります。 このような場合に as キーワードで別名を付けることもできます。

また、 クラス図やユースケース図と同様に矢印の - の数が 2 の場合は下、 1 の場合は横向きの矢印となります。
矢印の向きを直接指定する -position-> も同様に使用できます。
@startuml{plantuml_act_if.png}
(*) --> "初期化"

if "テスト" then
  --> [OK] "正常処理"
  --> "後処理" as last
else
  -> [NG] "エラーメッセージ"
  --> "異常系処理"
  -left-> last
endif

--> (*)
@enduml
If sample


さらにこの if 文は入れ子にすることができます。
@startuml{plantuml_act_if_nest.png}

(*) --> if "最初のテスト" then
  -->[true] "正常系処理 1"
  
  if "2 番目のテスト" then
    -->[true] "正常系処理 2" as s2
  else
    -> "2 番目のテストが失敗した時の処理"
  endif
  
else
  ->[false] "最初のテストが失敗した時の処理"
endif

s2 --> if "" then
  --> "正常系処理 3"
  --> (*)
else
  -> "最後のテストが失敗した時の処理"
endif

@enduml
If nest sample

並列処理

非同期に行う並列処理を表すフォークノード、ジョインノードは以下のように記述します。
===識別名===
@startuml{plantuml_act_par.png}
(*) --> "顔を洗う"

--> ===FORK=== 
--> "新聞を読む"
--> ===JOIN===

===FORK=== --> "歯を磨く"
--> ===JOIN===

--> "服を着替える"
--> (*)
@enduml
Parallel sample

ノート

アクションノードにノート(コメント)をつけたい場合はその直下にノートの記述を行います。
開始ノードにつける場合は一番先頭に記述します。
note position : コメント
note position
    コメント
end note
@startuml{plantuml_act_note.png}
note left: 開始ノードへのノート

(*) --> "処理 A"
note right
  アクションノード
  (処理 A)へのノート
end note

--> (*)
note bottom: 終了ノードへのノート
@enduml
Note sample

パーティション

フローをグループ化したい場合には partition キーワードを使用します。
partition ラベル [色指定] {
    フロー
}
{ } 以外にも end partition も使えます。

@startuml{plantuml_act_partition.png}

partition 指揮者 {
  (*) --> "ステージへあがる"
  --> === Sf ===
  --> "お辞儀をする" as bow
}

partition 聴衆 LightSkyBlue
  === Sf === --> "拍手"
end partition

partition 指揮者 {
  bow --> === Sj ===
  --> "タクトを振る" as wave
  "拍手" --> === Sj ===
}

partition オーケストラ #CCCCEE {
  wave -> "準備"
  --> "演奏する"
}
@enduml
Partition sample

参考

このページの記述には以下のサイトを参考にさせていただきました。

関連記事
スポンサーサイト
Prev.    Category    Next 

Facebook コメント


コメント

コメントの投稿

Font & Icon
非公開コメント

このページをシェア
アクセスカウンター
アクセスランキング
[ジャンルランキング]
コンピュータ
9位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
3位
アクセスランキングを見る>>
カレンダー(アーカイブ)
プルダウン 降順 昇順 年別

09月 | 2017年10月 | 11月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -


はてな新着記事
はてな人気記事
ブロとも申請フォーム
プロフィール

yohshiy

Author:yohshiy
職業プログラマー。
仕事は主に C++ ですが、軽い言語マニアなので、色々使っています。

はてブ:yohshiy のブックマーク
Twitter:@yohshiy

サイト紹介
プログラミング好きのブログです。プログラミング関連の話題や公開ソフトの開発記などを雑多に書いてます。ただ、たまに英語やネット系の話になることも。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。