newpage 用来分割页面,使用一个newpage 分割一个页面变成两个页面 newpage title 指定下一个页面的标题
1 2 3 4 5 6 7 8 9 10 11 12 13
@startuml header Page Header footer Page %page% of %lastpage% title Example Title 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
生成了三张图片
组合消息
alt/else 有点像if else的关系
loop 循环次数 循环
group 主标签 次标签
1 2 3 4 5 6 7 8 9 10 11 12
@startuml a->b: 给你一个数 group 判断数字 [测试] alt 大于0 b->a: 正数 else 小于0 b->a: 负数 else 不是数字 b->a: 给定信息非法,重新给我一个数 end end @enduml
给消息添加注释
note left 在左边添加注释
note right在右边添加注释
note left/right end note 添加多行注释
note left/right of 参与者 颜色 指定在注释在参与者的哪边
note over 参与者 … 贯穿参与者
如果两个备注要在同一行需要使用 /
1 2 3 4 5 6 7
@startuml note left of a: 初始化 / note right of b: 初始化
note across: 共同协作
@enduml
分隔符
使用分割符,可以将图表分割成多个逻辑步骤
== ==
1 2 3 4 5 6 7 8 9 10
@startuml
== 初始化 == note left of a: 初始化 / note right of b: 初始化
== 开始工作 == note across: 共同协作
@enduml
引用
ref over 参与者…
ref over 参与者 … end ref
延时
… 代表延时操作
… 5分钟 … 代表具体延时
增加空间
||| 增加空间
|| 45 || 增加指定像素空间
包裹参与者
声明参与者的时候使用下面形式包裹参与者就可以了
box title 颜色 … end box
1 2 3 4 5 6 7 8 9
@startuml box "Internal Service" #LightBlue participant Bob participant Alice end box participant Other Bob -> Alice : hello Alice -> Other : hello @enduml
移除下面的参与者图标
hide footbox
用例图
可以使用() 或者usecase关键字定义
1 2 3 4 5 6 7
@startuml (firstcase) as f (secondcase) as s
usecase thridcase as t
@enduml
角色形象
声明角色
: user :
actor user
更改头像
skinparam actorStyle awesome
1 2 3 4 5 6 7 8 9 10 11 12
@startuml :User: --> (Use) "Main Admin" as Admin "Use the application" as (Use) Admin --> (Admin the application)
skinparam actorStyle awesome :User1: --> (Use1) "Main Admin" as Admin1 "Use the application" as (Use1) Admin1 --> (Admin the application1) @enduml
用例描述
使用" " 包裹起来,中间开可以加下面几种分割符
– 横线
… 虚线
== 双横线
__ 下划线
1 2 3 4 5 6 7 8 9 10 11 12 13
@startuml
usecase h as "我很好,谢谢你 -- 我非常好,谢谢你 == hh == 我真的很好,谢谢你 ..hh.. 好的,谢谢你 __ 拜拜 "
@enduml
使用包
可以使用包将角色或者用例分组
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
@startuml :djm:
package test{ usecase test1 as test1 usecase test2 as test2 usecase test3 as test3 } djm -> test1 djm -> test2 djm -> test3
@enduml
-> 连接两个用例之间的箭头横杠越多,线条越长
继承
a 继承 b 可以表示为: b<|–a
注释
这个和时序图的差不多,只不过这个有四个方位: note left/right/top/bottom of
注释可以定义一个对象,但是连接的时候必须使用 …
箭头方向
-left/right/up/down-> 这样可以自定义箭头的方向
1 2 3 4 5 6 7 8 9 10
@startuml
actor :u1: actor :u2: actor :u3:
u1 -up-> u2 u1 -left-> u3
@enduml
类图
元素声明
1 2 3 4 5 6 7 8 9 10 11
abstract abstract abstract class "abstract class" annotation annotation circle circle () circle_short_form class class diamond diamond <> diamond_short_form entity entity enum enum interface interface