• PlantUML使用入门


    使用plantuml是一种比较酷的,画流程图和时序图可以很简单的实现。接下来介绍如何使用plantuml语法绘制顺序图/流程图/时序图等。这里只是简单做个入门说明。

    什么是PlantUML

    PlantUML是一个可以让你快速编写UML图的组件。

    image-20221021094122865

    官网说明如上,它可以实现很多种图的绘制,而且只要学会一些简单的语法,几分钟就能画出一个简单的效果图。

    如何使用

    • 顺序图

    首先需要声明开始结束标记,在前后需要使用如下标签进行标记:

    @startuml
    // TODO
    
    @enduml
    
    • 1
    • 2
    • 3
    • 4

    中间的内容体现为参与主体,流程,描述等几个方面。

    我们模拟一个简单的业务场景,用户访问->A系统->数据库->返回结果,分析这个业务场景中存在三个对象,分别是用户,A系统,数据库,于是我们可以使用关键词participant定义参与者对象(该英文单词即是参与者的意思)

    @startuml
    participant 用户
    participant A系统
    participant 数据库
    
    @enduml
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    得到的效果如下:

    image-20221014110832476

    假如我们想为对象取别名,则用as就可以取一个别名,方便我们后续的时序图制作,不影响图形展示:

    @startuml
    participant 用户 as user
    participant A系统 as ASystem
    participant 数据库 as database
    
    @enduml
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    这个时候我们观察到使用participant渲染出来的图形是四边形,如果我们想要用其他图形来描述该对象,这个时候我们就需要引入其他关键词,例如actor(人形),database(数据库),这样我们的图形渲染效果就变得更加饱满了

    // TODO 定义participant/actor/database完整的说明

    @startuml
    actor 用户 as user
    participant A系统 as ASystem
    database 数据库 as database
    
    @enduml
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    image-20221014111312299

    接下来我们进行绘制具体的请求时序路径,在plantUML里可以用->来描述

    @startuml
    actor 用户 as user
    participant A系统 as ASystem
    database 数据库 as database
    
    user -> ASystem
    ASystem -> database
    database -> ASystem
    ASystem -> user
    
    @enduml
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    image-20221014112050427

    请求链路已经能够体现出来了,但是我们还想加点描述,这个时候我们可以这样来描述:

    @startuml
    actor 用户 as user
    participant A系统 as ASystem
    database 数据库 as database
    
    user -> ASystem : 用户访问A系统
    ASystem -> database : 访问数据库
    database -> ASystem : 数据库返回符合要求的数据
    ASystem -> user : A系统返回数据
    @enduml
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    image-20221014132029494

    进阶:

    1. ->表示实线,–>表示虚线

    2. 若要表示活动区块,可以使用activate(使活动)或者deactivate(使停止工作)关键词来标记

      @startuml
      actor 用户 as user
      participant A系统 as ASystem
      database 数据库 as database
      
      user -> ASystem : 用户访问A系统
      activate ASystem
      
      ASystem -> database : 访问数据库
      activate database
      
      database -> ASystem : 数据库返回符合要求的数据
      deactivate database 
      
      
      ASystem -> user : A系统返回数据
      deactivate ASystem 
      
      @enduml
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19

      image-20221014133743515

    3. 使用title关键词取标题

      @startuml
      title 时序图示例
      // ...
      
      @enduml
      
      • 1
      • 2
      • 3
      • 4
      • 5

      image-20221014135040140

    • 流程图

    同样我们使用@startuml和@enduml进行标记,流程图从上往下的每一个对象都用英文冒号作为开始,并且用分号作为结束,例如:

    @startuml
    :开始;
    :第一步;
    :第二步;
    
    
    @enduml
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    image-20221014140621403

    也可以使用start和stop作为流程图开始和结束的标记,使得更加明显一点:

    @startuml
    start
    :第一步,煮开水;
    :第二步,放面条;
    stop
    
    @enduml
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    image-20221014140853875

    如果我们需要使用条件判断语句,可以用if

    @startuml
    start
    :第一步,煮开水;
    :第二步,放面条;
    if(面条熟了?)  then(yes)
      :出锅;
      end
    else(no)
      :回炉;
      end
    endif
    
    
    @enduml
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    image-20221014171604362

    参考资料:

  • 相关阅读:
    从 QFramework 重新开始
    安装opencv4.5.5
    Redis缓存穿透、缓存雪崩和缓存击穿
    IP-Guard批量部署客户端的方法有哪些?
    【Jlink & C#】通过C#实现Jlink RTT上位机的功能
    MySQL-创建、修改和删除表
    Python 对 split函数的理解
    c#怎么折叠代码快捷
    【Kaggle】如何有效避免OOM(out of memory)和漫长的炼丹过程
    人力资源管理系统如何促进业务增长
  • 原文地址:https://blog.csdn.net/imVainiycos/article/details/127439953