---
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
```