[New post] Sử dụng PlantUML để thiết kế UML (Phần 2)
linhntm posted: " 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"
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...
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.