引言
软件架构和业务过程通常比仅通过文字描述或源代码更易于通过视觉方式理解。然而,传统的绘图工具往往使图表难以维护:布局需要手动调整,变更难以审查,协作通常依赖于交换图像文件或专有项目文档。
VPasCode,是“Visual Paradigm 即代码”的缩写,通过基于浏览器的“图表即代码”工作流解决了这些问题。用户无需在画布上手动放置图形,而是使用 PlantUML、Mermaid 和 Graphviz 等基于文本的语言来描述图表。VPasCode 随后将源代码实时渲染为可视化图表。它将代码编辑器、图表渲染器、AI 辅助、共享功能和导出工具整合在一个工作空间中。

其结果是形成了一种更接近软件开发的工作流:图表可以以文本形式编写,通过代码变更进行审查,存储在版本控制系统中,在系统演进时重新生成,并在文档中复用。
什么是“图表即代码”?
“图表即代码”(DaC)是指使用文本语言定义图表,而非手动绘制。
传统工作流可能包括以下步骤:
-
打开绘图应用程序。
-
将图形拖放到画布上。
-
手动连接图形。
-
当结构发生变化时重新定位对象。
-
导出图像以用于文档。
“图表即代码”工作流用源代码替代了上述步骤:

flowchart LR
User --> WebApp
WebApp --> API
API --> Database
渲染器将此定义转换为可视化流程图。如果架构发生变化,作者只需编辑文本,而无需手动重新排列每个对象。
这种方法提供了多项实际优势:
-
版本控制:图表定义可以与应用程序代码和文档一起存储在 Git 中。
-
可读的变更:审查者可以通过常规的差异比较(diff)来检查新增、删除和关系变更。
-
可重复性:同一源代码可以一致地重新生成该图表。
-
自动化:图表可以成为文档或构建流水线的一部分。
-
更快的迭代:结构变更通常只需编辑几行代码,而无需操作大量图形元素。
VPasCode 将这一工作流程封装为统一的基于浏览器的环境,支持实时渲染和多种图表标准。
VPasCode 在 Visual Paradigm 中的角色
Visual Paradigm 为软件建模、企业架构、文档和可视化分析提供了更广泛的生态系统。VPasCode 通过提供轻量级、以文本为优先的入口点来补充这些工具。
当团队希望实现以下目标时,它尤为有用:
-
根据书面描述快速草绘架构。
-
使图表与源代码和技术文档保持紧密关联。
-
在投入资源构建完全定制化的可视化模型之前,先对系统进行原型设计。
-
通过 AI 生成图表,然后手动优化结果。
-
共享实时图表,而无需发送大型项目文件。
-
导出图表以用于报告、演示文稿和维基页面。
-
从基于文本的图表过渡到 Visual Paradigm 更广泛的建模与文档工作流程。
核心理念并非“图表即代码”会取代所有可视化建模任务。相反,它为团队提供了一种快速且易于维护的图表创建方式,而 Visual Paradigm 仍可用于更详细的建模、文档和演示工作。
VPasCode 的主要组件
基于浏览器的代码编辑器
VPasCode 在 Web 浏览器中运行,无需本地安装或复杂配置。其编辑器专为图表源代码设计,具备语法高亮、行号显示、缩进支持和实时状态反馈等功能。
典型工作流程如下:
-
打开 VPasCode 编辑器。
-
选择或自动检测图表语言。
-
输入或粘贴图表代码。
-
查看实时渲染的结果。
-
修正语法或优化结构。
-
共享或导出完成的图表。
实时预览画布
预览面板在编辑源代码时实时显示渲染后的图表。这种并排工作流程减少了在编辑器与独立渲染工具之间切换的需求。
一种实用的创作模式是分两遍进行:
-
结构遍:定义节点、参与者、组件和关系。
-
表现遍:调整方向、标签、分组、主题和视觉样式。
这种分离有助于用户先关注正确性,再关注可读性。
多种图表引擎
VPasCode 将多种文本转图表引擎整合到一个环境中。其主要支持的格式包括 PlantUML、Mermaid 和 Graphviz,更广泛的平台还支持其他格式和功能。
| 引擎 | 最适合用于 | 典型图表 |
|---|---|---|
| PlantUML | 正式的软件与企业建模 | 类图、序列图、组件图、部署图、用例图、C4 图和 ArchiMate 图 |
| Mermaid | 轻量级文档和开发者工作流 | 流程图、序列图、状态图、时间线、ER 图和架构图 |
| Graphviz | 图关系和层次结构 | 依赖图、网络图、组织架构图以及有向或无向图 |
| D2 及其他支持的格式 | 现代基于文本的可视化建模 | 架构、系统关系及在支持情况下的专用可视化 |
最佳引擎的选择取决于受众和图表的目的。当需要正式的 UML 或架构符号时,PlantUML 通常更为合适。Mermaid 便于基于 Markdown 的文档编写。当核心问题是表示关系和图结构时,Graphviz 效果更佳。
核心概念
声明式图表定义
在声明式工作流中,作者描述图表包含的内容及其元素之间的关系。渲染引擎负责确定大部分布局。
例如:

