PlantUML用例图语法指南

什么是用例图?

一个用例图是一种行为蓝图,用于可视化系统用户(称为参与者)与他们希望完成的特定操作或目标(称为用例)之间的关系。与展示逐步的逻辑循环不同,用例图提供了系统功能范围的高层次概览,使其成为定义项目需求、系统边界和利益相关者工作流程的绝佳工具。

使用VPasCode您可以在无需费力调整视觉画布对齐的情况下,立即创建清晰专业的用例图。本指南跳过了晦涩难懂的旧式符号,专注于您日常软件文档所需的实用语法元素。

核心语法指南:元素与结构

在PlantUML中构建用例图依赖于几个简单的结构元素,这些元素被包裹在标准的@startuml@enduml标签内。

1. 声明参与者

参与者代表与您的应用程序交互的外部实体(例如人类用户、后台服务或外部硬件API)。您可以通过使用actor关键字,后跟一个内部简写ID:

专业提示: 使用as关键字,为复杂的参与者ID分配清晰、易读的显示字符串。

2. 定义用例

用例代表一个功能目标或业务流程。您可以通过两种方式定义用例:将文本用括号包围(您的用例),或者通过显式使用用例复杂格式化的关键字:

(登录到仪表板)
用例 checkout 作为 "处理信用卡支付"

3. 映射基本交互

要将您的参与者与其对应的用例连接起来,请使用基本的有向或无向关系线。您还可以附加文本标签,为交互添加关键上下文:

customer --> (登录到仪表板)
admin --> checkout : "批准退款"

4. 高级关系:包含与扩展

在建模复杂系统行为时,您经常需要使用标准的 UML 构造型来展示不同用例之间的依赖关系:

5. 强制执行系统边界

为了清晰地区分软件应用内部发生的事情与外部发生的事情,请使用 “矩形关键字用于包裹您的内部用例。关键的是,参与者应保留在该容器块之外,以反映其作为外部参与者的身份:

参与者 customer

矩形 "电子商务平台" {
    (浏览目录)
    (添加到购物车)
}

customer --> (浏览目录)
customer --> (添加到购物车)

整洁布局的最佳实践

  • 保持文本简洁:用例应始终以清晰的主动动词开头(例如,“生成报告”, “更新个人资料”)而不是冗长的句子。
  • 利用方向锚点: 如果您的参与者和用例堆叠在一起显得杂乱无章,可以使用空间方向箭头,如-right->-down-> 来轻轻引导布局引擎形成清晰、易读的结构。
  • 隔离系统边界: 在记录与多个第三方微服务交互的应用程序时,始终使用边界矩形。这能立即明确谁负责哪个流程。

现实世界中的 PlantUML 用例图示例

将以下实用蓝图直接复制粘贴到您的 VPasCode 实时编辑器面板中,查看它们如何动态渲染。

示例 1:核心用户认证与账户管理

此蓝图模拟了一个标准的应用生态系统,包含一个主要用户、一个管理员操作员,以及一个包含核心安全机制的边界框。

@startuml
' 设置从左到右的布局方向
从左到右方向

参与者 "最终用户" as user
参与者 "安全管理员" as admin

矩形 "身份提供服务" {
    (登录)
    (重置密码)
    (更新个人资料数据)
    (审查安全日志)
    (停用账户)
}

user --> (登录)
user --> (重置密码)
user --> (更新个人资料数据)

(审查安全日志) <-- admin
(停用账户) <-- admin
@enduml

语法分解: 指令 从左到右的方向 强制布局引擎将参与者定位在外部翼部,并使用例水平扩展而非垂直扩展。请注意,将参与者声明清晰地放置在“”之外,保持了结构的整洁,而将管理员用户的箭头括号方向反转(“”),则将它们整齐地固定在图表矩阵的右侧。矩形 包裹保持了它们的有序性,同时将管理员用户的箭头括号方向反转(<-- 管理员),将其整齐地固定在图表矩阵的右侧。

示例 2:具有外部依赖关系的高级电子商务结账流程

此真实世界系统布局描绘了一个复杂的结账工作流,该流程依赖于外部银行 API、结构包含以及可选的扩展标志。

@startuml
从左到右的方向

参与者 "客户" 作为 customer
参与者 "仓库员工" 作为 staff
参与者 "Stripe 网关" 作为 stripe

矩形 "在线商店履行系统" {
    (下单)
    (应用优惠券)
    (生成发票)
    (拣货打包)
    (更新物流状态)
}

' 系统边界外的外部交互
customer --> (下单)
(下单) --> stripe : "授权资金"

' 包含与扩展结构
(下单) ..> (生成发票) : <<include>>
(应用优惠券) ..> (下单) : <<extend>>

' 履行路径
(拣货打包) <-- staff
(更新物流状态) <-- staff
(生成发票) --> staff : "发送邮件副本"
@enduml

语法解析: 此模板突出了单个用例(下单)强制调用(生成发票),使用<<include>> 标签通过虚线连接。同时,应用优惠券代码被正确地建模为通过<<extend>> 指向基础执行路径的反向分支。所有外部参与者仍清晰地隔离在系统边界之外。

滚动至顶部