PlantUML 程序画图: 时序图、活动图
PlantUML是一个多功能组件,可以利用编码快速、直接地创建图表,而不必拖拽图来画 各有优劣。
Sequence 序列图
demo案例
代码
' 教程:https://plantuml.com/zh/sequence-diagram
' 在线色表: https://tool.oschina.net/commons?type=3
@startuml
' 样式定义 开始
skinparam backgroundColor #EEEBDC
' 手写的样式 true
skinparam handwritten false
' 生命线展示实线,默认是虚线
skinparam lifelineStrategy solid
' 样式定义 结束
' 定义参与者 和 角色 开始
actor 用户 as User
participant A [
=A title
----
""描述性信息""
]
box "泳道合并组" #FFA54F
participant B [
=B title
----
""描述性信息""
]
participant "C" as C
end box
' database 形状; order 表示显示的顺序;可以带颜色
database 数据库 as D order 2 #CD661D
' queue 队列 形状
queue 消息队列 as MQ order 1
' 定义参与者 和 角色 结束
== 分隔符 1 ==
hnote across: 分割注释: 跨越所有参与者的备注。
' A后边的 ++ 表示激活目标 A; -- 则表示撤销;
' #gold 修改激活的生命线颜色
User -> A ++ #gold : DoWork1
' 修改箭头颜色
A -[#red]> B++: Create Request
B -> C: DoWork
B -> B: 自己的处理逻辑
activate C
C --> B: WorkDone
destroy C
B -[#0000FF]-> A: Request Created
deactivate B
' User后边的 -- 表示撤销激活源 A
A --> User--: Done
== 分隔符 2 组合消息 ==
'if else end
alt#Gold #LightBlue 条件满足 a > 10
B -> A: Authentication Accepted
else #LightGreen a == 10 的情况
A -> B : do something2
else #Pink a < 10
B -> A: Authentication Rejected
end
'分组
group 分组标签 [副本标签2]
User -> A : xx
A -> B : 开始记录攻击日志
loop 1000次
A -> B: DNS攻击
end
A -> B : 结束记录攻击日志
B -> C : yy
B -> A : zz
end
== 分隔符 3 注释 ==
hnote across: 分割注释: 跨越所有参与者的备注。
A -> B : aa
note left of A : A左边的注释
note over A,B #aqua : A和B 生命线上的注释,带有颜色
hnote right of A : A右边的注释\n换行\n六边形 hnote
note over A #white : **加粗展示**\n --删除线--\n __下划线__ \n
B -> A : bb
note left of B
这里的注释
可以换行
利用的 end note
end note
== 分隔符 4 序列号 ==
autonumber
A -> B : aa
autonumber 2.1
B -> A : bb
'延迟表达
...5分钟后...
A -> B : cc
autonumber stop
'增加空间 指定像素量
||60||
autonumber 3
A -> B : zz
@enduml
活动图
活动图
代码
@startuml
start
' if else 流程
if (condition ?) then (Y)
:do XXX;
else (N)
:do YYY;
endif
#pink :继续处理;
' if elseif 流程
group "if elseif else endif"
if (condition A) then (Y)
:Text 1;
note left: stop流程提前结束
stop
(N) elseif (condition B) then (Y)
:Text 2;
(N) elseif (condition C) then (Y)
:Text 3;
else (else)
:Text else;
' 多行注释
note right #orange
利用 end note
可以多行注释
end note
endif
end group
' switch case 流程
group #lightGreen "switch case"
switch (测试?)
case ( 条件 A )
#pink :Text 1;
case ( 条件 B )
:Text 2;
case ( 条件 C )
:Text 3;
case ( 条件 D )
:Text 4;
case ( 条件 E )
:Text 5;
endswitch
end group
floating note : 分组注释信息-switch case
' while 循环流程
group "while break循环"
repeat
:读取数据;
if (发生错误 ?) then (Y)
' 跳出循环
break
endif
:生成图片;
repeat while (更多数据?) is (Y) not (N)
end group
' fork 并行处理 流程
group 并行处理 fork
fork
:行为 1;
fork again
:行为 2;
end merge
end group
floating note: 分组注释信息-fork
stop
@enduml
脑图
脑图
代码
@startmindmap
' *符号数量 分层级
*[#Orange] OS
**[#lightblue]: Ubuntu
: 和 ; 可以多行;
*** Linux Mint
*** Kubuntu
*** Lubuntu
*** KDE Neon
** LMDE
** SolydXK
** SteamOS
** Raspbian with a very long name
*** **OSMC**
*** --Raspyfi--
' 可以换方向
left side
**[#lightgreen] Windows 95
** Windows 98
** Windows NT
*** Windows 8
*** Windows 10
@endmindmap