@startuml participant Alice as a participant Bob as b a -> b : ""-> "" a ->> b : ""->> "" a -\ b : ""-\ "" a -\\ b : ""-\\\\"" a -/ b : ""-/ "" a -// b : ""-// "" a ->x b : ""->x "" a x-> b : ""x-> "" a o-> b : ""o-> "" a ->o b : ""->o "" a o->o b : ""o->o "" a <-> b : ""<-> "" a o<->o b : ""o<->o"" a x<->x b : ""x<->x"" a ->>o b : ""->>o "" a -\o b : ""-\o "" a -\\o b : ""-\\\\o"" a -/o b : ""-/o "" a -//o b : ""-//o "" a x->o b : ""x->o "" @enduml
箭头颜色
[]修改箭头颜色
1 2 3 4
@startuml Bob -[#red]> Alice : hello Alice -[#0000FF]->Bob : ok @enduml
2 参与者类型
关键字participant用来声明参与者。参与者主要有以下内容
actor(角色)
boundary(边界)
control(控制)
entity(实体)
database(数据库)
collections(集合)
queue(队列)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
@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&color
关键字 as 用于重命名参与者。#RGB值或者#颜色名修改参与者的背景颜色。
1 2 3 4 5 6 7 8 9 10 11 12 13
@startuml actor Bob #red ' actor 和 participant 只在外观上有区别 participant Alice participant "很长很长很长\n的名字" as L #99FF99 /' 也可以这样声明: participant L as "很长很长很长\n的名字" #99FF99 '/
@startuml participant 最后 order 30 participant 中间 order 20 participant 首个 order 10 @enduml
“”引号
“”引号定义参与者,并用关键字 as 给参与者定义别名。
1 2 3 4 5 6 7
@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 2 3
@startuml Alice->Alice: This is a signal to self.\nIt also demonstrates\nmultiline \ntext @enduml
关键字create创建参与者
关键字create放在第一次接收到消息之前,以强调本次消息实际上是在创建新的对象。
1 2 3 4 5 6 7 8 9 10 11 12 13
@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 2 3 4 5 6 7 8
@startuml
participant "Famous Bob" as Bob << Generated >> participant Alice << (C,#ADD1B2) Testable >>
@startuml Alice->Bob : hello note left: this is a first note
Bob->Alice : ok note right #aqua: this is another note
Bob->Bob : I am thinking note across a note can also be defined on several lines end note @enduml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
@startuml caller -> server : conReq hnote over caller : 空闲 caller <- server : conConf rnote over server "r"是正方形 "h"是六边形 endrnote rnote over server 多 行 文本 endrnote hnote over caller 多 行 文本 endhnote @enduml
进入和发出消息
使用方括号[和]表示图示的左、右两侧。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
@startuml [-> A: DoWork
activate A
A -> A: Internal call activate A
A ->] : << createRequest >>
A<--] : RequestCreated deactivate A [<- A: Done deactivate A @enduml
@startuml participant Alice as a participant Bob as b a -> b : //Long long label// a ->? : ""->? "" a ->>? : ""->>? "" a -\? : ""-\? "" a -\\? : ""-\\\\?"" a -/? : ""-/? "" a -//? : ""-//? "" a ->x? : ""->x? "" a x->? : ""x->? "" a o->? : ""o->? "" a ->o? : ""->o? "" a o->o? : ""o->o? "" a <->? : ""<->? "" a o<->o? : ""o<->o?"" a x<->x? : ""x<->x?"" a ->>o? : ""->>o? "" a -\o? : ""-\o? "" a -\\o? : ""-\\\\o?"" a -/o? : ""-/o? "" a -//o? : ""-//o? "" a x->o? : ""x->o? "" @enduml
4 页面控制
页眉和页脚
使用title关键词增加标题
使用header关键词增加页眉
使用footer关键词增加页脚
1 2 3 4 5 6 7 8 9 10 11
@startuml
header Page Header footer Page %page% of %lastpage%
title Example Title
Alice -> Bob : message 1 Alice -> Bob : message 2
@enduml
关键字 newpage 分页
用于把一张图分割成多张
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
@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 2 3 4 5 6 7 8 9 10 11 12 13
@startuml
== 初始化 ==
Alice -> Bob: 认证请求 Bob --> Alice: 认证响应
== 重复 ==
Alice -> Bob: 认证请求 Alice <-- Bob: 认证响应
@enduml
…来表示延迟,并且还可以给延迟添加注释
1 2 3 4 5 6 7 8 9
@startuml
Alice -> Bob: 认证请求 ... Bob --> Alice: 认证响应 ...5分钟后... Bob --> Alice: 再见!
@enduml
使用|||来增加空间
还可以使用数字指定增加的像素的数量。
1 2 3 4 5 6 7 8 9 10 11 12
@startuml
Alice -> Bob: message 1 Bob --> Alice: ok ||| Alice -> Bob: message 2 Bob --> Alice: ok ||45|| Alice -> Bob: message 3 Bob --> Alice: ok
B -> C: DoWork activate C C --> B: WorkDone destroy C
B --> A: RequestCreated deactivate B
A -> User: Done deactivate A
@enduml
嵌套生命线
使用不同颜色标注
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
@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
自动激活生命线
自动激活关键字(autoactivate),这需要与return关键字配合
1 2 3 4 5 6 7 8 9 10 11 12
@startuml autoactivate on alice -> bob : hello bob -> bob : self call bill -> bob #005500 : hello from thread 2 bob -> george ** : create return done in thread 2 return rc bob -> george !! : delete return success
@enduml
激活撤销创建销毁快捷语法
++ 激活目标(可选择在后面加上#color)
– 撤销激活源
** 创建目标实例
!! 摧毁目标实例
1 2 3 4 5 6 7 8 9 10
@startuml alice -> bob ++ : hello bob -> bob ++ : self call bob -> bib ++ #005500 : hello bob -> george ** : create return done return rc bob -> george !! : delete return success @enduml
实线和虚线
nosolid 虚线(默认)
solid 实线
1 2 3 4 5
@startuml skinparam lifelineStrategy solid Bob -> Alice : hello Alice -> Bob : ok @enduml