UML序列图是仅次于类图的最常见的UML图。 序列图将相互关系表示为二维图,其中纵向是时间轴,纵向是时间延伸。 横轴表示协作中的每个角色,通常是Class中的对象,用虚线表示每个角色的生命线,用矩形竖线表示生命线上是否处于活动状态。 可以在对象之间发送同步或异步消息。
序列图可能比类图更能体现PlantUML的价值
同步信息@startumlthdsn -爱心饼干: Hi爱心饼干-- thdsn: Hithdsn -爱心饼干: Is this a pen? 深饼干-- thdsn: No否! This is an apple! @enduml
序列图基本配置:字符消息类型字符:消息内容消息类型中-表示同步消息- -虚线表示回复消息异步消息@startumlthdsn -爱情小甜饼: Hithdsn - thdsn -爱心饼干: Is this a pen? thdsn -爱心饼干: Is this a pen? thdsn -爱心饼干: Is this a pen? 爱心饼干- thdsn: This is an apple! @enduml
-表示异步消息
角色生命线@ startumlparticipantthdsnparticipant爱心饼干participant skdbhskdbh -爱心饼干: Who is thdsn? 爱心饼干- thdsn: Are you thdsn? @enduml
多个粒子从左到右依次显示每个角色的生命线。 如果没有participant,角色出现顺序将从左到右显示生命线的角色图例@ startumlactoractorboundarycontrolcontrolentityentitydatabasedatabase
可以使用非participant关键字来表示特殊的角色类型
发给我的邮件@ startumlaclie-AC lie : dosomethingbyyourselfaclie-AC lie 3360 dosomethingbyourselfaclie-AC lie 3360 domethingbbbbaclie
留言@startumlthdsn -爱心饼干: Hiautonumber爱心饼干- skdbh: Hiskdbh - Dave: Hi爱心饼干- Dave: Hi@enduml
可能需要将序列号添加到消息中以指示顺序。 可以在第一条消息之前添加autonumber,然后自动将序列号添加到后续消息中。
起始号和增量@startumlautonumber 3thdsn -爱心饼干: Hi爱心饼干- sk DBH : hi autonumber 23 sk DBH-Dave 3360 hi爱心饼干- Dave 3360 hi
autonumber起始序列号增量用于指定实际序列号和序列号增量的增量
短信号暂停@startumlautonumberthdsn -爱心饼干: Hiautonumber stop爱心饼干- sk DBH : hiskdbh-Dave 3360 hiautonumberresume爱心饼干ve 3360 hiautonumberresume e : hi @ endumlautonumberstop :自动序列号暂停autonumber resume:自动序列号连续消息组@startumlthdsn -深度alt yes thdsn --爱情饼干: Yes! This is a pen! else no thdsn --爱情饼干: No! This is an apple! end@enduml
如果需要多个消息表示一组相关逻辑,则可以使用预配置的关键字来表示各种逻辑。 例如,在alt/elseoptloopparbreakcritical关键字后缩进消息信息(如yes、no )是不必要的,但如果添加可读性更好的消息组,则
@startumlthdsn -爱心饼干: Is this a pen? alt yes thdsn --爱心饼干
: Yes! This is a pen!!else no thdsn <-- 深情的饼干: Noooooooo! This is an apple!!!!! loop ∞ thdsn -> 深情的饼干: Oh sorry! By the way, is this a pen? thdsn <-- 深情的饼干: No!!!! endend@enduml 自定义消息组除了使用预置关键字的消息组,还可以使用任意名字自定义一个消息组
@startumlgroup copy thdsn -> 深情的饼干: Is this a pen? thdsn <-- 深情的饼干: No! This is an apple!!end@endumlgroup 之后添加消息组的名字
生命线活跃状态 @startumlactivate thdsnthdsn -> 深情的饼干activate 深情的饼干深情的饼干 -> skdbhactivate skdbh深情的饼干 <-- skdbhdeactivate skdbhthdsn <-- 深情的饼干deactivate 深情的饼干@enduml activate <name> 指定name的生命线进入活跃状态deactive <name> 指定name的生命线退出活跃状态 嵌套活跃状态 @startumlactivate thdsnthdsn -> 深情的饼干activate 深情的饼干深情的饼干 -> 深情的饼干activate 深情的饼干深情的饼干 -> skdbhactivate skdbh深情的饼干 <-- skdbhdeactivate skdbhthdsn <-- 深情的饼干deactivate 深情的饼干@endumlactivate 中继续 activate 可以嵌套活跃状态
创建角色和生命线 @startumlthdsn -> 深情的饼干create skdbh深情的饼干 -> skdbh: new深情的饼干 -> skdbh深情的饼干 <-- skdbhthdsn <-- 深情的饼干@endumlcreate <name> 用来创建一个角色和其生命线,此时消息箭头会执行角色图例
参考、引用 @startumlthdsn -> 深情的饼干ref over 深情的饼干, skdbh: ...thdsn <-- 深情的饼干ref over thdsn......end ref@enduml可以在时序图中添加参考信息
ref over <生命线名称> : <内容> : reference 的范围和参考内容ref over ... end ref: 可以换行写参考内容 边界线 @startuml== Foo ==thdsn -> 深情的饼干thdsn <-- 深情的饼干== Bar ==深情的饼干 -> skdbh深情的饼干 <-- skdbh@enduml== <name> == 添加边界线,跨越所有角色的生命线
外部消息 @startuml[-> thdsn: Hellothdsn ->]: Hello@enduml消息箭头的前后使用 [ , ] ,表示一个来自外部或者指向外部的消息
消息间隔 @startumlthdsn -> 深情的饼干thdsn <-- 深情的饼干thdsn -> 深情的饼干thdsn <-- 深情的饼干|||thdsn -> 深情的饼干thdsn <-- 深情的饼干||80||thdsn -> 深情的饼干thdsn <-- 深情的饼干@enduml 消息之间加 ||| , 会适当拉开消息间隔||<pixel>||:pixel可以指定具体间隔的像素数 备注 @startumlthdsn -> 深情的饼干note left: Hellothdsn <-- 深情的饼干note right: Worldthdsn -> thdsnnote leftHelloWorldend note@enduml 消息后紧跟 note left 或者 note right 表示在相应位置添加备注,注意note 不能指定 top 或 bottomnote <left|right> ... end note 可以换行写备注备注内容支持 Creole 格式,Creole 的语法类似 Markdown Creole 语法示例 @startumlnote left --标题-- = 标题1 == 标题2 === 标题3 --列表-- * 列表1 * 列表2 ** 列表2-1 # 有序列表1 # 有序列表2 ## 有序列表2-1 --字体-- * **粗体** * //斜体// * ""等宽字体(monospace)"" * --删除线-- * __下划线__ --表格-- |= |= Column1 |= Column2 | |1 |Value1-1 |Value1-2 | |2 |Value2-1 |Value2-2 | --HTML-- * <color:red>设置颜色</color> * <color:#00FF00>色号</color> * <back:skyblue>背景色</back> * <size:18>字号</size> * <b>粗体</b> --目录-- |_build.gradle |_src |_main |_java |_... |_... |_testend note@enduml PlantUML 快速入门(一) UML 类图