来自 VPASCode PlantUML 指南的精选文章列表,包含 UML 和非 UML 图形代码工作流的语法指南。
PlantUML 核心与语法基础
-
PlantUML 语法基础: 掌握 PlantUML 的基础语法,包括使用
@startuml/@enduml,实体定义、关系运算符、样式指令和常用关键字。学习如何构建清晰、易读的 PlantUML 脚本,自动渲染出专业的图表。[[34]] -
PlantUML 用例图语法指南: 学习使用 PlantUML 用例图来建模功能需求和参与者交互。涵盖参与者、用例、系统边界、包含/扩展关系以及泛化模式,用于需求文档编写和用户故事映射。
-
PlantUML 类图语法指南: 使用 PlantUML 类图设计静态系统结构。掌握类/属性/方法声明、可见性修饰符、继承(
<|--),组合(*--),聚合(o--),以及用于面向对象架构文档的关联关系。[[49]] -
PlantUML 时序图语法指南: 建模系统组件之间的消息流和时间交互。学习参与者声明、同步/异步消息(
->,-->),激活条、循环、alt/else 块,以及用于 API 设计和微服务通信图的创建/停用语法。[[51]] -
PlantUML 活动图语法指南: 使用 PlantUML 的活动图语法可视化业务流程和算法工作流。涵盖开始/结束节点、动作、条件分支(
if/then/else),循环(repeat/while),并行分支,以及用于过程逻辑文档的分区泳道。[[46]] -
PlantUML 状态图语法指南:建模有限状态机和对象生命周期转换。学习状态声明、转换箭头(
-->),入口/出口动作、复合状态和并发区域,用于事件驱动系统设计和行为规范。[[36]] -
PlantUML 对象图语法指南:展示特定时刻的具体对象实例及其运行时关系。掌握对象命名、属性值赋值、链接语法和实例级关联,用于调试和测试场景可视化。[[15]]
-
PlantUML 组件图语法指南:使用组件、接口和依赖关系映射模块化软件架构。学习组件声明、提供/需要的接口(
<>),依赖箭头,以及用于微服务和基于插件的系统文档的包分组。[[35]]
高级 PlantUML 图形类型
-
PlantUML 部署图语法指南:建模物理基础设施和运行时部署拓扑。掌握
节点,云,框架,数据库,以及构件元素、嵌套容器语法和网络协议标注,用于 DevOps 运维手册和云架构图。[[31]]
@startuml
skinparam shadowing false
skinparam defaultFontName "Arial"
' 定义样式
skinparam node {
BackgroundColor #F1F8FF
BorderColor #005CC5
FontColor #032F62
}
skinparam database {
BackgroundColor #FFF5E6
BorderColor #D96F00
FontColor #5C3000
}
skinparam artifact {
BackgroundColor #E6FFF1
BorderColor #008670
FontColor #004D40
}
left to right direction
' 网络区域 / 节点
node "内容分发网络" as cdn <<CDN>> {
artifact "缓存的静态资源" as static
}
node "负载均衡器" as lb <<F5 / HAProxy>>
node "应用服务器" as appServer <<Ubuntu Linux>> {
node "Docker 容器" as docker {
artifact "app.war" as artifactApp
}
}
node "数据库服务器" as dbServer <<集群>> {
database "生产数据库" as db <<PostgreSQL>>
}
' 带协议标签的连接
cdn --> lb : HTTP/HTTPS (端口 443)
lb --> artifactApp : HTTP (端口 8080)
artifactApp --> db : JDBC / SQL (端口 5432)
@enduml

示例:经典三层架构,展示 CDN、负载均衡器、带有嵌套构件的应用服务器,以及带有协议标签连接的数据库层。 [[1]]

@startuml
skinparam shadowing false
skinparam defaultFontName "Arial"
skinparam linetype ortho
' 样式定义
skinparam rectangle {
BackgroundColor #F4F6F9
BorderColor #A0AAB2
FontColor #232F3E
}
skinparam node {
BackgroundColor #E2F3FC
BorderColor #4A90E2
FontColor #111111
}
skinparam database {
BackgroundColor #FFF2E6
BorderColor #FF9900
FontColor #232F3E
}
' 基础设施入口点
node "AWS Route 53" as dns
node "AWS 应用负载均衡器" as alb
dns --> alb : 路由流量
' 全球云边界
rectangle "AWS 云区域" {
' 跨可用区 Kubernetes 集群边界
rectangle "Amazon EKS 集群" as eks {
' 可用区 1
rectangle "可用区 us-east-1a" as az1 #line.dashed {
node "EC2 工作节点 (AZ1)" as node1 {
rectangle "前端 Pod" as podWeb1 <<K8s Pod>> {
artifact "Nginx 容器" as containerWeb1
}
rectangle "后端 API Pod" as podApi1 <<K8s Pod>> {
artifact "Go 应用容器" as containerApi1
}
}
}
' 可用区 2
rectangle "可用区 us-east-1b" as az2 #line.dashed {
node "EC2 工作节点 (AZ2)" as node2 {
rectangle "前端 Pod" as podWeb2 <<K8s Pod>> {
artifact "Nginx 容器" as containerWeb2
}
rectangle "后端 API Pod" as podApi2 <<K8s Pod>> {
artifact "Go 应用容器" as containerApi2
}
}
}
}
' 共享数据库层
rectangle "Amazon Aurora 存储引擎" as storage {
database "Aurora 主节点 (写入者)" as dbMaster
database "Aurora 从节点 (读取者)" as dbReplica
}
}
' 路由与流量矩阵
alb --> podWeb1 : HTTP/S (端口 80/443)
alb --> podWeb2 : HTTP/S (端口 80/443)
podWeb1 --> podApi1 : gRPC (端口 50051)
podWeb2 --> podApi2 : gRPC (端口 50051)
podApi1 --> dbMaster : TCP (端口 5432)
podApi2 --> dbMaster : TCP (端口 5432)
dbMaster .right.> dbReplica : 存储自动复制
@enduml
示例:跨 AWS 可用区的云原生 Kubernetes 部署,包含负载均衡器路由、Pod 嵌套和共享数据库集群。 [[1]]
-
PlantUML 时序图语法指南:可视化线性时间轴上的精确状态持续时间和时间约束。学习
robust/简洁参与者样式,@timepoint状态分配,时钟波形生成,以及<->嵌入式系统和协议规范的时间约束注释。[[30]]

@startuml
skinparam handwritten false
skinparam shadowing false
skinparam defaultFontName "Arial"
' 时序图标题
title 数据总线寄存器同步时间轴
' 定义周期性时钟波形(周期10单位,高电平5单位)
clock "系统时钟" as CLK with period 10 pulse 5
' 定义数据总线的robust参与者
robust "数据总线寄存器" as BUS
' 时间0:寄存器的初始状态
@0
BUS is Empty
' 时间10:数据总线切换到读取状态
@10
BUS is Reading
' 时间20:数据总线切换到写入状态
@20
BUS is Writing
' 时间22:在时间轴上显示自定义文本标签
@22
note top of BUS : T_WRITE
' 时间30:数据总线变为锁定状态
@30
BUS is Locked
' 时间35:在时间轴上显示自定义文本标签
@35
note top of BUS : T_LOCK
' 时间40:数据总线返回空状态
@40
BUS is Empty
' 使用显式数值点添加时间约束注释
@22 <-> @35 : {13 TU 持续时间}
@enduml
示例:简洁的时间轴,展示数据总线寄存器状态(空 → 读取 → 写入 → 锁定)与周期性系统时钟波形的同步。 [[12]]

@startuml
skinparam shadowing false
skinparam defaultFontName "Arial"
' 多线程时序图标题
title Web客户端与认证工作线程同步
' 使用robust参与者样式声明时间轴
robust "Web客户端线程" as CLIENT
robust "认证工作线程" as AUTH
' 时间0ms:初始空闲状态
@0
CLIENT is Idle
AUTH is Idle
' 时间10ms:客户端触发认证请求
@10
CLIENT is "等待认证"
AUTH is "验证凭据"
' 时间25ms:客户端发送附加负载 / 认证开始生成令牌
@25
AUTH is "生成JWT令牌"
' 时间40ms:认证完成令牌生成并响应客户端
@40
AUTH is Idle
CLIENT is "已认证"
' 时间55ms:客户端返回默认状态
@55
CLIENT is Idle
' 30ms 时间约束窗口注释(从@10到@40)
@10 <-> @40 : {30ms 生成窗口}
@enduml
示例:使用30ms生成窗口约束注释,展示Web客户端与认证工作线程状态的稳健多线程时间轴。 [[12]]
-
PlantUML ERD语法指南:为数据库模式文档设计实体关系图。掌握实体声明、属性类型、主键/外键表示法以及基数关系(
1|o--o{)用于数据建模和SQL迁移规划。 -
PlantUML ArchiMate图语法指南:使用ArchiMate规范建模企业架构层次。学习业务/应用/技术层元素、动机概念和关系类型,用于战略IT规划和治理文档编制。
-
PlantUML C4模型语法指南:在四个抽象层次(上下文、容器、组件和代码)上实现C4模型,用于软件架构可视化。掌握
人员,系统,容器,以及组件用于利益相关者对齐的架构沟通的边界容器和关系样式标注。
嵌入式图表说明:VPASCode 文档中的所有 PlantUML 代码示例均在浏览器中直接渲染为可交互、可编辑的图表。上方的 PNG 图像链接显示了示例图表的静态预览;如需完整交互功能,包括实时编辑、语法验证以及导出为 PNG/SVG,请直接访问每个文章的 URL 地址至 vpascode.com/docs. [[54]]
VPasCode 编辑器功能:每篇文章都包含“在 VPasCode 中编辑 PlantUML”的按钮,可将代码示例在 VPasCode 免费的基于浏览器的编辑器中启动——无需登录或安装。更改将通过实时渲染即时预览。[[54]]
参考内容来自 VPASCode 文档。VPasCode 是一个免费的在线基于浏览器的编辑器,用于 PlantUML、Mermaid 和 Graphviz 图表,无需登录或安装。 [[54]]











