使用 PlantUML 绘制的 UML
PlantUML 语言参考指引
(Version 1.2023.11)
PlantUML 是一个开源项目,支持快速绘制:
• 时序图
• 用例图
• 类图
• 对象图
• 活动图
• 组件图
• 部署图
• 状态图
• 定时图
同时还支持以下非 UML 图:
• JSON Data
• YAML Data
• Network diagram (nwdiag)
• 线框图形界面
• 架构图
• 规范和描述语言 (SDL)
• Ditaa diagram
• 甘特图
• MindMap diagram
• Work Breakdown Structure diagram
• 以 AsciiMath 或 JLaTeXMath 符号的数学公式
• Entity Relationship diagram
通过简单直观的语言来定义这些示意图。
1 序列图
1 序列图
使用 PlantUML 创建序列图非常简单。这种易用性主要归功于其语法的用户友好性,既直观又易记。
• 直观的语法:
首先,用户非常欣赏 PlantUML 所采用的简单直观的语法。这种经过深思熟虑的设计意味着,即使是图
表创建新手也能轻松快速地掌握基础知识。
• 文本与图形的关联:
另一个显著特点是文本表示与图形输出之间非常相似。这种和谐的相关性可确保文本草稿准确地转化为
图形图表,从而提供连贯、可预测的设计体验,在最终输出中不会出现令人不快的意外。
• 高效的制作过程:
文本和图形结果之间的紧密联系不仅简化了制作过程,还大大加快了制作速度。用户可从更简化的流程
中获益,减少耗时的修改和调整要求。
• 起草时的可视化:
在起草文本的同时就能设想最终的图形结果,这是许多人认为非常宝贵的一项功能。它自然而然地促进
了从初稿到最终呈现的顺利过渡,提高了工作效率,降低了出错的可能性。
• 易于编辑和修改:
重要的是,编辑现有图表的过程非常简便。由于图表是由文本生成的,用户会发现进行调整比使用图形
工具修改图像要容易得多,也精确得多。
PlantUML 为创建和编辑序列图提供了一种简单明了、用户友好的方法,既能满足新手的需求,也能满
足经验丰富的设计人员的需求。它巧妙地利用文本输入的简便性来制作具有视觉描述性和准确性的图表,
从而使自己成为图表创建工具包中的必备工具。
您可以了解更多有关 PlantUML 中一些常用命令的信息,以增强您的图表创建体验。
1.1 基本的例子
序列-> 用于绘制两个参与者之间的信息。参与者不必明确声明。
要有一个点状的箭头,就用-->
也可以用 <- 和 <-- 。这不会改变绘图,但可能提高可读性。注意,这只适用于顺序图,其他图的规则
不同。
@startuml
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response
Alice -> Bob: Another authentication Request
Alice <-- Bob: Another authentication Response
@enduml
PlantUML 语言参考指引 (1.2023.11) 1 / 538
1.2 声明参与者 1 序列图
1.2 声明参与者
如果使用关键字 participant 来声明参与者,就可以对该参与者进行更多的控制。
声明的顺序将是(默认的)显示顺序。
使用这些其他的关键字来声明参与者,将改变参与者的表示形状。
• actor(角色)
• boundary(边界)
• control(控制)
• entity(实体)
• database(数据库)
• collections(集合)
• queue(队列)
@startuml
participant Participant as Foo
actor Actor as Foo1
boundary Boundary as Foo2
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
使用 as 关键字重命名参与者。
你也可以改变演员或参与者的背景颜色。
PlantUML 语言参考指引 (1.2023.11) 2 / 538
1.3 多行定义参与者 1 序列图
@startuml
actor Bob #red
' The only difference between actor
'and participant is the drawing
participant Alice
participant "I have a really\nlong name" as L #99FF99
/' You can also declare:
participant L as "I have a really\nlong name" #99FF99
'/
Alice->Bob: Authentication Request
Bob->Alice: Authentication Response
Bob->L: Log transaction
@enduml
您可以使用 order 关键字来定制参与者的显示顺序。
@startuml
participant Last order 30
participant Middle order 20
participant First order 10
@enduml
1.3 多行定义参与者
你可以对参与者使用多行定义。
@startuml
participant Participant [
=Title
----
""打算""
]
participant Bob
Participant -> Bob
@enduml
PlantUML 语言参考指引 (1.2023.11) 3 / 538
1.4 在参与者中使用非字母 1 序列图
[Ref. QA-15232]
1.4 在参与者中使用非字母
你可以使用引号来定义参与者。而且你可以使用 as 关键字来给这些参与者一个别名。
@startuml
Alice -> "Bob()" : Hello
"Bob()" -> "This is very\nlong" as Long
' You can also declare:
' "Bob()" -> Long as "This is very\nlong"
Long --> "Bob()" : ok
@enduml
1.5 给自己发消息
参与者可以给自己发信息,
消息文字可以用来换行。
@startuml
Alice -> Alice: This is a signal to self.\nIt also demonstrates\nmultiline \ntext
@enduml
@startuml
Alice <- Alice: This is a signal to self.\nIt also demonstrates\nmultiline \ntext
@enduml
PlantUML 语言参考指引 (1.2023.11) 4 / 538