程序员绘图利具-PlantUML
Posted THTG
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了程序员绘图利具-PlantUML相关的知识,希望对你有一定的参考价值。
1、工具简介
PlantUML 是一个开源项目,基于强大的Graphviz图形渲染库,强大的绘图工具,通过简单直观的语言来定义这些示意图,支持快速绘制时序图、用例图、类图、对象图、活动图 、组件图、部署图、状态图、定时图,同时还支持以下非UML图:JSON 数据、YAML 数据、网络图 (nwdiag)、线框图形界面、架构图、规范和描述语言 (SDL)、Ditaa 图、甘特图、思维导图、WBS 工作分解图、以 AsciiMath 或 JLaTeXMath 符号的数学公式、实体关系图;PlantUML 官方网站 (https://plantuml.com/zh);
2、使用安装
-
最快速的方式
浏览器打开,在线画图 (http://www.plantuml.com/plantuml/uml/) -
-
使用IDEA安装
Eclipse安装&使用,参考官方文档(https://plantuml.com/zh/eclipse)IDEA安装&使用,参考文档 (https://www.jianshu.com/p/a6bd7e3048ef)
3、代码示例
1、时序图 - 示例代码:
@startuml
title 时序图-扩展-2
actor 用户
participant 参与者1 #yellow
participant "我的名字有点长\n参与者2" as p2
用户 -> 参与者1: http request
参与者1 -> 用户: http response
用户 -> p2: authentication request
用户 <-- p2: authentication response
用户 -> 用户: send message to myself.
@enduml
2、活动图 - 代码示例:
@startuml
start
if (condition A) then (yes)
:Text 1;
elseif (condition B) then (yes)
:Text 2;
stop
elseif (condition C) then (yes)
:Text 3;
elseif (condition D) then (yes)
:Text 4;
else (nothing)
:Text else;
endif
stop
@enduml
3、状态图 -代码示例 :
@startuml
title 状态图-扩展-2
scale 350 width
--> State1
state State1 {
-> State1.1
--> State2: State 1.1 to 2
State2 --> State1.1: State 2 to 1.1
}
state State2 {
--> State2.1
--> State2.1.1: State 2.1 to 2.1.1
--> State2.1: State 2.1.1 to 2.1
state State2.1.1 {
-> State2.1.1.2
}
--
-> State2.2
--> State2.2.1: State 2.2 to 2.2.1
--> State2.2: State 2.2.1 to 2.2
}
@enduml
4、用例图-代码示例:
@startuml
title 用例图-扩展-3
left to right direction
skinparam packageStyle rectangle
actor User1 <<用户>>
actor User2 <<用户>>
actor :I am administrator: as Admin <<管理员>>
rectangle actions {
User1 -- (Start)
User2 -- (Start)
--> (action): Begin
.> (action1): Use
.> (action): Extends
--> (End): End
-- Admin
}
@enduml
5、类图-代码示例:
@startuml
title 类图-基本-1
Class1 --|> Class2
Class1 -- Class3
Class3 *-- Class4
Class3 -o Class5
Class5 ..|> Class6
Class5 -> Class7
Class7 <.. Class8
Class7 -x Class9
Class9 --+ Class10
Class9 -# Class11
Class11 <--* Class10
@enduml
6、拓扑图-代码示例;
@startuml ArchitectureDiagram
' 图片中文字居中
skinparam defaultTextAlignment center
' 黑白 输出格式,否则需要在后面跟上 #White
' skinparam monochrome true
' 颜色翻转
' skinparam monochrome reverse
' 手写风格
skinparam handwritten true
!define LOCALURL G:\WorkSpaces\MyWorkspaces\plantuml-icon-font-sprites
!include LOCALURL/common.puml
!include LOCALURL/devicons/mysql.puml
!include LOCALURL/devicons/redis.puml
!include LOCALURL/devicons/mongodb.puml
!include LOCALURL/font-awesome-5/server.puml
!include LOCALURL/font-awesome-5/database.puml
!include LOCALURL/font-awesome-5/mobile_alt.puml
!include LOCALURL/font-awesome-5/laptop.puml
!include LOCALURL/font-awesome-5/map_marker_alt.puml
!include LOCALURL/font-awesome-5/door_closed.puml
!include LOCALURL/font-awesome/cloud.puml
!include LOCALURL/font-awesome/fire.puml
' id,name,type cloud,node..
package "Terminal" {
FA5_MOBILE_ALT(mobileVisit,mobile) #White
FA5_LAPTOP(webVisit,web) #White
}
FA_CLOUD(transfer,transfer,cloud) #White
FA_FIRE(firewall,firewall) #White
FA5_MAP_MARKER_ALT(mapserver,Third Map API,cloud) #White
package "Server" {
package "Map Server" as myServer {
FA5_SERVER(myService,Map Service,node) #White
FA5_DOOR_CLOSED(loginService,Login Service,node) #White
}
DEV_MYSQL(mysql,MySQL,node) #White
DEV_MONGODB(mongodb,MongoDB,node) #White
DEV_REDIS(redis,Redis,node) #White
}
Terminal -- transfer
transfer -- mapserver
transfer -- firewall
firewall -- Server
myServer -- mysql
myServer -- mongodb
myServer -- redis
@enduml
7、思维导图
@startmindmap
* Debian
** Ubuntu
*** Linux Mint
*** Kubuntu
*** Lubuntu
*** KDE Neon
** LMDE
** SolydXK
** SteamOS
** Raspbian with a very long name
*** <s>Raspmbc</s> => OSMC
*** <s>Raspyfi</s> => Volumio
@endmindmap
更多示例,可打开官网查看 (https://plantuml.com/zh/)
4、总结
PlantUML的优点
完全文本方式编辑,无需控件拖拽,自动调节图元距离,简单美观
与开发平台完全无关不受平台限制,只要有PlantUML jar包就生成UML图
支持多种文本编辑器、ide的集成,例如idea、eclipse、notepad++等
5、参考资料
-
PlantUML官网
https://plantuml.com/zh/salt -
Graphviz官网
http://graphviz.org/ -
简书 IDEA PlantUML 安装&使用
https://www.jianshu.com/p/a6bd7e3048ef
-----全文完 -----
以上是关于程序员绘图利具-PlantUML的主要内容,如果未能解决你的问题,请参考以下文章