Sequence với PlantUML (Phần 4)

1. Giới thiệu Ở những phần trước mình đã giới thiệu 1 phần về vẽ sequence với plant uml. Do nội dung dài nên mình chia nhỏ ra để mỗi bài viết không quá dài. Hôm nay mình tiếp tục chia sẻ về nội dung này. 2. Kí hiệu, cách vẽ a. Activation và Destruction

1. Giới thiệu

Ở những phần trước mình đã giới thiệu 1 phần về vẽ sequence với plant uml. Do nội dung dài nên mình chia nhỏ ra để mỗi bài viết không quá dài. Hôm nay mình tiếp tục chia sẻ về nội dung này.

2. Kí hiệu, cách vẽ

a. Activation và Destruction Lifeline

  • Activate và deactivate được sử dụng để biểu thị kích hoạt cho các đối tượng.
  • Khi một đối tượng được kích hoạt, lifeline đối tượng đó sẽ xuất hiện.
  • Kích hoạt và hủy kích hoạt áp dụng cho lệnh trước đó.
  • Sự phá hủy biểu thị sự kết thúc của vòng đời của một đối tượng.

Vd:

@startuml
participant User

User -> A: DoWork
activate A

A -> B: << createRequest >>
activate B

B -> C: DoWork
activate C
C --> B: WorkDone
destroy C

B --> A: RequestCreated
deactivate B

A -> User: Done
deactivate A
@enduml

Kết quả:

  • Có thể sử dụng lifeline lồng nhau và có thể thêm màu trên lifeline.

Vd:

@startuml
participant User

User -> A: DoWork
activate A #FFBBBB

A -> A: Internal call
activate A #DarkSalmon

A -> B: << createRequest >>
activate B

B --> A: RequestCreated
deactivate B
deactivate A
A -> User: Done
deactivate A

@enduml

Kết quả:

  • Có thể tự động kích hoạt và hoạt động với các từ khóa trả về.
    Vd:
@startuml
autoactivate on
alice -> bob : hello
bob -> bob : self call
bill -> bob #005500 : hello from thread 2
bob -> george ** : create
return done in thread 2
return rc
bob -> george !! : delete
return success

@enduml

kết quả:

b. Return

  • Lệnh return tạo ra một thông báo trả về với nhãn văn bản tùy chọn.
  • Điểm trở lại là nguyên nhân gây ra kích hoạt lifeline gần đây nhất.
  • Cú pháp là return label trong đó label nếu được cung cấp là bất kỳ chuỗi nào được chấp nhận cho các thông báo thông thường.

Vd:

@startuml
Bob -> Alice : hello
activate Alice
Alice -> Alice : some action
return bye
@enduml

Kết quả:

c. Creation đối tượng

  • Bạn có thể sử dụng từ khóa create ngay trước message đầu tiên để nhấn mạnh thực tế là thư này đang thực sự tạo ra đối tượng mới này.
    Vd:
@startuml
Bob -> Alice : hello

create Other
Alice -> Other : new

create control String
Alice -> String
note right : You can also put notes!

Alice --> Bob : ok

@enduml

Kết quả:

d. Cú pháp tắt để: activation, deactivation, creation

  • Ngay sau khi chỉ định đối tượng mục tiêu, có thể sử dụng cú pháp sau:
    ++ Kích hoạt mục tiêu (tùy chọn màu có thể theo sau)
    — Hủy kích hoạt nguồn
    ** Tạo một phiên bản của mục tiêu
    !! Hủy một phiên bản của mục tiêu

Vd:

@startuml
alice -> bob ++ : hello
bob -> bob ++ : self call
bob -> bib ++  #005500 : hello
bob -> george ** : create
return done
return rc
bob -> george !! : delete
return success
@enduml

Kết quả:

  • Sau đó, bạn có thể kết hợp kích hoạt và hủy kích hoạt, trên cùng một dòng.
    Vd:
@startuml
alice   ->  bob     ++   : hello1
bob     ->  charlie --++ : hello2
charlie --> alice   --   : ok
@enduml

Kết quả:

Vd:

@startuml
alice -> bob   --++ #gold: hello
bob   -> alice --++ #gold: you too
alice -> bob   --: step1
alice -> bob   : step2
@enduml

Kết quả:

e. Message đến và đi

  • Bạn có thể sử dụng các mũi tên đến hoặc đi nếu bạn muốn tập trung vào một phần của sơ đồ.
  • Sử dụng dấu ngoặc vuông để biểu thị bên trái “[” hoặc bên phải “]” của sơ đồ.

Vd:

@startuml
[-> A: DoWork

activate A

A -> A: Internal call
activate A

A ->] : << createRequest >>

A<--] : RequestCreated
deactivate A
[<- A: Done
deactivate A
@enduml

Kết quả:

  • Bạn cũng có thể có cú pháp sau.

Vd:

@startuml
participant Alice
participant Bob #lightblue
Alice -> Bob
Bob -> Carol
...
[-> Bob
[o-> Bob
[o->o Bob
[x-> Bob
...
[<- Bob
[x<- Bob
...
Bob ->]
Bob ->o]
Bob o->o]
Bob ->x]
...
Bob <-]
Bob x<-]

@enduml

Kết quả:

3. Phần kết

  • Mình chia nhỏ các nội dung theo từng phần để mỗi bài không quá dài. Nếu có ý kiến đóng góp, xin comment ở phía dưới.
  • Mình xin được lắng nghe để những bài viết sau được hiệu quả hơn.

Nguồn: viblo.asia

Bài viết liên quan

WebP là gì? Hướng dẫn cách để chuyển hình ảnh jpg, png qua webp

WebP là gì? WebP là một định dạng ảnh hiện đại, được phát triển bởi Google

Điểm khác biệt giữa IPv4 và IPv6 là gì?

IPv4 và IPv6 là hai phiên bản của hệ thống địa chỉ Giao thức Internet (IP). IP l

Check nameservers của tên miền xem website trỏ đúng chưa

Tìm hiểu cách check nameservers của tên miền để xác định tên miền đó đang dùn

Mình đang dùng Google Domains để check tên miền hàng ngày

Từ khi thông báo dịch vụ Google Domains bỏ mác Beta, mình mới để ý và bắt đầ