@startuml
actor Customer
participant "Web Application" as Web
participant "Payment Service" as Payment
database Orders
Customer -> Web: Submit order
Web -> Payment: Authorize payment
Payment --> Web: Payment approved
Web -> Orders: Save order
Web --> Customer: Show confirmation
@enduml
该代码能够表达参与者和交互关系,而无需作者手动绘制生命线或箭头。
以源代码作为唯一真实来源
图表源代码应被视为模型的权威表示。导出的 PNG 或 PDF 文件是有益的输出,但不应作为图表的唯一副本。
推荐的项目结构可能如下所示:
architecture/
├── context/
│ └── system-context.puml
├── containers/
│ └── application-containers.mmd
├── deployment/
│ └── production-topology.dot
└── README.md
这使得在系统发生变化时更容易更新图表。
实时渲染
实时渲染意味着当源代码发生变化时,可视化输出会立即更新。这支持快速反馈:缺失的关系、格式错误的语法以及不清晰的布局会在编写过程中立即显现,而不是在导出后才被发现。
引擎选择
不同的语言具有不同的语法、布局算法和所支持的图表类型。尽早选择引擎可避免后期不必要的重写。
例如:
-
在 Markdown 文档中使用 Mermaid 来描述简洁的服务流程。
-
使用 PlantUML 来构建详细的 C4 或 UML 模型。
-
使用 Graphviz 来绘制大型依赖网络。
-
当图表主要是思维导图、数据可视化或其他非 UML 表示时,请使用专门的受支持格式。
AI 辅助创作
VPasCode 包含面向 AI 的功能,可根据自然语言提示生成图表代码、修改现有图表、诊断语法问题以及翻译标签。部分高级 AI 功能可能取决于所使用的 Visual Paradigm 版本或订阅类型。
当提示包含以下信息时,AI 的效果最佳:
-
图表类型。
-
预期的符号体系或引擎。
-
系统组件。
-
组件之间的关系。
-
所需的详细程度。
-
任何受众或格式要求。
例如:
为在线书店创建一个PlantUML C4容器图。包括客户、Web应用程序、目录服务、订单服务、支付提供商和PostgreSQL数据库。展示主要的数据流,并使用清晰的系统边界。
AI生成的代码仍应审查以下内容:
-
关系错误。
-
组件缺失。
-
标签不明确。
-
不支持的语法。
-
提示中未说明的安全或架构假设。
可版本化的可视化文档
基于文本的图表可以像源代码一样进行审查。从以下更改:
到:
清楚地表明引入了缓存层。
这使得图表更适合用于:
-
拉取请求。
-
架构决策记录。
-
发布文档。
-
设计评审。
-
合规证据。
-
入职材料。
Visual Paradigm VPasCode 示例
示例 1:三层 Web 应用程序
Mermaid 是简单架构流程的实用选择:

flowchart TB
User[用户浏览器]
Web[Web 前端]
API[应用 API]
DB[(关系型数据库)]
User --> Web
Web --> API
API --> DB
该图表无需详细的 UML 符号即可传达主要层级。后续可扩展以包含身份验证、缓存、队列或外部服务。
示例 2:微服务请求流程
当时序和交互至关重要时,序列图非常有用:

