基本语法
关键字
声明参与者的几个关键字
actor、boundary、control、entity、database、collections、participant
箭头样式
我们可以通过,修改箭头样式,来表达不一样的意思:
- 表示一条丢失的消息:末尾加 x
- 让箭头只有上半部分或者下半部分:将<和>替换成\或者 /
- 细箭头:将箭头标记写两次 (如 >> 或 //)
- 虚线箭头:用 – 替代 -
- 箭头末尾加圈:->o
- 双向箭头:<->
设置标题、页眉、页脚
- title,设置标题
- herder,设置页眉
- footer,设置页脚,如果想用页码,则加上 %page% of %lastpage%
给信息添加注释
- 在左边添加注释 note left :
- 在右边添加注释 note right :
- 多行注释,note left /right 多行注释 end note
组合信息
- alt/else ,类似于 if / else
- opt 选择,
- loop 循环
- par
- break 跳出循环
- critical
- group 组
它们后面紧跟着消息内容,都是用来组合信息,就跟定义参与者一样,也有好多的关键字,但是自己根据场景选择对应的关键字,这里也是,使用 end 结束没个小分组;
代码
@startuml
'注释:爱丽斯向鲍勃发信息,请求认证'
Alice->Bob:请求认证
alt 成功
Bob->Alice: 认证成功
else 认证失败:密码错误
Bob->Alice: 认证失败:密码错误
group 如果有人不停的尝试,则记录在日志中,此时爱丽斯开始攻击
Alice->Log:爱丽斯开始进行。。。
loop 进行循环1000次
Alice -> Bob:对鲍勃开始循环攻击
end
Alice ->Log:循环结束
note left:这是注释
end
else 认证失败,拒绝访问
Bob->Alice:爱丽斯,洗洗睡吧,我们拒绝你访问
end
@enduml
图例
if
分支
代码
@startuml
start
title 流程
:用户进入;
if(判断条件)then(yes)
-[#blue]->
:执行yes操作;
else(no)
-[#red]->
:执行no操作;
endif
stop
@enduml
图例
重复循环
- repeat
@startuml
start
title 流程
repeat
:int i-1;
note left:注释1
#red:执行i++;
note right:注释2
repeat while(i <= 100)
stop
@enduml
- while
代码
@startuml
start
title 流程
while(i <= 100)
:int -=100;
:i++;
endwhile
stop
@enduml
图例
并行处理
代码
@startuml
start
title 流程
if(条件判断)then(yes)
fork
:并行操作1;
fork again
:并行操作2;
endfork
else(no)
:执行1;
:执行2;
endif
stop
@enduml
时序图
代码
@startuml
skinparam shadowing false
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response
Alice -> Bob: Another authentication Request
Alice <-- Bob: Another authentication Response
@enduml
图例
代码
@startuml
title 关键字 actor 表示参与者
actor B #green
participant A #red
A->B: requestA
B->A: requestB
@enduml
图例
代码
@startuml
title 关键字 database 表示数据库
database Foo #red
participant Bar #red
Bar->Bar: 自己发消息
@enduml
图例
生命线激活、撤销
activate和deactivate用来表示参与者的生命活动激活、撤销,而 destroy 则代表生命线的摧毁:
生命线被撤销、摧毁以后,还是可以再次激活的,但是不能在同一个点,撤销、摧毁以后,立马激活,在图中表现为,线必须要有断点:
代码
@startuml
title skinparam 改变颜色字体
skinparam sequence {
LifeLineBackgroundColor #red
ParticipantBackgroundColor pink
ParticipantFontSize 16
ParticipantFontColor #000
}
actor User
participant "First Class" as A
participant "Second Class" as B
participant "Last Class" as C
User ->A:DoWork
activate A
A->B:Create Request
activate B
B->C:DoWork
activate C
C-->B:WorkDone
destroy C
B-->A:Request Create
deactivate B
A-->User:Done
deactivate A
@enduml
图例
component定义组件
代码
@startuml
title component定义组件
left to right direction
actor customer
actor clerk
rectangle {
customer --(checkout)
(checkout) .>(payment):include
(help) .>(checkout) : extends
(checkout) --clerk
}
@enduml
图例
泳道图
代码
@startuml
|Swimlane1|
start
:foo1;
|#AntiqueWhite|Swimlane2|
:foo2;
:foo3;
|Swimlane1|
:foo4;
|Swimlane2|
:foo5;
stop
@enduml
图例