Sequence Diagrams
Notations
Actors
sequenceDiagram
actor A
actor B
A ->> B: Send Message!
Message Arrows
- Synchronous message
- Asynchronous message
sequenceDiagram
A -->> B: Async Message
B -->> A: Reply Message
- Return message
- Participant - creation message
- Participant - destruction message
- Reflexive message
- Comment
Manage Complex Interactions with Sequence Fragments
- Alternatives
- Options
- Loops
sequenceDiagram
A ->> J: Hello J, how are you?
loop Every minute
J -->> A : Great!
end
- Reference Fragment
- Parallel
Examples
Example 1: HTTP Client
sequenceDiagram
Participant Client as Java Client
Participant HttpClient
Participant Server
Client->>Client: method1()
activate Client
Client->>HttpClient: new HttpClient()
activate HttpClient
HttpClient-->>Client: httpClient
deactivate HttpClient
Client->>HttpClient: executeRequest()
activate HttpClient
HttpClient->>Server: GET /data
activate Server
Server-->>HttpClient: 200 OK + data
deactivate Server
HttpClient-->>Client: response
deactivate HttpClient
Client->>Client: processResponse()
deactivate Client
Example 2: Container Map
sequenceDiagram
Participant Main as Main Class
Participant Map as EventUrlConMap
Participant Container as Container Class
Container-->>Map: EventUrlConMap = new Map()
activate Map
Main->>Main: someMethod(Map map)
activate Main
Main-->>Map: map.put(key,value)
activate Map
deactivate Map
Main-->>Container: return
deactivate Main
Container-->>Map: get map data
activate Map
deactivate Map
Example 3: Database Operations
sequenceDiagram
Participant App as Java App
Participant DB as Database
App ->> App: main(): start app
activate App
App ->> DB: new Database()
activate DB
DB -->> App: database object
deactivate DB
App ->> DB: db.query("SELECT *...")
activate DB
DB -->> App: results
deactivate DB
App ->> DB: db.update("INSERT...")
activate DB
DB -->> App: success
deactivate DB
App ->> App: display results
deactivate App
Example 4: ETL Service
sequenceDiagram
participant ETLService
participant Container
participant OpenApi
activate ETLService
ETLService->>ETLService: fetch_raw_data_open_api()
ETLService->>OpenApi: request data
OpenApi->>ETLService: receive data
activate Container
ETLService->>Container: add(keyvalue)
Container->>ETLService: void
deactivate Container
deactivate ETLService