PlantUML 教程:绘制时序图

avatar
作者
筋斗云
阅读量:3

绘制时序图是 PlantUML 的一个强大功能,下面是详细的 PlantUML 时序图教程,帮助你理解如何使用它来创建清晰的时序图。

基本概念

时序图(Sequence Diagram)用于展示对象之间的交互以及它们之间的消息传递顺序。它主要由以下元素组成:

  • 参与者(Participant):图中的对象或实体。
  • 消息(Message):参与者之间发送的消息。
  • 激活(Activation):对象在处理一条消息的时间段。

基本语法

以下是创建一个简单时序图的基本语法:

@startuml participant Alice participant Bob  Alice -> Bob: Hello Bob, how are you? Bob --> Alice: I'm good, thanks! @enduml 

参与者(Participants)

参与者可以是用户、对象、类、组件等。你可以使用 actorparticipantboundarycontrolentitydatabase 等关键字来定义不同类型的参与者。

@startuml actor User participant "Database" as DB entity "Web Server" as WS  User -> WS: Request WS -> DB: Query DB --> WS: Result WS --> User: Response @enduml 

消息(Messages)

消息可以是同步消息、异步消息、返回消息等。以下是各种消息的示例:

@startuml participant Alice participant Bob  Alice -> Bob: Synchronous message Alice ->> Bob: Asynchronous message Bob --> Alice: Return message @enduml 

激活和停止(Activation and Deactivation)

激活表示对象在处理消息时的活动状态。可以使用 activatedeactivate 来显示对象的激活和停用。

@startuml participant Alice participant Bob  Alice -> Bob: Request activate Bob Bob -> Bob: Internal processing Bob --> Alice: Response deactivate Bob @enduml 

生命线(Lifelines)

对象的生命线表示对象的存在和消息的时间线。对象的生命线可以用 destroy 表示结束。

@startuml participant Alice participant Bob  Alice -> Bob: Request activate Bob Bob -> Bob: Internal processing Bob --> Alice: Response deactivate Bob destroy Bob @enduml 

分组和循环(Grouping and Loops)

你可以使用 altoptlooppar 等关键字来表示条件、选项、循环和并行操作。

条件(Alternatives)
@startuml participant Alice participant Bob  Alice -> Bob: Request  alt Success   Bob --> Alice: Response else Failure   Bob --> Alice: Error end @enduml 
循环(Loops)
@startuml participant Alice participant Bob  Alice -> Bob: Request  loop Every second   Bob -> Alice: Status update end @enduml 
并行(Parallel)
@startuml participant Alice participant Bob participant Carol  par Parallel execution   Alice -> Bob: Task 1   Alice -> Carol: Task 2 end @enduml 

示例:综合示例

以下是一个包含多个特性的综合示例:

@startuml actor User participant "Web Browser" as Browser participant "Web Server" as Server participant "Database" as DB  User -> 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 page  User -> 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 

将生成的图像文件保存在同一目录中。

通过这些示例和语法,你应该可以创建出各种复杂的时序图,以帮助你更好地描述系统的行为和交互过程。如果有任何问题或需要更详细的解释,请随时告诉我!

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!