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