在软件开发中,清晰地表达系统组件之间的交互至关重要。时序图(Sequence Diagram)是统一建模语言(UML)中的一种图表类型,它用于描述对象之间如何按时间顺序进行交互。PlantUML 是一种开源工具,它允许用户使用简单的文本语法来创建 UML 图表和其他类型的图表。本文将向您介绍如何使用 PlantUML 创建时序图,并通过一系列示例来展示其强大功能,包括参与者定义、消息传递、注释以及更复杂的控制结构等。
基本示例
->:表示绘制两者之间的关系;
–>:带有箭头的;
<-;<–也可以使用;
适用于顺序图,其他图的规则不同
@startuml
title study uml base
A -> B:hello sb
B -> A:hello SA
A --> B:hello SB
B --> A:hello SA
@enduml
生命参与者
使用关键字participant来声明,声明的顺序是默认的显示顺序
- actor :角色
- boundary :边界
- control :控制
- entity :实体
- database :数据库
- collections :集合
- queue :队列
@startuml
title 声明参与者
participant Participant as Foo
actor Actor as Foo1 #red
boundary Boundary as Foo2 #green
control Control as Foo3
entity Entity as Foo4
database Database as Foo5
collections Collections as Foo6
queue Queue as Foo7
Foo -> Foo1: to actor
Foo -> Foo2 : to boundary
Foo -> Foo3 : to control
Foo -> Foo4 : to entity
Foo -> Foo5 : to database
Foo -> Foo6 : to collections
Foo -> Foo7 : to queue
@enduml
多行定义参与者
participant Participant[=title
—
““content””
]
@startuml
title 多行定义参与者
participant A[
=title
----
""参与者""
]
participant B
A -> B
@enduml
在参与者中使用非字母
可以使用引号来定义参与者,使用as关键字给参与者一个别名
@startuml
title 参与者使用非字母
A -> "B()":hello
"B()"->"my name is sb" as sb
sb -->"B()": "your name is sb"
@enduml
给自己发消息
可以使用\n换行
@startuml
title 给自己发消息
B->B:my name is sb
A<-A:自己给自己发消息
@enduml
文本对齐
箭头的文本对齐可以使用skinparam sequenceMessageAlign,后接参数left、right或者center
也可以使用direction或reverseDirection来根据箭头的方式对齐文本
同时,也可以使用skinparam responseMessageBelowArrow true命令,让响应体显示在箭头下面
@startuml
title 文本对齐