跳转到主要内容

PlantUML 速成:用代码画图,让架构与流程可版本化

本站已开启 PlantUML 本地渲染。这篇示例博文用银行转账、DDD 聚合、贷款审批、AI 平台选型四个真实场景,演示时序图、类图、状态图与思维导图四种常用图表,全部由代码生成、随文章本地出图。

本站已开启 PlantUML 本地渲染(Oink v1.4.0 起,无需自建服务端)。只要文章里写 ```plantuml 代码块,页面会在浏览器端直接出图——图随源码进 Git,diff 看得清、久了也不会丢。下面四个例子都来自日常写架构文档的真实需求,复制即用。

一、时序图:银行转账的协作链

画跨系统交互,时序图最直观。这里把「渠道 → 核心记账 → 对账中心」的调用与异步推送画出来:

@startuml
skinparam sequenceArrowThickness 2
actor 客户
participant "渠道系统" as Channel
participant "核心记账" as Core
participant "对账中心" as Recon

客户 -> Channel: 发起转账请求
activate Channel
Channel -> Core: 借记付款户 / 贷记收款户
activate Core
Core --> Channel: 记账成功(流水号)
deactivate Core
Channel -> Recon: 异步推送交易明细
deactivate Channel
Recon --> Recon: 双边对账
@enduml

要点:activate/deactivate 表示对象在一段时间内的活跃期;虚线 --> 是返回消息。跨栏目文章互相引用时,这种图能把「谁在何时调用谁」讲清楚。

二、类图:用 DDD 表达账户聚合

聚合根是 DDD 战术设计的核心。类图能把「Account 聚合包含 Transaction、受 TransactionLimit 约束」这种拥有关系画出来:

@startuml
class Account {
  + String accountNo
  + Money balance
  + open()
  + debit(Money)
  + credit(Money)
}
class Transaction {
  + String txnId
  + Money amount
}
class TransactionLimit {
  + Money dailyLimit
}

Account "1" *-- "0..*" Transaction : 包含
Account "1" *-- "1" TransactionLimit : 受限于
@enduml

组合关系 *-- 表示「整体删除则部分一同删除」,正好对应聚合的不变式边界。

三、状态图:贷款审批的生命周期

状态机是业务规则最容易被遗漏的地方。用状态图把审批流转固化下来,新人一看就懂:

@startuml
[*] --> 申请中
申请中 --> 审批中 : 提交材料
审批中 --> 已拒绝 : 风控不通过
审批中 --> 已放款 : 审批通过
已放款 --> 还款中 : 首次还款
还款中 --> 已结清 : 本息还清
已结清 --> [*]
已拒绝 --> [*]
@enduml

四、思维导图:对客 AI Agent 平台的模块切分

梳理技术选型时,思维导图比大纲更利于快速展开与收拢:

@startmindmap
* 对客 AI Agent 平台
** 编排层
*** 意图识别
*** 工具调用
*** 多轮记忆
** 管控层
*** 审计留痕
*** 权限隔离
*** 限流熔断
** 模型层
*** 统一 LLM 网关
*** 私有化部署
@endmindmap

小结

图表类型适用场景代码块关键字
时序图跨系统/跨服务调用participant + ->
类图领域模型、聚合边界class + *--
状态图业务流程生命周期--> 状态迁移
思维导图技术选型、方案拆解* 根节点 嵌套

把图写成代码,意味着它能进 PR、能被 review、能随文档一起演进——这正是架构文档该有的样子。本站已默认开启,直接在文章里写 ```plantuml 即可。