Mô tả tình huống
Một thành viên mới (sinh viên hoặc thành viên) truy cập cổng thư viện trực tuyến để tạo tài khoản. Họ cung cấp thông tin cá nhân (tên, email, mật khẩu), hệ thống xác thực tính duy nhất (ví dụ: email chưa được đăng ký), tạo tài khoản trong cơ sở dữ liệu và gửi email chào mừng/kích hoạt. Sau khi đăng ký thành công, người dùng tìm kiếm một cuốn sách theo tiêu đề/tác giả, xem tình trạng sẵn có và đặt trước nếu có sẵn (đặt giữ). Nếu sách không có sẵn, hệ thống sẽ đề xuất thông báo khi sách trở nên có sẵn. Quy trình kết thúc bằng thông báo xác nhận trên giao diện người dùng.
Luồng này phổ biến trong các hệ thống thư viện đại học/công cộng và minh họa quá trình giới thiệu người dùng + tương tác với tài nguyên chính.
Các khái niệm chính trong sơ đồ tuần tự UML (Phù hợp với ví dụ này)
Đường sống — Đường nét đứt đứng cho các thành phần tham gia (ví dụ: :Người dùng, :Trình duyệt, :Ứng dụng Thư viện).
Tin nhắn — Các mũi tên cho các lời gọi: đồng bộ (nét liền đầu đầy →), phản hồi (nét đứt <–), tạo đối tượng (mũi tên đứt đến đường sống mới với «tạo»).
Thanh kích hoạt — Hiển thị khi một đối tượng đang xử lý (kích hoạt/tắt kích hoạt).
Mảnh điều kiện — Logic điều kiện (ví dụ: [đăng ký thành công] so với [email đã tồn tại]).
Mảnh tùy chọn — Hành vi tùy chọn (ví dụ: [người dùng chọn đặt trước ngay lập tức]).
Vòng lặp — Dành cho các hành động lặp lại (ví dụ: tinh chỉnh tìm kiếm nếu không có kết quả).
Người hành động — Người dùng thực (hình người dạng que).
Tin nhắn trả về — Các mũi tên đứt mang kết quả trở lại.
Thời gian chảy từ trên xuống dưới.
Các thành phần (đường sống):
Thành viên (Người hành động)
Trình duyệt (Phần giao diện người dùng)
Ứng dụng Thư viện (Lớp ứng dụng/kiểm soát)
Cơ sở dữ liệu Người dùng (Cơ sở dữ liệu tài khoản)
BookCatalog (Cơ sở dữ liệu/dịch vụ cho sách và đặt trước)
EmailService (Dịch vụ thông báo bên ngoài)
Mã PlantUML này mô tả đầy đủ nghiên cứu trường hợp. Nó bao gồm tạo tài khoản, xác thực, gửi email, tìm kiếm/sắp xếp sách sau đăng ký với alt để kiểm tra khả năng có sẵn, và tùy chọn thông báo.
@startuml
tiêu đề Sơ đồ tuần tự Đăng ký người dùng mới và Đặt trước sách – Thư viện Trực tuyến
skinparam monochrome true
skinparam shadowing false
skinparam sequenceMessageAlign center
autonumber “[0]”
actor Người dùng
tham gia “Trình duyệt” như UI
tham gia “LibraryApp” như App
tham gia “UserDB” như UserDB
tham gia “BookCatalog” như Catalog
tham gia “EmailService” như Email
Người dùng -> UI: Truy cập trang đăng ký
Kích hoạt UI
UI -> App: submitRegistration(tên, email, mật khẩu)
Kích hoạt App
App -> UserDB: checkEmailExists(email)
Kích hoạt UserDB
UserDB –> App: exists = false / true
Tắt UserDB
alt Email đã tồn tại
App –> UI: returnError(“Email đã được đăng ký. Vui lòng đăng nhập hoặc dùng email khác.”)
UI –> Người dùng: Hiển thị thông báo lỗi
‘ Đã xóa: destroy App → không cần thiết + gây lỗi phân tích trong nhánh alt
else Đăng ký hợp lệ
App -> UserDB: createUserAccount(tên, email, mật khẩu đã mã hóa)
Kích hoạt UserDB
UserDB –> App: userId, tài khoản đã tạo
Tắt UserDB
App -> Email: sendWelcomeEmail(userId, email, liên kết kích hoạt)
Kích hoạt Email
Email –> App: email đã gửi
Tắt Email
App -> UI: returnSuccess(“Tài khoản đã được tạo! Kiểm tra email để kích hoạt.”, userId)
UI –> Người dùng: Hiển thị thành công & chuyển hướng đến đăng nhập/bảng điều khiển
‘ Sau đăng ký: Luồng đặt sách
Tùy chọn Người dùng tiến hành đặt sách
Người dùng -> UI: Tìm kiếm sách (tên hoặc tác giả)
UI -> App: searchBooks(truy vấn)
Kích hoạt App
App -> Catalog: queryBooks(truy vấn)
kích hoạt Catalog
Catalog --> App: danhSáchSách (với trạng thái sẵn có)
tắt Catalog
nếu Có sách tìm thấy
lặp lại Tinh chỉnh tìm kiếm nếu cần
App --> UI: displayResults(danhSáchSách)
UI --> Người dùng: Hiển thị danh sách sách
Người dùng -> UI: Chọn sách & yêu cầu đặt
UI -> App: reserveBook(idSách, userId)
kết thúc
App -> Catalog: checkAvailability(idSách)
Catalog --> App: có sẵn = đúng/sai
nếu Có sẵn
App -> Catalog: placeHold(idSách, userId, ngàyĐặt)
kích hoạt Catalog
Catalog --> App: holdPlaced, idĐặt
tắt Catalog
App --> UI: displayConfirmation("Sách đã được đặt! Nhận khi có sẵn.")
UI --> Người dùng: Hiển thị thông báo thành công
ngược lại Không sẵn có
App --> UI: offerNotification("Sách không có sẵn. Thông báo khi có?")
Người dùng -> UI: Xác nhận thông báo
UI -> App: subscribeNotification(idSách, userId)
App -> Catalog: addToWaitlist(idSách, userId)
Catalog --> App: waitlistAdded
App --> UI: confirm("Thông báo đã thiết lập.")
kết thúc
ngược lại Không tìm thấy sách nào
App --> UI: displayNoResults("Không có kết quả. Thử từ khóa khác.")
kết thúc
tắt App
kết thúc
kết thúc
tắt UI
@enduml
Làm thế nào để sử dụng mã PlantUML này
Dán vào https://www.plantuml.com/plantuml/uml/ để hiển thị ngay lập tức.
Trong Visual Paradigm Desktop: Bản đồ tuần tự mới → Công cụ → Nhập → PlantUML → dán → tạo và chỉnh sửa trực quan.
Trong VP Online hoặc Trợ lý AI: Sử dụng làm cơ sở trong các lời nhắc hoặc nhập để tinh chỉnh bằng AI.
Tùy chỉnh: Thêm màu sắc (skinparam sequenceArrowThickness 2), các kiểu dáng người tham gia (<<database>>), hoặc xóa đơn sắc để xuất ra kết quả có định dạng.

