PlantUML绘制时序图

作者: _张鹏鹏_ | 来源:发表于2022-03-03 13:57 被阅读0次

    简介:

    在日常工作中,经常会涉及到和其他模块的交互,以前绘制这些交互时序图,用的都是visio,但是实际用时感觉不是很方便。

    PlantUML是一个可以快速编写的组件。

    也支持以下非UML图。

    此外。

    图形是用一种简单直观的语言定义的。(见PlantUML语言参考指南)。

    新用户可以阅读快速入门页面。也有一个F.A.Q.页面。PlantUML可以在许多其他工具中使用。

    图像可以生成PNG、SVGLaTeX格式。也可以生成ASCII艺术图(只针对序列图)。

    从命令行运行PlantUML:

    使用PlantUML的命令行语法,将其包含在你自己的脚本或文档工具中。
    用PlantUML命令创建一个文本文件,就像这个例子一样,叫做sequenceDiagram.txt 。

    @startuml
    Alice -> Bob: test
    @enduml
    

    运行(或让你的软件调用)PlantUML,使用sequenceDiagram.txt 作为输入。输出是一个图像,它或者出现在其他软件中,或者被写入磁盘上的图像文件。
    例如。

    java -jar plantuml.jar sequenceDiagram.txt
    

    这将你的序列图输出到一个叫做sequenceDiagram.png 的文件中。

    示例:

    这里给出,在实际项目中使用PlantUML绘制时序图的第一个示例:

    @startuml
    
    skinparam titleFontSize 25
    skinparam titleFontColor  #red
    title 监控点位上墙时序图
    
    skinparam backgroundColor #LightBlue
    skinparam handwritten false
    skinparam sequenceParticipant underline
    
    participant client
    participant umtio
    participant 解码微服务
    participant 统一设备
    participant 流媒体
    participant 设备接入
    participant IPC
    ==解码器点位上电获取==
    umtio      ->     统一设备    : 查询解码器接入协议等信息
    umtio      <-     统一设备    : 返回解码器入网信息
    
    ==kafka推送解码器信息变更通知==
    umtio      <-     统一设备    : 解码器信息变更通知
    
    ==解码器解码流程==
    client     ->     umtio       : 解码请求
    umtio      ->     解码微服务  : 发送解码请求/decoder/tasks/ext
    解码微服务 ->     流媒体      : 请求流媒体要ipc码流
    流媒体     ->     设备接入    : Http请求设备接入要ipc码流
    设备接入   ->     统一设备    : 查询ipc的入网信息,包括码流传输方式
    统一设备   ->     设备接入    : 返回给设备接入
    设备接入   ->     IPC         : 国标请求ipc发给流媒体码流
    IPC        ->     流媒体      : Ipc码流发送给流媒体
    流媒体     ->     解码微服务  : 流媒体发送码流供解码器解码
    umtio      <-     解码微服务  : 解码响应
    client     <-     umtio       : 解码响应
    @enduml
    

    实际效果:

    umtio_ipc.png

    第二个示例:

    @startuml
    
    skinparam titleFontSize 25
    skinparam titleFontColor  #red
    title 会议终端上墙时序图
    
    skinparam backgroundColor #LightBlue
    skinparam handwritten false
    skinparam sequenceParticipant underline
    
    participant client
    participant umtio
    participant 解码微服务   as decoder
    participant 媒体调度服务 as mediaschedule
    participant 流媒体       as media
    participant 会议接入1    as conf1
    participant 会议接入2    as conf2
    participant MCU1
    participant MCU2
    
    rnote over mediaschedule
    一个媒体调度服务
    对接多个会议接入服务
    endrnote
    
    rnote over conf2
    一个会议接入服务
    对接一个MCU设备
    endrnote
    
    ==会议终端点状态变化订阅(用于接收会议终端状态变更通知)==
    umtio      ->     mediaschedule: 调度组成员状态订阅
    
    ==会议终端点位获取(上电获取全量数据)==
    umtio      ->     mediaschedule: 查询会议列表
    umtio      <-     mediaschedule: 返回会议列表
    umtio      ->     mediaschedule: 获取终端列表
    umtio      <-     mediaschedule: 返回终端列表
    
    ==会议终端状态变更通知==
    umtio      <-     mediaschedule: 调度组成员状态变化通知
    
    ==会议终端C节点获取流程==
    client     ->     umtio        : UMTMSG_GET_DISPGROUPID_BY_GBNO\n通过与会终端ID查询监看资源ID
    
        rnote over mediaschedule
            UMTMSG_GET_DISPGROUPID_BY_GBNO为复合接口
            在该消息中判断会议终端是否在调度组,是否在会议
        endrnote
    
    alt <font color=red> 会议终端不在调度组也不在会议中
        rnote over mediaschedule
            会议终端不在调度组也不在会议中,需要创建调度组
        endrnote
        umtio  ->  mediaschedule:创建调度组
        umtio  <-  mediaschedule:创建调度组响应
        
        rnote over umtio
            收到会议终端状态变更通知后发出
        endrnote
        
        client <-  umtio         : UMTMSG_DISPGROUP_RESOURCE_NOTIFY\n终端拉流,资源id生成通知
        umtio  ->  mediaschedule:开始监看设备
        umtio  <-  mediaschedule:开始监看设备响应\n携带C节点
    else <font color=red> 会议终端在调度组或者在会议中
        umtio  ->  mediaschedule:开始监看设备
        umtio  <-  mediaschedule:开始监看设备响应\n携带C节点
        client <-  umtio        : UMTMSG_GET_DISPGROUPID_BY_GBNO_ACK
    end
    
    
    ==解码器下任务流程==
    client     ->     umtio        : 发送解码请求
    umtio      ->     decoder      : 发送解码请求/decoder/tasks/ext\n(DeviceID填写C节点编号)
    media      <->    decoder      : 码流协商
    umtio      <-     decoder      : 解码器解码响应
    client     <-     umtio        : 解码器解码响应
    @enduml
    

    实际效果:


    umtio_mt.png

    遇到的问题:

    Can't connect to X11 window server using '0.0' as the value of the DISPLAY variable.
    终端执行unset DISPLAY即可。

    参考文献:

    1. https://www.jianshu.com/p/959ced28ee94

    相关文章

      网友评论

        本文标题:PlantUML绘制时序图

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