@startuml
actor User
participant "Web 客户端" as Client
participant "API 网关" as Gateway
participant "订单服务" as Orders
participant "支付服务" as Payments
database "订单数据库" as DB
User -> Client: 下订单
Client -> Gateway: POST /orders
Gateway -> Orders: 创建订单
Orders -> Payments: 授权支付
Payments --> Orders: 已批准
Orders -> DB: 保存订单
Orders --> Gateway: 订单确认
Gateway --> Client: 201 Created
Client --> User: 显示确认
@enduml
此示例可帮助团队讨论 API 边界、同步调用、支付行为和持久化。
示例 3:使用 PlantUML 的系统上下文
PlantUML 非常适合高层架构和 C4 风格图表:

@startuml
!include <C4/C4_Context>
Person(customer, "客户", "下订单并跟踪订单")
System(shop, "在线商店", "提供产品浏览和结账")
System_Ext(payment, "支付提供商", "处理卡支付")
System_Ext(email, "电子邮件服务", "发送订单通知")
Rel(customer, shop, "使用")
Rel(shop, payment, "通过...处理支付")
Rel(shop, email, "通过...发送通知")
@enduml
此图侧重于系统边界和外部关系,而非实现细节。
示例 4:使用 Graphviz 的依赖图
Graphviz 适用于展示依赖关系:

digraph Dependencies {
rankdir=LR;
Frontend -> APIGateway;
APIGateway -> UserService;
APIGateway -> OrderService;
OrderService -> PaymentService;
OrderService -> OrderDatabase;
UserService -> UserDatabase;
}
对于大型软件系统,此类图可以揭示核心服务、依赖链以及潜在的耦合问题。
示例 5:AI 辅助优化
团队可以以自然语言请求开始:
为具有浏览器客户端、API 网关、工单服务、知识库、通知服务和关系型数据库的客户支持平台生成 Mermaid 架构图。

生成后,作者可能会要求 AI 执行以下操作:

-
在工单服务和通知服务之间添加消息队列。


