# Puml 语法说明

Puml 语法说明

Idea 插件

  • Idea安装 PlantUML diagrammingPlantUml Diagram Generator

Puml 官网地址

友情链接:https://plantuml.com/zh/

类图语法

属性可见性

public 用+表示
private 用-表示
protected 用#表示
package 用~表示

元素声明

abstract        抽象
abstract class  抽象(等同abstract)
annotation      注解
circle          圆
()              圆缩写形式
class           类
diamond         菱形
<>              菱形写形式
entity          实例
enum            枚举
interface       接口

在这里插入图片描述

类之间的关系

类型符号
扩展`<
组成*--
聚合o--
  • 关系代码
@startuml
'https://plantuml.com/class-diagram

left to right direction

'泛化和实现'
abstract class AbstractList extends AbstractCollection implements List{
    + add():boolean
}
abstract class AbstractCollection<E> implements Collection
{
    + add():boolean
}
interface List<E> extends Collection {
    + add():boolean
}
interface Collection{
    + add():boolean
}

'关联'
class LoginForm {
 JButton loginButton;
}
class JButton {
}
LoginForm --> JButton:关联
ClassOne -- ClassTwo:关联

'聚合'
class Car {
	+ Engine engine;
	+ Car(Engine engine):void
    + setEngine(Engine engine):void

}
class Engine {
}
Car o--Engine:聚合

'组合'
class Head {
	- Mouth mouth;
	+ Head();
}
class Mouth {
}
Head *--Mouth:拥有

'依赖'
class Driver {
	+ drive(Car car):void
}
class Car {
	+ move():void
}
Driver ..> Car:依赖

@enduml
  • 效果图

在这里插入图片描述

用例图

  • 代码
@startuml

left to right direction

actor 收银员 as a
actor 供应商 as b
actor 顾客 as c

c --> (买饮料)

b --> (放置饮料)
(放置饮料) ..> (打开机器)
(放置饮料) ..> (关闭机器)

a --> (收钱)
(收钱) ..> (打开机器)
(收钱) ..> (关闭机器)

@enduml
  • 示例图

在这里插入图片描述

对象图

  • 代码
@startuml
'https://plantuml.com/object-diagram

object 客户对象

客户对象 -- 订单对象1
客户对象 -- 订单对象2
客户对象 -- 订单对象3


map 订单对象1{
    Number=12
}

map 订单对象2{
    Number=12
}

map 订单对象3{
    Number=12
}
订单对象1 -- 特殊订单1
订单对象2 -- 特殊订单2
订单对象3 -- 特殊订单3
map 特殊订单1{
    Number=20
}
map 特殊订单2{
    Number=30
}
map 特殊订单3{
    Number=40
}
@enduml
  • 示例图
    在这里插入图片描述

活动图

  • 代码
@startuml

start
:ClickServlet.handleRequest();
:new page;
if (Page.onSecurityCheck) then (true)
  :Page.onInit();
  if (isForward?) then (no)
    :Process controls;
    if (continue processing?) then (no)
      stop
    endif

    if (isPost?) then (yes)
      :Page.onPost();
    else (no)
      :Page.onGet();
    endif
    :Page.onRender();
  endif
else (false)
endif

if (do redirect?) then (yes)
  :redirect process;
else
  if (do forward?) then (yes)
    :Forward request;
  else (no)
    :Render page template;
  endif
endif

stop

@enduml

  • 样式
    在这里插入图片描述

部署图

  • 代码
@startuml

header TA项目物理架构图
footer TA项目物理架构图

left to right direction




actor TaUser as taUser
node TaApp as taApp {
    agent LxSDK as lxsdk
    agent TaClient as taClient
}

folder tiananuser_folder{
cloud tiananuserCluster
node tomcat1_tiananuser
node tomcat2_tiananuser
node tomcat3_tiananuser

tiananuserCluster -down-> tomcat1_tiananuser
tiananuserCluster -down-> tomcat2_tiananuser
tiananuserCluster -down-> tomcat3_tiananuser



}

folder tianansp_folder{
cloud tiananspCluster
node tomcat1_tianansp
node tomcat2_tianansp
node tomcat3_tianansp

tiananspCluster -down-> tomcat1_tianansp
tiananspCluster -down-> tomcat2_tianansp
tiananspCluster -down-> tomcat3_tianansp

}


node Nginx as nginx

nginx --> tiananuserCluster:负载均衡/路由
nginx --> tiananspCluster:负载均衡/路由


taUser -->  taApp : 访问
taApp --> nginx:http/https


database tiananuser_database[
    用户登录数据库

]
database tianansp_database[
    运营活动数据库
]

database redis[
    redis缓存
]


tiananuser_folder -down-> tiananuser_database
tianansp_folder -right-> tianansp_database

tiananuser_folder -down-> redis
tianansp_folder -up-> redis


node zk [
    zookeeper注册中心
    dubbo的消费者跟生产者通信中间件
    定时任务elasticjob的配置中间件
]


tiananuser_folder -down-> zk
tianansp_folder -up-> zk


node apollo [
    apollo配置中心
]

queue kafka[
    kafka集群
]


tiananuser_folder -down-> apollo
tianansp_folder -up-> apollo


tiananuser_folder -down-> kafka
tianansp_folder -up-> kafka


file fileCDN [
    七牛云或者阿里云存储
]


tiananuser_folder -down-> fileCDN
tianansp_folder -up-> fileCDN


cloud ELK {
    node elsticSearch
    node filebeat
    node kibana
}

node kubernetes{
    node healmcharts[
       交付服务
    ]
    node harbor[
        harbor监控管理kubernetes对象
    ]
}


tiananuser_folder -down-> ELK:日志写入
tianansp_folder -up-> ELK:日志写入


tiananuser_folder -down-> kubernetes:发布和管控docker节点
tianansp_folder -up-> kubernetes:发布和管控docker节点

@enduml

  • 样式

在这里插入图片描述

包图

  • 代码
@startuml
'https://plantuml.com/component-diagram


package "Some Group" {
  HTTP - [First Component]
  [Another Component]
}

node "Other Groups" {
  FTP - [Second Component]
  [First Component] --> FTP
}

cloud {
  [Example 1]
}


database "MySql" {
  folder "This is my folder" {
    [Folder 3]
  }
  frame "Foo" {
    [Frame 4]
  }
}


[Another Component] --> [Example 1]
[Example 1] --> [Folder 3]
[Folder 3] --> [Frame 4]

@enduml
  • 样式

在这里插入图片描述

状态图

  • 代码
@startuml
state start1  <<start>>
state choice1 <<choice>>
state fork1   <<fork>>
state join2   <<join>>
state end3    <<end>>

[*]     --> choice1 : from start\nto choice
start1  --> choice1 : from start stereo\nto choice

choice1 --> fork1   : from choice\nto fork
choice1 --> join2   : from choice\nto join
choice1 --> end3    : from choice\nto end stereo

fork1   ---> State1 : from fork\nto state
fork1   --> State2  : from fork\nto state

State2  --> join2   : from state\nto join
State1  --> [*]     : from state\nto end

join2   --> [*]     : from join\nto end
@enduml

  • 样式

在这里插入图片描述

时序图

  • 代码
@startuml
skinparam sequenceArrowThickness 2
skinparam roundcorner 20
skinparam maxmessagesize 60
skinparam sequenceParticipant underline

actor User
participant "First Class" as A
participant "Second Class" as B
participant "Last Class" as C

User -> A: DoWork
activate A

A -> B: Create Request
activate B

B -> C: DoWork
activate C
C --> B: WorkDone
destroy C

B --> A: Request Created
deactivate B

A --> User: Done
deactivate A

@enduml

  • 样式

在这里插入图片描述

思维导图

  • 代码
@startmindmap
'https://plantuml.com/mindmap-diagram

caption figure 1
title My super title

* <&flag>Debian
** <&globe>Ubuntu
*** Linux Mint
*** Kubuntu
*** Lubuntu
*** KDE Neon
** <&graph>LMDE
** <&pulse>SolydXK
** <&people>SteamOS
** <&star>Raspbian with a very long name
*** <s>Raspmbc</s> => OSMC
*** <s>Raspyfi</s> => Volumio

header
My super header
endheader

center footer My super footer

legend right
  Short
  legend
endlegend
@endmindmap
  • 样式

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全栈程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值