Sequence Diagrams

Notations

Actors

  sequenceDiagram
    actor A
    actor B

    A ->> B: Send Message!

Message Arrows

  • 同期(どうき) メッセージ
  • 非同期(ひどうき) メッセージ
  sequenceDiagram
    A -->> B: Async Message
    B -->> A: Reply Message
  • リターンメッセージ
  • パーティシパント - 生成(せいせい) メッセージ
  • パーティシパント - 破棄(はき) メッセージ
  • 再帰(さいき) メッセージ
  • コメント

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