plantuml cheatsheet

· Read in about 3 min · (602 Words)

plantuml cheatsheet 中文版

说明

plantuml是一个UML的dsl,使用文本生成UML相关图(序列图,用例图,类图,活动图,组件图,状态图,部署图,对象图), 这份文档plantuml的cheatsheet

图形说明

UML 可分为行为图和结构图.

行为图 行为图用于表示系统的行为

Diagram PlantUML 说明
用例图 Use Case 从用户角度描述系统功能,并指各功能的操作者
活动图 Activity 描述了业务实现用例的工作流程
状态图 State 是描述状态到状态控制流,常用于动态特性建模
顺序图 Sequence 对象之间的动态合作关系,强调对象发送消息的顺序,同时显示对象之间的交互

结构图 结构图用于表示系统内部静态结构和部署相关的物理元件

Diagram PlantUML 说明
类图 Class 描述系统中类的静态结构
对象图 Object 类图的实例
组件图 Component 显示系统组件间的结构关系
包图 Package 是包和类组成的,表示包与包之间的关系,包图描述系统的分层结构
配置图 Deploy 定义系统中软硬件的物理体系结构

UML

Use Case

keyword 使用 图片
() 用例
-> 关联
.> Extend,Include
@startuml

actor Promoter
actor Entrant

Promoter --> (Create Event)
Promoter -> (Attend Event)

Entrant --> (Find Event)
(Attend Event) <- Entrant

(Attend Event) <.. (Create Member)  : <<include>>

@enduml

Activity

描述了业务实现用例的工作流程

keyword 使用 图片
» « 活动
(*) -> 开始状态
->(*) 结束状态
@startuml

(*) --> "Find Event"
"Find Event" -> "Attend Event"

if "Capacity?" then
  ->[ok] "Create Ticket"
else
  -->[full] if "Standby?" then
    ->[ok] "Standby Ticket"
  else
    -->[no] "Cancel Ticket"
    "Cancel Ticket" --> (*)
  endif
endif

"Create Ticket" --> ==show==
"Standby Ticket" --> ==show==
==show== --> "Show Ticket"
"Show Ticket" --> (*)

@enduml

State

状态图,表示对象的状态变化。

keyword 使用 图片
[*] -> 开始状态
(*) -> 结束状态
@startuml

[*] --> active

active -right-> inactive : disable
inactive -left-> active  : enable

inactive --> closed  : close
active --> closed  : close

closed --> [*]

@enduml

Sequence

序列图,表示消息和顺序的对象之间的交互

keyword 使用 图片
-> 同步消息
<– 同步应答
->> 异步消息
<<- 异步应答
@startuml

actor Entrant

Entrant -> Ticket : Attend Event Request

activate Ticket
Ticket -> Member : Create Member Request

activate Member
Member -> Member : Create Member
Ticket <-- Member : Create Member Response
deactivate Member

Ticket -> Ticket : Create Ticket
Entrant <-- Ticket : Attend Event Response
deactivate Ticket

@enduml

Class

类图来表示逻辑视图。

keyword 使用 图片
class class
+ public
- Private
# Protected
~ Package
@startuml

class User {
  username
  password
  +sign_in()
}

class Group {
  name
}

class Member {
  roles
}

User .. Member
Group .. Member

@enduml

Object

对象图,来表示的逻辑视图。

keyword 使用 图片
object 对象
*- 组成
o- 聚合
@startuml

object User
object Group
object Member

object Event
object Ticket

User . Group
User o.. Member
Group o.. Member

Group o. Event
Event o.. Ticket
Member . Ticket

@enduml

Component

组件图,以表示该组件的依赖关系。

keyword 使用 图片
[ ] 部件
@startuml

cloud "Cloud" {
  package "Package" {
    [register]
    frame "frame" {
      [backup]
    }
  }
}

node "Node" {
  database "Database" {
    [store]
  }
  folder "Folder" {
    [File]
  }
}

[register] .. [store] : HTTP
[backup] .. [File] : FTP

@enduml

Common

标题注释评论中常用的关键字

keyword 使用 图片
title 标题
note left : 左标记
note right : 右标记
单行注释
/’ ‘/ 多行注释
@startuml

title Title

( )
note left : Note

[  ]
note right : Note

' single-line comment

/'
  block comment
'/

@enduml

Element

可以使用元素,如演员或实体。

keyword 使用 图片
actor actor
agent agent
usecase usecase
component component
boundary boundary
control control
entity entity
interface interface
@startuml

actor actor
:Actor alias:

agent agent
usecase usecase
component component
boundary boundary
control control
entity entity
interface interface

@enduml

Package

您可以使用该软件包,如作为文件夹或笔记本。

keyword 使用 图片
package package
folder folder
artifact artifact
node node
frame frame
cloud cloud
database database
storage storage
@startuml

package package
folder folder
artifact artifact
node node
frame frame
cloud cloud
database database
storage storage

@enduml

Arrow

可以指定的箭头位置和方向。

keyword 使用 图片
-up->
-down->
-left->
-right->
@startuml

up -up-> right
-right-> down
-down-> left
-left-> up

@enduml

Basic widgets

显示部件,如按钮和输入。

@startuml
salt

{
  Just plain text
  [This is my button]
  ()  Unchecked radio
  (X) Checked radio
  []  Unchecked box
  [X] Checked box
  "Enter text here   "
  ^This is a droplist^
}

@enduml

Tree widget

树结构部件

@startuml
salt

{
  {T
   + World
   ++ America
   +++ Canada
   +++ USA
   ++++ New York
   ++++ Boston
   +++ Mexico
   ++ Europe
   +++ Italy
   +++ Germany
   ++++ Berlin
   ++ Africa
  }
}

@enduml