场景描述
一位新用户(学生或会员)访问在线图书馆门户以创建账户。他们提供个人信息(姓名、电子邮件、密码),系统验证唯一性(例如,电子邮件尚未注册),在数据库中创建账户,并发送欢迎/激活邮件。注册成功后,用户通过书名或作者搜索图书,查看可借情况,如果可借则进行预约(设置保留)。如果图书不可借,系统会提供在图书可借时通知用户的选项。该流程在用户界面显示确认消息后结束。
该流程在大学或公共图书馆系统中很常见,展示了用户入门与核心资源交互的过程。
UML序列图中的关键概念(与此示例相关)
生命线——参与者的生命线,用垂直虚线表示(例如::User,:Browser,:LibraryApp)。
消息——用于调用的消息箭头:同步调用(实线带实心箭头 →),返回(虚线 <–),对象创建(指向新生命线的虚线箭头,标注«create»)。
激活条——显示对象正在处理时的状态(激活/去激活)。
alt片段——条件逻辑(例如,[注册成功] 与 [邮箱已存在])。
opt片段——可选行为(例如,[用户选择立即预约])。
循环——用于迭代操作(例如,若无结果则优化搜索)。
参与者——人类用户(小人图标)。
返回消息——携带结果返回的虚线箭头。
时间流向从上到下.
参与者(生命线):
用户(参与者)
浏览器(前端/用户界面)
图书馆应用(应用/控制层)
用户数据库(账户数据库)
BookCatalog(书籍和预订的数据库/服务)
EmailService(外部通知服务)
此PlantUML脚本完整地展示了案例研究。它包括账户创建、验证、发送邮件、注册后的书籍搜索/预订(使用alt判断可用性),以及可选的通知功能。
@startuml
标题 在线图书馆 – 新用户注册与书籍预订序列图
skinparam monochrome true
skinparam shadowing false
skinparam sequenceMessageAlign center
autonumber “[0]”
actor 读者
participant “浏览器” as UI
participant “图书馆应用” as App
participant “用户数据库” as UserDB
participant “书籍目录” as Catalog
participant “邮件服务” as Email
读者 -> UI:访问注册页面
激活 UI
UI -> App:提交注册(name, email, password)
激活 App
App -> UserDB:检查邮箱是否存在(email)
激活 UserDB
UserDB –> App:exists = false / true
去激活 UserDB
alt 邮箱已存在
App –> UI:返回错误(“邮箱已注册。请登录或使用其他邮箱。”)
UI –> 读者:显示错误信息
‘ 已移除:销毁 App → 不需要 + 在 alt 分支中导致解析问题
否则 注册有效
App -> UserDB: 创建用户账户(name, email, 已哈希密码)
激活 UserDB
UserDB –> App: userId, 账户已创建
去激活 UserDB
App -> Email: 发送欢迎邮件(userId, email, 激活链接)
激活 Email
Email –> App: 邮件已发送
去激活 Email
App -> UI: 返回成功(“账户已创建!请查收邮件以激活。”,userId)
UI –> Patron: 显示成功信息并重定向至登录/仪表板
‘ 注册后:图书预约流程
用户继续预约图书
用户 -> UI: 搜索图书(书名或作者)
UI -> App: 搜索图书(query)
激活 App
App -> Catalog: 查询图书(query)
激活 Catalog
Catalog --> App: 图书列表(含可借状态)
去激活 Catalog
若找到图书
循环:如需可优化搜索
App --> UI: 显示搜索结果(booksList)
UI --> 用户: 显示图书列表
用户 -> UI: 选择图书并请求预约
UI -> App: 预约图书(bookId, userId)
结束
App -> Catalog: 检查图书(bookId)是否可借
Catalog --> App: 可借 = true/false
若可借
App -> Catalog: 预留图书(bookId, userId, 预约日期)
激活 Catalog
Catalog --> App: 预留成功,预约编号
去激活 Catalog
App --> UI: 显示确认信息(“图书已预约!可借时取书。”)
UI --> 用户: 显示成功消息
否则不可借
App --> UI: 提供通知(“图书暂不可借。是否在可借时通知?”)
用户 -> UI: 确认通知
UI -> App: 订阅通知(bookId, userId)
App -> Catalog: 添加至等待名单(bookId, userId)
Catalog --> App: 已加入等待名单
App --> UI: 确认(“已设置通知。”)
结束
否则未找到图书
App --> UI: 显示无结果(“无匹配项。请尝试其他关键词。”)
结束
去激活 App
结束
结束
去激活 UI
@enduml
如何使用此 PlantUML 代码
粘贴至 https://www.plantuml.com/plantuml/uml/ 以即时渲染。
在 Visual Paradigm 桌面版: 新建时序图 → 工具 → 导入 → PlantUML → 粘贴 → 生成并可视化编辑。
自定义:添加颜色(skinparam sequenceArrowThickness 2),参与者构造型(<<database>>),或移除 单色以用于样式化输出。

前往 chat.visual-paradigm.com.
使用详细提示(或粘贴上方的 PlantUML 作为起点):
为在线图书馆生成 UML 顺序图:新用户通过姓名/邮箱/密码注册,系统检查邮箱唯一性,在数据库中创建账户,并发送欢迎邮件。随后用户搜索或预订图书——如果可借则保留,否则提供候补通知。包含重复邮箱的 alt 分支,注册后可选择预订,搜索优化使用循环。
AI 输出可视化图表 + PlantUML 代码。迭代:
“为数据库操作添加激活条和注释。”
“将 BookCatalog 设为带构造型的外部服务。”
导出 PlantUML 以供下一步使用。
启动 Visual Paradigm 桌面版.
创建或导入顺序图(粘贴 PlantUML → 生成)。
工具 > 应用 > 顺序图优化工具.
提示/优化:“将此图书馆注册/预订顺序图优化为分层架构:分离 UI/视图、控制器、服务(例如 UserService、ReservationService)、存储库/数据库层。”
AI 扩展生命线(例如:LibraryApp → RegistrationController → UserService → UserRepository;添加详细调用如 hashPassword()、validateInput())。
编辑:添加注释、构造型(<>、<>),调整片段。
访问 online.visual-paradigm.com → 创建 OpenDocs 页面(“图书馆系统 – 入门与预约流程”)。
插入图表:使用 AI 生成或导入 PlantUML/优化版本。
嵌入:添加文本部分(用例叙述、前提条件如“用户未登录”,后置条件“账户已激活 + 已完成预约”)。
共享:邀请团队成员评论,追踪版本。
在桌面端:优化布局(自动对齐),启用层级编号,添加返回类型(例如::User user)。
链接模型:追踪至用例图(“注册新读者”、“预约图书”)。
导出:用于规范的 PNG/PDF,用于版本控制的 .vpp 项目。
这个新的案例研究提供了一个全新的、以教育为导向的示例,同时展示了 Visual Paradigm AI 工具在快速、准确地进行 UML 建模方面的优势。立即渲染 PlantUML 代码以可视化结果——如果需要其他变体(例如,添加图书管理员审批步骤),只需提出即可!
