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

Thay đổi Package Name của Android Studio dể dàng với plugin APR

Nếu bạn đang gặp khó khăn hoặc bế tắc trong việc thay đổi package name trong And

Lỗi không Update Meta_Value Khi thay thế hình ảnh cũ bằng hình ảnh mới trong WordPress

Mã dưới đây hoạt động tốt có 1 lỗi không update được postmeta ” meta_key=

Bài 1 – React Native DevOps các khái niệm và các cài đặt căn bản

Hướng dẫn setup jenkins agent để bắt đầu build mobile bằng jenkins cho devloper an t

Chuyển đổi từ monolith sang microservices qua ví dụ

1. Why microservices? Microservices là kiến trúc hệ thống phần mềm hướng dịch vụ,