plantUml 中文指南 plus
用简单语言绘制有用的uml
plantuml
- 1. 时序图
- * 基础概念
- * 元素速查表
- 1.1 简单示例
- 1.2 声明参与者
- 1.3 在参与者中使用非字母符号
- 1.4 给自己发消息
- 1.5 修改箭头样式
- 1.6 修改箭头颜色
- 1.7 对消息序列编号
- 1.8 Page Title, Header and Footer
- 1.9 分割示意图 (可分多个图)
- 1.10 组合消息
- 1.11 给消息添加注释
- 1.12 其他的注释
- 1.13 改变备注框的形状
- 1.14 Creole 和 HTML
- 1.15 分隔符
- 1.16 引用
- 1.17 延迟
- 1.18 空间
- 1.19 生命线的激活与撤销
- 1.20 Return
- 1.21 创建参与者
- 1.22 进入和发出消息
- 1.23 构造类型和圈点
- 1.24 更多标题信息
- 1.25 包裹参与者
- 1.26 移除脚注
- 1.27 外观参数 (skinparam)
- 1.28 填充区设置
- 2. 用例图
- 2.1 用例
- 2.2 角色
- 2.3 用例描述
- 2.5 继承
- 2.6 使用注释
- 2.6 使用注释
- 2.7 构造类型
- 2.8 改变箭头方向
- 2.9 分割图示
- 2.10 从左向右方向
- 2.11 显示参数
- 2.12 一个完整的例子
- 3. 类图
- 3.1 类之间的关系
- 3.2 关系上的标识
- 3.3 添加方法
- 3.4 定义可访问性
- 3.5 抽象与静态
- 3.6 高级类体
- 3.7 备注和模板
- 3.8 更多注释
- 3.9 链接的注释
- 3.10 抽象类和接口
- 3.11 使用非字母字符
- 3.12 隐藏属性、函数等
- 3.13 隐藏类
- 3.14 泛型(generics)
- 3.15 指定标记(Spot)
- 3.16 包
- 3.17 包样式
- 3.18 命名空间(Namespaces)
- 3.19 自动创建命名空间
- 3.20 棒棒糖接口
- 3.21 改变箭头方向
- 3.22 “关系”类
- 3.23 皮肤参数
- 3.24 原型类的皮肤
- 3.25 颜色渐变
- 3.26 辅助布局
- 3.27 拆分大文件
- 4. 活动图
- 4.1 简单活动
- 4.2 箭头上的标签
- 4.3 改变箭头方向
- 4.4 分支
- 4.5 更多分支
- 4.6 同步
- 4.7 长的活动描述
- 4.8 注释
- 4.9 分区
- 4.10 显示参数
- 4.11 八边形活动
- 4.12 一个完整的例子
- 5. 活动图 (新语法)
- 5.1 简单活动图
- 5.2 开始/结束
- 5.3 条件语句
- 5.4 重复循环
- 5.5 while 循环
- 5.6 并行处理
- 5.7 注释
- 5.8 颜色
- 5.9 箭头
- 5.10 连接器 (Connector)
- 5.11 组合 (grouping)
- 5.12 泳道 (Swimlanes)
- 5.13 分离 (detach)
- 5.14 特殊领域语言 (SDL)
- 5.15 一个完整的例子
- 6. 组件图
- 6.1 组件
- 6.2 接口
- 6.3 基础的示例
- 6.4 使用注释
- 6.5 组合组件
- 6.6 改变箭头方向
- 6.7 使用 UML2 标记符
- 6.8 长描述
- 6.9 不同的颜色表示
- 6.10 在定型组件中使用精灵图
- 6.11 显示参数
- 7. 状态图
- 7.1 简单状态
- 7.2 Change state rendering
- 7.3 合成状态
- 7.4 长名字
- 7.5 并发状态
- 7.6 箭头方向
- 7.7 注释
- 7.8 更多注释
- 7.9 显示参数
- 8. 对象图
- 8.1 对象的定义
- 8.2 对象之间的关系
- 8.3 添加属性
- 8.4 类图中的通用特性
- 9. 时序图
- 9.1 声明参与者
- 9.2 增加消息
- 9.3 相对时间
- 9.4 Participant oriented
- 9.5 Setting scale
- 9.6 Initial state
- 9.7 Intricated state
- 9.8 Hidden state
- 9.9 Adding constraint
- 9.10 Adding texts
- 10. 甘特图
- 10.1 Declaring tasks 任务
- 10.2 Adding constraints
- 10.3 Short names
- 10.4 Customize colors
- 10.5 Milestone
- 10.6 Calendar
- 10.7 Close day
- 10.8 Simplified task succession
- 10.9 Separator
- 10.10 Working with resources
- 10.11 Complex example
1. 时序图
* 基础概念
是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。
时序图中包括如下元素:角色,对象,生命线,控制焦点和消息
-
角色(Actor)
系统角色,可以是人或者其他系统,子系统。 -
对象(Object)
对象代表时序图中的对象在交互中所扮演的角色,
对象一般包含以下三种命名方式:
第一种方式包含对象名和类名。
第二种方式只显示类名不显示对象名,即为一个匿名对象。
第三种方式只显示对象名不显示类名。 -
生命线(Lifeline)
生命线代表时序图中的对象在一段时期内的存在。时序图中每个对象和底部中心都有一条垂直的虚线,这就是对象的生命线,对象间 的消息存在于两条虚线间。

