zoukankan      html  css  js  c++  java
  • 开源绘图工具plantUML入门教程(常用于画时序图等)

    1. 背景

    随着工作时间的增长,越发觉得用专业的图形(用例图,时序图,ER图等等)去准确表达想法是很重要的。比如针对某个需求绘制的的用例图,比一段乏味的文字来的更加有意义,也便于别人理解。加之最近在学习源码的时候,发现很多书籍中都会使用类图,时序图等UML语言来描述逻辑关系。于是就在网上找了找绘制UML语言时,业界主流的一些工具都用什么,找了半天,大部分都用了下面的工具VisioStartUMLPlantUML。最终经过比较选择了PlantUML。官网:https://plantuml.com/zh/

    2. 选择PlatnUML原因

    • PlantUML是开源的,有一个相对比较成熟的网站,通过简单的UML语言来实现想要的效果,有点极客范
    • PlantUML有比较详细的各类语言的guide文档
    • PlantUML做了很多的适配,比如常用的编译器eclipseIDEA intelliJ都有对应的插件,同时还和MavenJQuery都做了集成,还提供了war包形式,可以在本地的JavaEE容器(比如Tomcat)中运行起来
    • PlantUML语言简单直接易学,就好像Markdown语法一样,简单高效

    3. PlantUML语言编写环境

    本文简单介绍2种使用方法,其它方法读者可以自行研究

    1.在线通过PlantUML语言绘制对应的UML图,plantUML官网提供了免费的在线编辑服务,通过在左侧输入对应的UML语言来生成对应的UML图

    地址如下:online-site

    2.使用IDEA intelliJ插件绘制

    使用之前请安装PlantUML integration插件,然后就可以愉快的书写UML语言,右侧会生成对应的预览图片,可以复制或保存生成的图片到指定的目录

     

    4. PlantUML常用语法 

    1.基本用法

    用 -> 来绘制参与者之间传递的消息

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

    @startuml
    
    autonumber
    Alice -> Bob: Authentication Request
    Bob --> Alice: Authentication Response
    
    Alice -> Bob: Another authentication Request
    Alice <-- Bob: another authentication Response
    
    @enduml

     2.声明参与者

    • actor(角色)
    • boundary(边界)
    • control(控制)
    • entity(实体)
    • database(数据库)
    • collections(集合)
    • queue(队列)
    @startuml
    
    actor Foo1
    boundary Foo2
    control Foo3
    entity Foo4
    database Foo5
    collections Foo6
    queue Foo7 Foo1
    -> Foo2: To boundary Foo1 -> Foo3: To control Foo1 -> Foo4: To entity Foo1 -> Foo5: To database Foo1 -> Foo6: To collections
    Foo1 -> Foo7: To queue
    @enduml

     3.不同的箭头样式

    @startuml
    
    Bob -> Alice
    Bob --> Alice
    Bob ->> Alice
    Bob ->x Alice
    Bob -\ Alice
    Bob \\- Alice
    Bob \\-- Alice
    
    Bob ->o Alice
    Bob o\\-- Alice
    
    Bob <-> Alice
    Bob <->o Alice
    
    Bob -[#red]> Alice: hello
    Bob <[#0000FF]-- Alice: hello
    
    @enduml

     4.页面标题、分页、页眉、页脚

    title 关键字用于为页面添加标题。

    页面可以使用header 和footer 显示页眉和页脚。

    关键字 newpage 用于把一张图分割成多张。

    在 newpage 之后添加文字,作为新的示意图的标题。

    通过手动在文本中添加\n使长文本换行。

    @startuml

    autonumber
    header Page Header
    footer Page %page% of %lastpage%
    title test first page
    Alice -> Bob: first

    newpage
    Alice -> Bob: second

    newpage A title for test\nlast page
    Alice -> Bob: third

    @enduml

     5.分段

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

    @startuml
    
    == first ==
    Alice -> Bob: Authentication Request
    Bob --> Alice: Authentication Response
    
    == second ==
    Alice -> Bob: Another authentication Request
    Alice <-- Bob: Another authentication Response
    
    == third ==
    Alice -> Bob: Last authentication Request
    Alice <-- Bob: Last authentication Response
    
    @enduml

     6.生命线

    关键字activatedeactivate用来表示参与者的生命活动。

    一旦参与者被激活,它的生命线就会显示出来。

    activatedeactivate适用于以上情形。

    destroy表示一个参与者的生命线的终结。

    @startuml
    
    participant user
    user -> A: DoWork
    activate A
    A -> B: <<create Request>>
    activate B
    B -> C: DoWork
    activate C
    C --> B: WorkDone
    destroy C
    B --> A: RequestCreated
    deactivate B
    A -> user: Done
    deactivate A
    
    @enduml

     还可以使用嵌套的生命线,并且运行给生命线添加颜色。

    @startuml
    
    participant user
    
    user -> A: DoWork
    activate A #FFBBBB
    A -> A: Internal call
    activate A #DarkSalmon
    A -> B: <<craeteRequest>>
    activate B
    B --> A: RequestCreated
    deactivate B
    deactivate A
    A -> user: Done
    deactivate A
    
    @enduml

     7.注释

    可以使用note left 或note right 关键字在信息后面加上注释。

    可以使用end note 关键字有一个多行注释。

    可以使用note left ofnote right ofnote over在节点(participant)的相对位置放置注释。

    还可以通过修改背景色来高亮显示注释。

    @startuml
    
    Alice -> Bob: hello
    note left #aqua: This is a first note.
    Bob -> Alice: hello
    note right #FFAAAA: This is an another note.
    note left of Alice: This is displayed left of Alice.
    note right of Bob: This is displayed right of Bob.
    note over Alice: This is displayed over Alice.
    note over Alice, Bob
    This is
    a long note.
    end note
    
    @enduml

    其他细节请参考中文官网教程:http://plantuml.com/zh/sequence-diagram

  • 相关阅读:
    skywalking物理拓扑图
    检测HTTPS证书到期时间
    docker zipkin 链路监控
    定时任务和任务-示例
    小程序列表循环出来的list是不同接口赋的值
    小程序编辑器报-50003错误肿么办?
    uni-app小程序组建
    2019
    春日
    Mac安装软件提示破损
  • 原文地址:https://www.cnblogs.com/werr370/p/15776497.html
Copyright © 2011-2022 走看看