Get in touch
or send us a question?
CONTACT

Sử dụng PlantUML để thiết kế UML (Phần 2)

Trong bài viết phần 1 mình đã giới thiệu tổng quan về PlantUML, và một số ví dụ của các biểu đồ có thể thiết kế bằng PlantUML.

Ở phần này chúng ta sẽ tìm hiểu cụ thể cách thiết kế biểu đồ tuần tự (Sequence Diagram) bằng PlantUML.

1. Khai báo các thành phần tham gia

participant là keyword được sử dụng để khai báo một thành phần tham gia, việc sử dụng keyword này giúp kiểm soát được từng thành phần tham gia. Thứ tự khai báo sẽ là thứ tự hiển thị trên biểu đồ (mặc định).
Việc sử dụng các từ khóa dưới đây để khai báo sẽ thay đổi hình dạng của đối tượng tham gia khi hiển thị

  • actor
  • boundary
  • control
  • entity
  • database
  • collections
  • queue

Ví dụ:

@startuml
participant Participant as Foo     
actor       Actor       as Foo1   
boundary    Boundary    as Foo2
control     Control     as Foo3
entity      Entity      as Foo4
database    Database    as Foo5
collections Collections as Foo6
queue       Queue       as Foo7
@enduml

※Sử dụng as để rename cho participant

Khi preview sẽ cho ra kết quả như sau:

2. Thông điệp (message)

・Dùng ký hiệu -> để thể hiện thông điệp truyền qua lại giữa các đối tượng tham gia trong biểu đồ.

・Format như sau: participantA -> participantB : {message content}. Có thể dùng để thể hiện cho trường hợp Message to Self: participantA -> participantA : {message content}. Tham khảo ví dụ minh họa dưới đây:

Ví dụ:

@startuml
participant Participant as Foo
actor       Actor       as Foo1
boundary    Boundary    as Foo2
control     Control     as Foo3
entity      Entity      as Foo4
database    Database    as Foo5
collections Collections as Foo6
queue       Queue       as Foo7
Foo -> Foo1 : To actor 
Foo -> Foo2 : To boundary
Foo -> Foo3 : To control
Foo -> Foo4 : To entity
Foo -> Foo5 : To database
Foo6 -> Foo : From collection to participant 
Foo7 -> Foo7: From queue to queue
@enduml

Kết quả sẽ ra như sau:

・Có thể thay đổi style của mũi tên phù hợp với từng case message:

  • Thêm ký tự x cho trường hợp message
  • Sử dụng \ hoặc / thay vì < hoặc > để chỉ có phần dưới cùng hoặc phần trên của mũi tên
  • Lặp lại đầu mũi tên, ví dụ: đầu >> hoặc // để có một bản vẽ mỏng
  • sử dụng – thay vì – để có một mũi tên bằng nét đứt
  • Thêm chữ “o” cuối cùng ở đầu mũi tên
  • Sử dụng mũi tên hai chiều <->

3. Message sequence numbering

・Đánh số tăng dần với keyword autonumber để đánh số tăng dần cho từng message: autonumber

・Có thể chỉ định số bắt đầu tăng dần: autonumber <start> <increment>

Ví dụ:

@startuml
autonumber
Bob -> Alice : Authentication Request
Bob <- Alice : Authentication Response

autonumber 15
Bob -> Alice : Another authentication Request
Bob <- Alice : Another authentication Response

autonumber 40 10
Bob -> Alice : Yet another authentication Request
Bob <- Alice : Yet another authentication Response
@enduml

Kết quả hiển thị như sau:

・Có thể truyền số chỉ định stop và resume để tạm dừng và tiếp tục đánh số tự động:

autonumber stop resume <increment> <format>

Ví dụ:

@startuml
autonumber 10 10 "<b>[000]"
Bob -> Alice : Authentication Request
Bob <- Alice : Authentication Response

autonumber stop
Bob -> Alice : dummy

autonumber resume "<font color=red><b>Message 0  "
Bob -> Alice : Yet another authentication Request
Bob <- Alice : Yet another authentication Response

autonumber stop
Bob -> Alice : dummy

autonumber resume 1 "<font color=blue><b>Message 0  "
Bob -> Alice : Yet another authentication Request
Bob <- Alice : Yet another authentication Response
@enduml

Kết quả hiển thị như sau:

Ngoài những nội dung được mô tả ở trên còn có các options khác hỗ trợ việc vẽ biểu đồ được hay ho hơn ví dụ như: đổi màu background, thêm title/header, hay thậm chí là tách biểu đồ (Splitting diagrams) …v..v…

Các bạn có thể tham khảo chi tiết hơn ở trang: https://plantuml.com/sequence-diagram