PlantUMLシーケンス図を描く
シーケンス図の例_
- Fig4.1.puml(テキストファイル)
' マーチン・ファウラー著 UMLモデリングのエッセンス 第3版 図4.1
@startuml{Fig4.1.png}
title 中央制御のシーケンス図
hide footbox
participant "an Order" as Order
participant "an Order Line" as OrderLine
participant "a Product" as Product
participant "a Customer" as Customer
[-> Order : calculatePrice
activate Order
Order -> OrderLine : getQuantity
activate OrderLine
deactivate OrderLine
Order -> OrderLine : getProduct
activate OrderLine
Order <-- OrderLine : "a Product"
deactivate OrderLine
Order -> Product : getPricingDetails
activate Product
deactivate Product
Order -> Order : calculateBasePrice
activate Order
deactivate Order
Order -> Order : calculateDiscounts
activate Order
Order -> Customer : getDiscountInfo
activate Customer
deactivate Customer
deactivate Order
deactivate Order
- Fig4.2.puml(テキストファイル)
' マーチン・ファウラー著 UMLモデリングのエッセンス 第3版 図4.2
@startuml{Fig4.2.png}
title 分散制御のシーケンス図
hide footbox
participant "an Order" as Order
participant "an Order Line" as OrderLine
participant "a Product" as Product
participant "a Customer" as Customer
[-> Order : calculatePrice
activate Order
Order -> OrderLine : calculatePrice
activate OrderLine
OrderLine -> Product: "getPrice(quantity: number)"
activate Product
deactivate Product
deactivate OrderLine
Order -> Customer : "getDiscountedValue(an Order)"
activate Customer
Customer -> Order : getBaseValue
activate Order
deactivate Order
Customer --> Order : discountedValue
deactivate Customer
deactivate Order
@enduml
オブジェクトの生成と削除_
- Fig4.3.puml(テキストファイル)
' マーチン・ファウラー著 UMLモデリングのエッセンス 第3版 図4.3
@startuml{Fig4.3.png}
title 参加者の生成と削除
hide footbox
participant "an Handler" as Handler
participant "a Query Command" as QC
participant "a Database Statement" as DS
[-> Handler : query database
activate Handler
create QC
Handler -> QC : new
activate QC
create DS
QC -> DS : new
QC -> DS : execute
activate DS
DS --> QC : results
deactivate DS
QC -> QC : extract results
activate QC
deactivate QC
QC -> DS : close
destroy DS
deactivate QC
QC --> Handler : results
destroy QC
deactivate Handler
@enduml
呼び出し_
- call.puml(テキストファイル)
@startuml{call.png}
title 呼び出し
hide footbox
Actor "太郎" as Taro
Actor "花子" as Hanako
Taro -> Hanako : 同期呼び出し
Taro -\ Hanako : 非同期呼び出し。UML 1.3以前
Taro ->> Hanako : 非同期呼び出し。UML 1.4以降
note over Taro, Hanako
UML 1.3以前 と 1.4以降で非同期呼び出しの記法が変わっている。
マーチン・ファウラー著「UMLモデリングのエッセンス 第3版」では、
1.3以前の記法を推奨している。
end note
[-> Taro : 外部からの呼び出し
Taro -> Taro : 自己呼び出し
Hanako ->] : 外部呼び出し
Hanako <--] : 外部からの戻り
@enduml
相互作用フレーム_
シーケンス図はループ、分岐などの制御構造を描くのは適していない。制御を描くのにはアクティビティ図が適している。しかし、制御構造を描く記法として相互作用フレームが用意されている。以下には代表的なものをいくつか紹介する。
ループ_
- loop.puml(テキストファイル)
@startuml{loop.png}
title 相互作用フレーム:ループ loop
hide footbox
Actor "an User" as User
participant "Amazon" as Amazon
activate User
User -> Amazon : Show query form
activate Amazon
loop for each keywords
User -> Amazon : a keyword
activate Amazon
User <-- Amazon : an item list
deactivate Amazon
end
deactivate Amazon
deactivate User
@enduml
分岐:if, else if, else_
- branch.puml(テキストファイル)
@startuml{branch.png}
title 相互作用フレーム:分岐 alt
hide footbox
Actor "an User" as User
participant "Amazon" as Amazon
activate User
User -> Amazon : Show query form
User -> Amazon : a keyword
activate Amazon
User <-- Amazon : an item list
loop for each item
alt value < 1,000 yen
User -> Amazon : request detail information
else value < 500 yen
User -> Amazon : buy
else other
User -> User : skip
end
end
' PlantUML記法では、 else if (elsif)が無く、else で代用しているのに注意!
deactivate Amazon
deactivate User
@enduml
条件付き実行_
- option.puml(テキストファイル)
@startuml{option.png}
title 相互作用フレーム:条件付き実行 opt
hide footbox
Actor "an User" as User
participant "Amazon" as Amazon
activate User
User -> Amazon : Show query form
User -> Amazon : a keyword
activate Amazon
User <-- Amazon : an item list
loop for each item
opt it is a manga
User -> Amazon : buy
end
end
note over User, Amazon
alt と opt の違いは、else if および else があるか無いかの違い。
altにはelse if および else を設定できる。
opt はelse if および else が設定できない。
end note
deactivate Amazon
deactivate User
@enduml
参照_
他の相互作用図(シーケンス図含む)を参照するときに使う。
- reference.puml(テキストファイル)
@startuml{reference.png}
title 同期的呼び出しと非同期的呼び出し
hide footbox
Actor "an User" as User
participant "Amazon" as Amazon
activate User
User -> Amazon : buy a item
activate Amazon
ref over User, Amazon
Payment
Process of Payment
end ref
User -> Amazon : request detail information of an item
ref over Amazon : Recommendation(keyword)
User <-- Amazon : recommended items
deactivate Amazon
deactivate User
@enduml