0

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


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí