Read this post in: de_DEen_USes_ESfr_FRhi_INid_IDjapl_PLpt_PTru_RUvizh_TW

VPASCode PlantUML 指南参考手册

来自 VPASCode PlantUML 指南的精选文章列表,包含 UML 和非 UML 图形代码工作流的语法指南。


PlantUML 核心与语法基础

  1. PlantUML 语法基础: 掌握 PlantUML 的基础语法,包括使用 @startuml/@enduml,实体定义、关系运算符、样式指令和常用关键字。学习如何构建清晰、易读的 PlantUML 脚本,自动渲染出专业的图表。[[34]]

  2. PlantUML 用例图语法指南: 学习使用 PlantUML 用例图来建模功能需求和参与者交互。涵盖参与者、用例、系统边界、包含/扩展关系以及泛化模式,用于需求文档编写和用户故事映射。

  3. PlantUML 类图语法指南: 使用 PlantUML 类图设计静态系统结构。掌握类/属性/方法声明、可见性修饰符、继承(<|--),组合(*--),聚合(o--),以及用于面向对象架构文档的关联关系。[[49]]

  4. PlantUML 时序图语法指南: 建模系统组件之间的消息流和时间交互。学习参与者声明、同步/异步消息(->-->),激活条、循环、alt/else 块,以及用于 API 设计和微服务通信图的创建/停用语法。[[51]]

  5. PlantUML 活动图语法指南: 使用 PlantUML 的活动图语法可视化业务流程和算法工作流。涵盖开始/结束节点、动作、条件分支(if/then/else),循环(repeat/while),并行分支,以及用于过程逻辑文档的分区泳道。[[46]]

  6. PlantUML 状态图语法指南:建模有限状态机和对象生命周期转换。学习状态声明、转换箭头(-->),入口/出口动作、复合状态和并发区域,用于事件驱动系统设计和行为规范。[[36]]

  7. PlantUML 对象图语法指南:展示特定时刻的具体对象实例及其运行时关系。掌握对象命名、属性值赋值、链接语法和实例级关联,用于调试和测试场景可视化。[[15]]

  8. PlantUML 组件图语法指南:使用组件、接口和依赖关系映射模块化软件架构。学习组件声明、提供/需要的接口(<>),依赖箭头,以及用于微服务和基于插件的系统文档的包分组。[[35]]


高级 PlantUML 图形类型

  1. 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]]

  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]]

  1. PlantUML ERD语法指南:为数据库模式文档设计实体关系图。掌握实体声明、属性类型、主键/外键表示法以及基数关系(1|o--o{)用于数据建模和SQL迁移规划。

  2. PlantUML ArchiMate图语法指南:使用ArchiMate规范建模企业架构层次。学习业务/应用/技术层元素、动机概念和关系类型,用于战略IT规划和治理文档编制。

  3. PlantUML C4模型语法指南:在四个抽象层次(上下文、容器、组件和代码)上实现C4模型,用于软件架构可视化。掌握人员系统容器,以及 组件 用于利益相关者对齐的架构沟通的边界容器和关系样式标注。


嵌入式图表说明:VPASCode 文档中的所有 PlantUML 代码示例均在浏览器中直接渲染为可交互、可编辑的图表。上方的 PNG 图像链接显示了示例图表的静态预览;如需完整交互功能,包括实时编辑、语法验证以及导出为 PNG/SVG,请直接访问每个文章的 URL 地址至 vpascode.com/docs. [[54]]

VPasCode 编辑器功能:每篇文章都包含“在 VPasCode 中编辑 PlantUML”的按钮,可将代码示例在 VPasCode 免费的基于浏览器的编辑器中启动——无需登录或安装。更改将通过实时渲染即时预览。[[54]]


参考内容来自 VPASCode 文档。VPasCode 是一个免费的在线基于浏览器的编辑器,用于 PlantUML、Mermaid 和 Graphviz 图表,无需登录或安装。 [[54]]

Leave a Reply