CheatSheet: Biểu đồ Tuần tự (Sequence Diagram) với PlantUML
CheatSheet: Biểu đồ Tuần tự (Sequence Diagram) với PlantUML
Biểu đồ tuần tự (Sequence Diagram) trong PlantUML là công cụ mạnh mẽ để mô tả các tương tác giữa các đối tượng hoặc tác nhân (actors) theo thời gian. Tài liệu này cung cấp hướng dẫn chi tiết bằng tiếng Việt, giữ nguyên các từ khóa trong code bằng tiếng Anh, dựa trên tài liệu chính thức từ https://plantuml.com/sequence-diagram.
1. Cú pháp cơ bản
1.1. Khai báo Participants
-
Participants là các đối tượng hoặc thực thể tham gia vào quá trình tương tác, ví dụ: người dùng, hệ thống, cơ sở dữ liệu.
-
Cú pháp:
actor ActorName participant ObjectName
-
Ví dụ:
actor User participant System
-
Các loại participants:
actor
: Người dùng hoặc vai trò bên ngoài.participant
: Đối tượng chung (mặc định).entity
: Thực thể (thường dùng trong hệ thống).boundary
: Giao diện hoặc ranh giới.control
: Logic điều khiển.database
: Cơ sở dữ liệu.collections
: Bộ sưu tập hoặc danh sách.
-
Tùy chỉnh tên hiển thị:
actor "Người Dùng" as User participant "Máy Chủ" as Server
1.2. Tạo Messages
-
Messages là các tin nhắn biểu thị tương tác giữa các participants.
-
Cú pháp:
Participant1 -> Participant2: MessageContent
-
Ví dụ:
User -> System: Login System --> User: Confirmation
-
Các loại messages:
->
: Tin nhắn đồng bộ (synchronous, chờ phản hồi).-->
: Tin nhắn bất đồng bộ (asynchronous, không chờ).->>
: Tin nhắn tự gửi (self-message).<--
: Phản hồi (return).-[hidden]->
: Tin nhắn ẩn (không hiển thị).
1.3. Activation và Deactivation
- Mô tả trạng thái hoạt động của một participant.
- Cú pháp:
activate Participant deactivate Participant
- Ví dụ:
User -> System: Send request activate System System --> User: Response deactivate System
2. Tùy chỉnh giao diện
2.1. Thay đổi màu sắc
- Sử dụng mã màu hex hoặc tên màu để tùy chỉnh.
- Cú pháp:
actor Participant #ColorCode Participant1 -> Participant2 #ColorCode: Message
- Ví dụ:
actor User #FF0000 User -> System #00FF00: Request
2.2. Số thứ tự (Autonumber)
-
Thêm số thứ tự cho các tin nhắn.
-
Cú pháp:
autonumber
-
Ví dụ:
autonumber User -> System: Login System --> User: Success
-
Tùy chỉnh định dạng số:
autonumber "<b>[000]"
2.3. Tiêu đề và chú thích
- Thêm tiêu đề, chân trang, hoặc ghi chú.
- Cú pháp:
title Title footer Footer header Header note left: Note content note right: Note content note over Participant: Note content
- Ví dụ:
title Quy trình Đăng nhập User -> System: Input credentials note right: Validate credentials System --> User: Response footer Hệ thống ABC
3. Cấu trúc điều kiện và vòng lặp
3.1. Điều kiện (Alt/Else)
- Mô tả các kịch bản khác nhau.
- Cú pháp:
alt Condition1 Participant1 -> Participant2: Action else Condition2 Participant1 -> Participant2: Other action end
- Ví dụ:
alt Valid credentials System --> User: Login success else Invalid credentials System --> User: Error end
3.2. Vòng lặp (Loop)
- Mô tả hành động lặp lại.
- Cú pháp:
loop NumberOfTimes or Condition Participant1 -> Participant2: Action end
- Ví dụ:
loop 3 times User -> System: Retry end
3.3. Nhóm (Group)
- Nhóm các tin nhắn liên quan.
- Cú pháp:
group GroupName Participant1 -> Participant2: Action end
- Ví dụ:
group Authentication User -> System: Send OTP System --> User: Input OTP end
4. Phân chia thời gian và vùng
4.1. Phân chia (Divider)
- Chia biểu đồ thành các giai đoạn.
- Cú pháp:
== DividerName ==
- Ví dụ:
User -> System: Request 1 == Phase 2 == User -> System: Request 2
4.2. Độ trễ (Delay)
- Thêm khoảng thời gian hoặc độ trễ.
- Cú pháp:
...DelayDescription...
- Ví dụ:
User -> System: Send request ...5 seconds... System --> User: Response
4.3. Vùng tham chiếu (Reference)
- Liên kết đến biểu đồ khác.
- Cú pháp:
ref over Participant1, Participant2: Description
- Ví dụ:
ref over User, System: Payment process
5. Tính năng nâng cao
5.1. Tùy chỉnh giao diện toàn cục
-
Sử dụng
skinparam
để thay đổi giao diện. -
Cú pháp:
skinparam monochrome true skinparam backgroundColor #EEE
-
Ví dụ:
skinparam monochrome true User -> System: Request
-
Các tham số phổ biến:
monochrome
: Biểu đồ đen trắng.backgroundColor
: Màu nền.arrowColor
: Màu mũi tên.actorBackgroundColor
: Màu nền actor.sequenceBoxBackgroundColor
: Màu nền nhóm.
5.2. Sử dụng biến và macro
- Định nghĩa biến hoặc macro để tái sử dụng.
- Cú pháp:
!define MacroName Content $VariableName = Value
- Ví dụ:
!define AUTH User -> System: Authenticate AUTH
5.3. Xử lý đồng thời (Parallel)
- Mô tả các hành động xảy ra đồng thời.
- Cú pháp:
par Participant1 -> Participant2: Action 1 and Participant3 -> Participant4: Action 2 end
- Ví dụ:
par User -> System: Send request and System -> Database: Query end
6. Ví dụ minh họa
Ví dụ đầy đủ mô tả quy trình đăng nhập:
@startuml
title Quy trình Đăng nhập
autonumber
actor "Người Dùng" as User
participant "Hệ Thống" as System
participant "Cơ Sở Dữ Liệu" as DB
User -> System: Input credentials
activate System
System -> DB: Check credentials
activate DB
DB --> System: Return result
deactivate DB
alt Valid credentials
System --> User: Login success
else Invalid credentials
System --> User: Error
end
deactivate System
@enduml
7. Mẹo và lưu ý
- Kiểm tra cú pháp: Sử dụng trình chỉnh sửa PlantUML trực tuyến (http://www.plantuml.com/plantuml) để kiểm tra lỗi.
- Tối ưu hóa: Sử dụng
skinparam
để làm biểu đồ trực quan hơn. - Tái sử dụng: Dùng macro và biến để tránh lặp lại code.
- Tài liệu hóa: Thêm ghi chú và tiêu đề để làm rõ ý nghĩa biểu đồ.
- Hỗ trợ tiếng Việt: PlantUML hỗ trợ UTF-8, cho phép sử dụng tiếng Việt mà không cần cấu hình thêm.
8. Tài liệu tham khảo
- Trang chính thức: https://plantuml.com/sequence-diagram
- Diễn đàn hỗ trợ: https://forum.plantuml.net/
- Công cụ trực tuyến: http://www.plantuml.com/plantuml
All rights reserved