繪制時序圖是 PlantUML 的一個強大功能,下面是詳細的 PlantUML 時序圖教程,幫助你理解如何使用它來創建清晰的時序圖。
基本概念
時序圖(Sequence Diagram)用于展示對象之間的交互以及它們之間的消息傳遞順序。它主要由以下元素組成:
- 參與者(Participant):圖中的對象或實體。
- 消息(Message):參與者之間發送的消息。
- 激活(Activation):對象在處理一條消息的時間段。
基本語法
以下是創建一個簡單時序圖的基本語法:
@startuml
participant Alice
participant BobAlice -> Bob: Hello Bob, how are you?
Bob --> Alice: I'm good, thanks!
@enduml
參與者(Participants)
參與者可以是用戶、對象、類、組件等。你可以使用 actor
、participant
、boundary
、control
、entity
和 database
等關鍵字來定義不同類型的參與者。
@startuml
actor User
participant "Database" as DB
entity "Web Server" as WSUser -> WS: Request
WS -> DB: Query
DB --> WS: Result
WS --> User: Response
@enduml
消息(Messages)
消息可以是同步消息、異步消息、返回消息等。以下是各種消息的示例:
@startuml
participant Alice
participant BobAlice -> Bob: Synchronous message
Alice ->> Bob: Asynchronous message
Bob --> Alice: Return message
@enduml
激活和停止(Activation and Deactivation)
激活表示對象在處理消息時的活動狀態。可以使用 activate
和 deactivate
來顯示對象的激活和停用。
@startuml
participant Alice
participant BobAlice -> Bob: Request
activate Bob
Bob -> Bob: Internal processing
Bob --> Alice: Response
deactivate Bob
@enduml
生命線(Lifelines)
對象的生命線表示對象的存在和消息的時間線。對象的生命線可以用 destroy
表示結束。
@startuml
participant Alice
participant BobAlice -> Bob: Request
activate Bob
Bob -> Bob: Internal processing
Bob --> Alice: Response
deactivate Bob
destroy Bob
@enduml
分組和循環(Grouping and Loops)
你可以使用 alt
、opt
、loop
、par
等關鍵字來表示條件、選項、循環和并行操作。
條件(Alternatives)
@startuml
participant Alice
participant BobAlice -> Bob: Requestalt SuccessBob --> Alice: Response
else FailureBob --> Alice: Error
end
@enduml
循環(Loops)
@startuml
participant Alice
participant BobAlice -> Bob: Requestloop Every secondBob -> Alice: Status update
end
@enduml
并行(Parallel)
@startuml
participant Alice
participant Bob
participant Carolpar Parallel executionAlice -> Bob: Task 1Alice -> Carol: Task 2
end
@enduml
示例:綜合示例
以下是一個包含多個特性的綜合示例:
@startuml
actor User
participant "Web Browser" as Browser
participant "Web Server" as Server
participant "Database" as DBUser -> Browser: Open website
Browser -> Server: HTTP GET /
activate Server
Server -> DB: Query user data
activate DB
DB --> Server: Return user data
deactivate DB
Server --> Browser: HTML + CSS
deactivate Server
Browser -> User: Render pageUser -> Browser: Click link
Browser -> Server: HTTP GET /page
activate Server
Server -> DB: Query page data
activate DB
DB --> Server: Return page data
deactivate DB
Server --> Browser: HTML + CSS
deactivate Server
Browser -> User: Render page
@enduml
生成圖表
使用命令行生成圖表:
java -jar plantuml.jar sequence.puml
將生成的圖像文件保存在同一目錄中。
通過這些示例和語法,你應該可以創建出各種復雜的時序圖,以幫助你更好地描述系統的行為和交互過程。如果有任何問題或需要更詳細的解釋,請隨時告訴我!