---
# System prepended metadata

title: 啟動/停止按鈕與Server互動流程
tags: [教育訓練]

---

---
tags: 教育訓練
---

# 啟動/停止按鈕與Server互動流程

## 伺服器無主動通知功能版本

```mermaid
sequenceDiagram
    participant human as 人
    participant ui as UI
    participant server as 伺服器
    Note over ui : 載入畫面
    ui->> server:確認目前是否在紀錄中
    alt 伺服器未在記錄
        server ->>ui:回傳未紀錄
        Note over ui : 將按鈕切換為啟動按鈕
    else 伺服器在記錄中
        server ->>ui:回傳紀錄中
        Note over ui : 將按鈕切換為停止按鈕
    end

    human ->> ui : 按下啟動按鈕
    Note over ui : 將按鈕 disable
    ui ->> server:傳送啟動指令
    alt 操作成功
        server ->> ui:回傳操作成功
        Note over ui: 切換按鈕為停止按鈕, 並解開disable
    else 操作失敗
        server ->> ui:回傳操作失敗
        Note over ui: 解開disable
    end

    human ->> ui:按下停止按鈕
    Note over ui : 將按鈕 disable
    ui ->> server:傳送停止指令
    alt 操作成功
        server ->> ui:回傳操作成功
        Note over ui: 切換按鈕為啟動按鈕, 並解開disable
    else 操作失敗
        server ->> ui:回傳操作失敗
        Note over ui: 解開disable
    end
```

## 伺服器有主動通知功能版本
```mermaid
sequenceDiagram
    participant human as 人
    participant ui as UI
    participant server as 伺服器
    Note over ui : 載入畫面
    ui->> server:確認目前是否在紀錄中
    alt 伺服器未在記錄
        server ->>ui:回傳未紀錄
        Note over ui : 將按鈕切換為啟動按鈕
    else 伺服器在記錄中
        server ->>ui:回傳紀錄中
        Note over ui : 將按鈕切換為停止按鈕
    end

    human ->> ui : 按下啟動按鈕
    Note over ui : 將按鈕 disable
    ui ->> server:傳送啟動指令
    alt 操作成功
        server ->> ui:回傳操作成功
        Note over ui: 不做操作
    else 操作失敗
        server ->> ui:回傳操作失敗
        Note over ui: 解開disable
    end

    human ->> ui:按下停止按鈕
    Note over ui : 將按鈕 disable
    ui ->> server:傳送停止指令
    alt 操作成功
        server ->> ui:回傳操作成功
        Note over ui: 不做操作
    else 操作失敗
        server ->> ui:回傳操作失敗
        Note over ui: 解開disable
    end
    
    note over human, server: 伺服器收到UI呼叫啟動或停止記錄
    alt 伺服器切換為停止記錄
        server ->>ui:廣播記錄停止訊號
        Note over ui : 將按鈕切換為啟動按鈕，並解開disable
    else 伺服器切換為啟動記錄
        server ->>ui:廣播記錄開始訊號
        Note over ui : 將按鈕切換為停止按鈕，並解開disable
    end
    
```