-
控制焦点(Activation)
控制焦点是顺序图中表示时间段的符号,在这个时间段内对象将执行相应的操作。用小矩形表示。

-
消息(Message)
同步消息 实线+加粗箭头
异步消息 实线+箭头
返回消息 虚线+箭头
消息一般分为同步消息(Synchronous Message),异步消息(Asynchronous Message)和返回消息(Return Message).如下图所示

同步消息=调用消息(Synchronous Message)(消息的发送者发送完了 只能等待接受者)
消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息的接收者放弃或者返回控制。用来表示同步的意义。
异步消息(Asynchronous Message)(消息的发送者发送完了 可以继续活动)
消息发送者通过消息把信号传递给消息的接收者,然后继续自己的活动,不等待接受者返回消息或者控制。异步消息的接收者和发送者是并发工作的。
返回消息(Return Message)
返回消息表示从过程调用返回
- 自关联消息
表示方法的自身调用以及一个对象内的一个方法调用另外一个方法

* 元素速查表
1.1 简单示例
你可以用 -> 来绘制参与者之间传递的消息,而不必显式地声明参与者。
你也可以使用 --> 绘制一个虚线箭头。
另外,你还能用 <- 和 <--,这不影响绘图,但可以提高可读性。注意:仅适用于时序图,对于其它示意
图,规则是不同的。
@startuml
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response
Alice -> Bob: Another authentication Request
Alice <-- Bob: another authentication Response
@enduml

1.2 声明参与者
关键字 participant 用于改变参与者的先后顺序。
你也可以使用其它关键字来声明参与者:
- actor 角色
- boundary 系统边界
- control 系统控制
- entity 实体
- database 数据库
@startuml
actor Foo1
boundary Foo2
control Foo3
entity Foo4
database Foo5
collections Foo6
Foo1 -> Foo2 : To boundary
Foo1 -> Foo3 : To control
Foo1 -> Foo4 : To entity
Foo1 -> Foo5 : To database
Foo1 -> Foo6 : To collections
@enduml

关键字 as 用于重命名参与者
你可以使用 RGB 值或者颜色名修改actor或参与者的背景颜色。
@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 在参与者中使用非字母符号
你可以使用引号定义参与者,还可以用关键字as 给参与者定义别名。
Alice -> "Bob()" : Hello
"Bob()" -> "This is very\nlong" as Long
' You can also declare:
' "Bob()" -> Long as "This is very\nlong"
Long --> "Bob()" : ok

1.4 给自己发消息
参与者可以给自己发信息,
消息文字可以用 \n来换行。
@startuml
Alice --> Alice: This is a signal to self.\nIt also demonstrates\nmultiline \ntext
@enduml

