美文网首页
PlantUML-时序图-2021-06-18-周五

PlantUML-时序图-2021-06-18-周五

作者: 勇往直前888 | 来源:发表于2021-06-24 19:14 被阅读0次

    简单示例

    • ->,<-,<--,--> 这是箭头的意思,很形象;箭头分实线和虚线两种

    • :后面是箭头的描述信息

    • @startuml 开始标志; @enduml 结束标志

    • 默认的参与者是矩形框带文字,只要提供文字就行,可以省略关键字。

    @startuml
    用户 -> 认证中心: 登录操作
    认证中心 -> 缓存: 存放(key=token+ip,value=token)token
    
    用户 <- 认证中心 : 认证成功返回token
    用户 -> 认证中心: 下次访问头部携带token认证
    认证中心 <- 缓存: key=token+ip获取token
    其他服务 <- 认证中心: 存在且校验成功则跳转到用户请求的其他服务
    其他服务 -> 用户: 信息
    @enduml
    
    image.png

    声明参与者

    不同的关键字,有不同的形状;
    as 后面的是参与者的别名(仅脚本中使用,图上显示的是正式名字);
    • participant(参与者,默认的,可以省略关键字)
    • actor(角色)
    • boundary(边界)
    • control(控制)
    • entity(实体)
    • database(数据库)
    • collections(集合)
    • queue(队列)

    @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
    
    image.png

    在参与者中使用非字母符号

    你可以使用双引号定义参与者,还可以用关键字 as 给参与者定义别名。
    也就是说,参与者的命名如果含有非字母,需要用双引号包起来。如果名字太长要换行,可以用\n

    @startuml
    Alice -> "Bob()" : Hello
    "Bob()" -> "This is very\nlong" as Long
    Long --> "Bob()" : ok
    @enduml
    
    image.png

    给自己发消息

    给自己发消息和给别人发消息是一样的,只是箭头的两端都是同一个就行。

    @startuml
    Alice->Alice: This is a signal to self.\nIt also demonstrates\nmultiline \ntext
    @enduml
    
    image.png

    让响应信息显示在箭头下面

    时序图主要用来发送信息,响应信息;向右的一般是发送,向左的一般是响应。发送的文字在箭头上面,响应的信息在箭头下面,表达起来更形象一点。使用 skinparam responseMessageBelowArrow true 命令可以做到这一点。

    @startuml
    skinparam responseMessageBelowArrow true
    Bob -> Alice : hello
    Bob <- Alice : ok
    @enduml
    
    image.png

    修改箭头样式

    • 表示一条丢失的消息:末尾加 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
    
    arrow.png

    对消息序列编号

    关键字 autonumber 用于自动对消息编号。

    @startuml
    autonumber
    Bob -> Alice : Authentication Request
    Bob <- Alice : Authentication Response
    @enduml
    
    number.png

    页面标题, 页眉, 页脚

    使用 title 关键词增加标题
    使用 header 关键词增加页眉
    使用 footer 关键词增加页脚

    @startuml
    header Page Header
    footer Page %page% of %lastpage%
    title Example Title
    Alice -> Bob : message 1
    Alice -> Bob : message 2
    @enduml
    
    Example Title.png

    组合消息

    我们可以通过以下关键词来组合消息:
    • alt/else
    • opt
    • loop
    • par
    • break
    • critical
    • group, 后面紧跟着消息内容

    @startuml
    Alice -> Bob: 认证请求
    
    alt 成功情况
    
        Alice <- Bob: 认证接受
    
    else 某种失败情况
    
        Alice <- Bob: 认证失败
        group 我自己的标签
        Alice -> Log : 开始记录攻击日志
            loop 1000次
                Alice -> Bob: DNS 攻击
            end
        Alice -> Log : 结束记录攻击日志
        end
    
    else 另一种失败
    
       Alice <- Bob: 请重复
    
    end
    @enduml
    
    group.png

    给消息添加注释

    我们可以通过在消息后面添加 note left 或者 note right 关键词来给消息添加注释。
    你也可以通过使用 end note 来添加多行注释。

    @startuml
    Alice -> Bob : hello
    note left: this is a first note
    
    Alice <- Bob : 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
    
    note.png

    分隔符

    你可以通过使用 == 关键词来将你的图表分割成多个逻辑步骤。

    @startuml
    
    == 初始化 ==
    
    Alice -> Bob: 认证请求
    Alice <-- Bob: 认证响应
    
    == 重复 ==
    
    Alice -> Bob: 认证请求
    Alice <-- Bob: 认证响应
    
    @enduml
    
    separator.png

    延迟

    你可以使用... 来表示延迟,并且还可以给延迟添加注释。

    @startuml
    
    Alice -> Bob: 认证请求
    ...
    Alice <-- Bob: 认证响应
    ...5分钟后...
    Alice <-- Bob: 再见!
    
    @enduml
    
    delay.png

    空间

    你可以使用 ||| 来增加空间。
    还可以使用数字指定增加的像素的数量。

    @startuml
    
    Alice -> Bob: message 1
    Alice <-- Bob: ok
    |||
    Alice -> Bob: message 2
    Alice <-- Bob: ok
    ||45||
    Alice -> Bob: message 3
    Alice <-- Bob: ok
    
    @enduml
    
    space.png

    生命线的激活与撤销

    关键字 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
    
    active.png

    返回

    新命令 return 可以用于生成一个带有可选文本标签的返回信息。返回的点是导致最近一次激活生命线
    的点。语法是简单的返回标签,其中标签(如果提供)可以是传统信息中可以接受的任何字符串。

    @startuml
    Bob -> Alice : hello
    activate Alice
    Alice -> Alice : some action
    return bye
    @enduml
    
    return.png

    激活、撤销和创建的快捷语法。

    在指定目标参与者后,可以立即使用以下语法:
    • ++ 激活目标(可选择在后面加上 #color)
    • -- 撤销激活源
    • ** 创建目标实例
    • !! 摧毁目标实例

    @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
    
    quick.png

    包裹参与者

    可以使用 box 和 end box 画一个盒子将参与者包裹起来。
    还可以在 box 关键字之后添加标题或者背景颜色。

    @startuml
    
    box "Internal Service" #LightBlue
    participant Bob
    participant Alice
    end box
    participant Other
    
    Bob -> Alice : hello
    Alice -> Other : hello
    
    @enduml
    
    box.png

    相关文章

      网友评论

          本文标题:PlantUML-时序图-2021-06-18-周五

          本文链接:https://www.haomeiwen.com/subject/esllyltx.html