-
将后端服务分组到系统边界内。
-
为非技术受众重命名标签。
-
将图表从 Mermaid 转换为 PlantUML。
-
修复错误由渲染器报告的。
重要原则是将 AI 视为建模的加速器,而非架构审查的替代品。
推荐的 VPasCode 工作流程
1. 定义图表的目的
在编写代码之前,确定图表应回答什么问题。
示例:
-
哪些系统与我们的产品交互?
-
用户请求如何在后端流转?
-
哪些服务依赖于数据库?
-
应用程序是如何部署的?
-
审批订单涉及哪些业务步骤?
具有单一明确目的的图表通常比试图展示整个组织或系统的图表更容易理解。
2. 选择图表引擎
根据图表的目的和受众,选择 PlantUML、Mermaid、Graphviz 或其他支持的格式。
例如:
-
对于嵌入 Markdown 仓库的图表,选择 Mermaid。
-
对于正式的 UML 或 C4 模型,选择 PlantUML。
-
对于依赖分析,选择 Graphviz。
-
当某种专用格式的符号系统更契合主题时,请选择该格式。
3. 构建最小可用版本
从主要参与者、系统和关系开始。避免立即添加所有实现细节。
对于架构图,从以下内容开始:
-
用户。
-
主要应用程序。
-
重要的外部系统。
-
主要数据库。
-
主要通信路径。
然后,仅在有助于回答图表预期问题时再添加细节。
4. 渲染并验证
使用实时预览检查:
-
语法是否有效。
-
图表是否可读。
-
箭头是否指向正确的方向。
-
标签是否易于理解。
-
边界和分组是否准确。
-
布局在正常缩放级别下是否仍可使用。
VPasCode 为支持的流程提供语法反馈和 AI 辅助修正功能。
5. 优化视觉语言
内容正确后,优化呈现方式:
-
使用一致的命名。
-
将相关元素分组。
-
减少交叉线条。
-
使用清晰的关联标签。
-
应用合适的主题或样式。
-
保持细节层级一致。
目标不是添加装饰,而是减少读者的理解成本。
6. 以团队方式审查图表
将图表与开发人员、架构师、分析师或利益相关者共享,并提出有针对性的问题:
-
是否缺少任何主要组件?
-
流程是否反映了实际行为?
-
系统边界是否正确?
-
是否存在误导性关系?
-
新团队成员能否理解该图表?
由于源文件基于文本,所提出的更改可以更系统地进行整合和审查。
7. 导出或连接至文档
当图表准备就绪后,可将其导出用于报告、演示文稿、技术文档或内部维基。VPasCode 在其文档化的工作流中支持图像和矢量格式输出,如 PNG、SVG 和 PDF。它还支持与 Visual Paradigm 文档功能的集成,包括 OpenDocs。
为便于长期维护,请同时保留原始源代码和导出的图像。
协作与文档实践
将图表保存在其所描述的系统附近
将架构图与相关的代码库或文档仓库一起存储。这增加了在实现变更时更新图表的可能性。
使用有意义的文件名
优先使用如下名称:
checkout-sequence.puml
production-deployment.mmd
service-dependencies.dot
避免使用通用名称,例如diagram1或最终版本.
按受众区分视图
单一图表很少能同样好地满足所有人的需求。建议维护多个独立视图:
-
高管上下文视图:主要系统与业务能力。
-
架构视图:服务、数据库及外部依赖。
-
开发者时序视图:运行时交互与 API 调用。
-
运维视图:主机、集群、网络及部署目标。
-
业务流程视图:活动、决策与交接点。
每个视图均可从文本生成,同时服务于不同的沟通目的。
将标签视为文档
图表标签应简洁但富有意义。“服务 A”在技术上可能有效,但“订单服务”能为审查者和利益相关者提供更有用的上下文。
在架构变更时审查图表
在以下情况应更新图表:
-
新增或移除主要服务时。
-
数据库或外部提供商发生变更时。
-
通信方式变为异步时。
-
部署拓扑发生变更时。
-
公共 API 或业务流程发生变更时。
这能防止图表变成过时的插图。
优势与局限
VPasCode对于已使用 Git、Markdown、持续文档或基础设施即代码实践的团队而言,VPasCode 尤其有价值。其以文本为先的工作流使图表更易于复现、审查和更新。
它还将多种图表语法整合到一个基于浏览器的编辑器中,从而减少工具碎片化。结合实时预览、AI 辅助、导出功能以及 Visual Paradigm 文档工作流的能力,使其在软件工程、企业架构和商业分析领域均具有实用价值。
然而,图表即代码并非在所有情况下都是最佳选择。基于文本的格式可能存在学习曲线,某些高度定制的图表可能需要比声明式引擎提供的更多手动视觉控制。如果源代码未组织成清晰、聚焦的视图,大型图表也可能变得难以维护。
一种实用的策略是使用VPasCode 进行快速、可维护且受版本控制的图表创建,然后在需要更深入建模、定制或文档管理时,使用 Visual Paradigm 的其他功能。
结论
VPasCode将软件开发原则引入可视化建模。通过用文本定义图表,团队可以创建架构视图、流程模型、序列图、依赖图和文档可视化内容,这些内容更易于版本控制、审查、重新生成和共享。
它支持 PlantUML、Mermaid、Graphviz 及其他格式,允许用户选择最适合每个问题的表示法。实时渲染缩短了反馈循环,而 AI 功能可加速初始生成、语法修正、修改和翻译。与更广泛的 Visual Paradigm 生态系统的集成,提供了从快速基于文本的草图到更丰富的建模和文档工作流程的路径。
使用 VPasCode 最有效的方法是,将图表视为需要维护的项目资产,而非一次性图像:明确定义目的,选择合适的引擎,将源代码纳入版本控制,与团队共同审查变更,并在系统演进时重新生成导出文件。
在此角色中,VPasCode 不仅仅是一个图表编辑器它是源代码、AI 辅助设计、协作架构评审与专业可视化建模之间的桥梁。