Truy cập chat.visual-paradigm.com.
Sử dụng lời nhắc chi tiết (hoặc dán mã PlantUML ở trên làm điểm khởi đầu):
Tạo sơ đồ tuần tự UML cho thư viện trực tuyến: người dùng mới đăng ký với tên/email/mật khẩu, hệ thống kiểm tra tính duy nhất của email, tạo tài khoản trong cơ sở dữ liệu, gửi email chào mừng. Sau đó người dùng tìm kiếm/đặt trước sách – nếu có sẵn thì đặt giữ, nếu không thì đề xuất thông báo chờ. Bao gồm alt cho email trùng lặp, tùy chọn đặt trước sau đăng ký, vòng lặp để tinh chỉnh tìm kiếm.
AI xuất ra sơ đồ trực quan + mã PlantUML. Lặp lại:
“Thêm các thanh kích hoạt và ghi chú cho các thao tác cơ sở dữ liệu.”
“Làm cho BookCatalog là dịch vụ bên ngoài với kiểu dáng.”
Xuất mã PlantUML để thực hiện các bước tiếp theo.
Khởi động Visual Paradigm Desktop.
Tạo hoặc nhập sơ đồ tuần tự (dán mã PlantUML → tạo ra).
Công cụ > Ứng dụng > Công cụ tinh chỉnh sơ đồ tuần tự.
Lời nhắc/tinh chỉnh: “Tinh chỉnh sơ đồ đăng ký/đặt trước thư viện này thành kiến trúc theo lớp: tách biệt lớp giao diện/người dùng, điều khiển, dịch vụ (ví dụ: UserService, ReservationService), lớp lưu trữ/CSDL.”
AI mở rộng các dòng thời gian (ví dụ: LibraryApp → RegistrationController → UserService → UserRepository; thêm các lời gọi chi tiết như hashPassword(), validateInput()).
Chỉnh sửa: Thêm ghi chú, kiểu dáng (<>, <>), điều chỉnh các đoạn.
Truy cập online.visual-paradigm.com → Tạo trang OpenDocs (“Hệ thống thư viện – Quy trình đăng ký và đặt chỗ”).
Chèn sơ đồ: Sử dụng tạo bằng AI hoặc nhập sơ đồ PlantUML/bản đã được tinh chỉnh.
Chèn nội dung: Thêm các phần văn bản (kể chuyện trường hợp sử dụng, điều kiện tiên quyết như “người dùng chưa đăng nhập”, điều kiện hậu kỳ “tài khoản đã kích hoạt + đã đặt chỗ”).
Chia sẻ: Mời đội ngũ đưa phản hồi, theo dõi các phiên bản.
Trên máy tính để bàn: Tinh chỉnh bố cục (căn chỉnh tự động), bật đánh số theo cấp bậc, thêm kiểu trả về (ví dụ: :User user).
Liên kết mô hình: Theo dõi đến sơ đồ Trường hợp sử dụng (“Đăng ký thành viên mới”, “Đặt sách”).
Xuất: PNG/PDF cho tài liệu, tệp .vpp cho kiểm soát phiên bản.
Bài nghiên cứu trường hợp mới này cung cấp một ví dụ mới, tập trung vào giáo dục, đồng thời giới thiệu các công cụ AI của Visual Paradigm nhằm mô hình hóa UML nhanh chóng và chính xác. Hãy chuyển đổi mã PlantUML thành hình ảnh để trực quan hóa ngay lập tức — nếu bạn muốn các biến thể (ví dụ: thêm bước phê duyệt của thư viện), chỉ cần yêu cầu!