1.5 修改箭头样式
修改箭头样式的方式有以下几种:
- 表示一条丢失的消息:末尾加 x
- 让箭头只有上半部分或者下半部分:将 < 和 > 替换成 \ 或者 /
- 细箭头:将箭头标记写两次 (如 >> 或 //)
- 虚线箭头:用 – 替代 -
- 箭头末尾加圈:->o
- 双向箭头:<->
@startuml
Bob ->x Alice
Bob -> Alice
Bob ->> Alice
Bob -\ Alice
Bob \\- Alice
Bob //-- Alice
Bob ->o Alice
Bob o\\-- Alice
Bob <-> Alice
Bob <->o Alice
@enduml

1.6 修改箭头颜色
你可以用以下记号修改箭头的颜色:
@startuml
Bob -[#red]> Alice : hello
Alice -[#0000FF]->Bob : ok
@enduml

1.7 对消息序列编号
关键字 autonumber 用于自动对消息编号。
@startuml
autonumber
Bob -> Alice : Authentication Request
Bob <- Alice : Authentication Response
@enduml

语句 autonumber start用于指定编号的初始值,而autonumber start increment 可以同时指定编号的初始值和每次增加的值。
@startuml
autonumber
Bob -> Alice : Authentication Request
Bob <- Alice : Authentication Response
autonumber 15
Bob -> Alice : Another authentication Request
Bob <- Alice : Another authentication Response
autonumber 40 10
Bob -> Alice : Yet another authentication Request
Bob <- Alice : Yet another authentication Response
@enduml

@startuml
autonumber "[000]"
Bob -> Alice : Authentication Request
Bob <- Alice : Authentication Response
autonumber 15 "(##)"
Bob -> Alice : Another authentication Request
Bob <- Alice : Another authentication Response
autonumber 40 10 "Message 0 "
Bob -> Alice : Yet another authentication Request
Bob <- Alice : Yet another authentication Response
@enduml

你还可以用语句 autonumber stop 和 autonumber resume increment format来表示暂停或继续使用自
动编号。
1.8 Page Title, Header and Footer
The title keyword is used to add a title to the page.
@startuml
header Page Header
footer Page %page% of %lastpage%
title Example Title
Alice -> Bob : message 1
Alice -> Bob : message 2
@enduml

1.9 分割示意图 (可分多个图)
关键字 newpage 用于把一张图分割成多张。
在 newpage 之后添加文字,作为新的示意图的标题。
这样就能很方便地在 Word 中将长图分几页打印。
@startuml
Alice -> Bob : message 1
Alice -> Bob : message 2
newpage
Alice -> Bob : message 3
Alice -> Bob : message 4
newpage A title for the\nlast page
Alice -> Bob : message 5
Alice -> Bob : message 6
@enduml

1.10 组合消息
我们可以通过以下关键词将组合消息:
- alt/else 抉择
- opt 选项包含一个可能发生或不发生的序列
- loop 循环
- par 并行
- break 提供了和编程语言中的break类拟的机制;
- critical 排他处理
- group, 后面紧跟着消息内容
可以在标头 (header) 添加需要显示的文字 (group 除外)。
关键词 end 用来结束分组。
注意,分组可以嵌套使用。
@startuml
Alice -> Bob: Authentication Request
alt successful case
Bob -> Alice: Authentication Accepted
else some kind of failure
Bob -> Alice: Authentication Failure
group My own label
Alice -> Log : Log attack start
loop 1000 times
Alice -> Bob: DNS Attack
end
Alice -> Log : Log attack end
end
else Another type of failure
Bob -> Alice: Please repeat
end
@enduml

1.11 给消息添加注释
我们可以通过在消息后面添加 note left或者 note right 关键词来给消息添加注释。
你也可以通过使用 end note 来添加多行注释。
@startuml
Alice->Bob : hello
note left: this is a first note
Bob->Alice : ok
note right: this is another note
Bob->Bob : I am thinking
note left
a note
can also be defined
on several lines
end note
@enduml

1.12 其他的注释
可以使用 note left of,note right of 或note over 在节点 (participant) 的相对位置放置注释。
还可以通过修改背景色来高亮显示注释。
以及使用关键字 end note 来添加多行注释。
@startuml
participant Alice
participant Bob
note left of Alice #aqua
This is displayed
left of Alice.
end note
note right of Alice: This is displayed right of Alice.
note over Alice: This is displayed over Alice.
note over Alice, Bob #FFAAAA: This is displayed\n over Bob and Alice.
note over Bob, Alice
This is yet another
example of
a long note.
end note
@enduml

1.13 改变备注框的形状
你可以使用 hnote 和 rnote 这两个关键字来修改备注框的形状。
@startuml
caller -> server : conReq
hnote over caller : idle
caller <- server : conConf
rnote over server
"r" as rectangle
"h" as hexagon
endrnote
@enduml

1.14 Creole 和 HTML
可以使用 creole 格式。
@startuml
participant Alice
participant "The **Famous** Bob" as Bob
Alice -> Bob : hello --there--
... Some ~~long delay~~ ...
Bob -> Alice : ok
note left
This is **bold**
This is //italics//
This is ""monospaced""
This is --stroked--
This is __underlined__
This is ~~waved~~
end note
Alice -> Bob : A //well formatted// message
note right of Alice
This is displayed
__left of__ Alice.
end note
note left of Bob
This</u> is displayedor>
**<color purple>left of Alice Bob**.
end note
note over Alice, Bob
<w:#FF33FF>This is hosted by
end note
@enduml

1.15 分隔符
你可以通过使用 == 关键词来将你的图表分割多个步骤。
@startuml
== Initialization ==
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response
== Repetition ==
Alice -> Bob: Another authentication Request
Alice <-- Bob: another authentication Response
@enduml

1.16 引用
你可以在图中通过使用 ref over关键词来实现引用
@startuml
participant Alice
actor Bob
ref over Alice, Bob : init
Alice -> Bob : hello
ref over Bob
This can be on
several lines
end ref
@enduml

1.17 延迟
你可以使用... 来表示延迟,并且还可以给延迟添加注释。
@startuml
Alice -> Bob: Authentication Request
...
Bob --> Alice: Authentication Response
...5 minutes latter...
Bob --> Alice: Bye !
@enduml

1.18 空间
你可以使用 |||来增加空间。
还可以使用数字指定增加的像素的数量。
@startuml
Alice -> Bob: message 1
Bob --> Alice: ok
|||
Alice -> Bob: message 2
Bob --> Alice: ok
||45||
Alice -> Bob: message 3
Bob --> Alice: ok
@enduml

1.19 生命线的激活与撤销
关键字 activate 和 deactivate 用来表示参与者的生命活动。
一旦参与者被激活,它的生命线就会显示出来。
activate和 deactivate 适用于以上情形。
destroy 表示一个参与者的生命线的终结。
@startuml
participant User
User -> A: DoWork
activate A
A -> B: << createRequest >>
activate B
B -> C: DoWork
activate C
C --> B: WorkDone
destroy C
B --> A: RequestCreated
deactivate B
A -> User: Done
deactivate A
@enduml

还可以使用嵌套的生命线,并且运行给生命线添加颜色。
@startuml
participant User
User -> A: DoWork
activate A #FFBBBB
A -> A: Internal call
activate A #DarkSalmon
A -> B: << createRequest >>
activate B
B --> A: RequestCreated
deactivate B
deactivate A
A -> User: Done
deactivate A
@enduml

1.20 Return
生成return消息有可选的 方式。表示返回到最近的生命线。
@startuml
Bob -> Alice : hello
activate Alice
Alice -> Alice : some action
return bye
@enduml

1.21 创建参与者
你可以把关键字 create 放在第一次接收到消息之前,以强调本次消息实际上是在创建新的对象。
@startuml
Bob -> Alice : hello
create Other
Alice -> Other : new
create control String
Alice -> String
note right : You can also put notes!
Alice --> Bob : ok
@enduml

1.22 进入和发出消息
如果只想关注部分图示,你可以使用进入和发出箭头。
使用方括号 [和] 表示图示的左、右两侧。
@startuml
[-> A: DoWork
activate A
A -> A: Internal call
activate A
A ->] : << createRequest >>
A<--] : RequestCreated
deactivate A
[<- A: Done
deactivate A
@enduml

还可以使用下面的语法:
@startuml
[-> Bob
[o-> Bob
[o->o Bob
[x-> Bob
[<- Bob
[x<- Bob
Bob ->]
Bob ->o]
Bob o->o]
Bob ->x]
Bob <-]
Bob x<-]
@enduml

1.23 构造类型和圈点
可以使用 << 和 >> 给参与者添加构造类型。
在构造类型中,你可以使用(X,color)格式的语法添加一个圆圈圈起来的字符。
@startuml<
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
