From a0160c237c99ce4a633492465f9dc4205fcc84a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E5=B0=8F=E4=BA=91?= Date: Mon, 15 Dec 2025 20:09:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=B0=83=E8=AF=95=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=E8=BF=99=E7=A7=8D=E4=B8=AD=E9=97=B4=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../machine/config/AirportMachineConfig.java | 42 ++++++++++++++++--- .../machine/config/CoverMachineConfig.java | 7 +--- .../status/machine/events/AirportEvent.java | 12 ++++++ .../manager/AbstractAirportSystemManager.java | 6 ++- .../status/machine/status/AirportState.java | 10 +++++ 5 files changed, 64 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/tuoheng/status/machine/config/AirportMachineConfig.java b/src/main/java/com/tuoheng/status/machine/config/AirportMachineConfig.java index b381b61..d448048 100644 --- a/src/main/java/com/tuoheng/status/machine/config/AirportMachineConfig.java +++ b/src/main/java/com/tuoheng/status/machine/config/AirportMachineConfig.java @@ -83,7 +83,9 @@ public class AirportMachineConfig { .initial(AirportState.STANDBY) .states(EnumSet.of( AirportState.STANDBY, - AirportState.DEBUG_MODE + AirportState.ENTERING_DEBUG_MODE, + AirportState.DEBUG_MODE, + AirportState.EXITING_DEBUG_MODE )); } @@ -113,11 +115,25 @@ public class AirportMachineConfig { .event(AirportEvent.AIRPORT_ONLINE) .and() + // UNKNOWN -> ENTERING_DEBUG_MODE + .withExternal() + .source(AirportState.UNKNOWN) + .target(AirportState.ENTERING_DEBUG_MODE) + .event(AirportEvent.DEBUG_MODE_OPEN) + .and() + // UNKNOWN -> DEBUG_MODE .withExternal() .source(AirportState.UNKNOWN) .target(AirportState.DEBUG_MODE) - .event(AirportEvent.DEBUG_MODE_OPEN) + .event(AirportEvent.DEBUG_MODE_ENTERED) + .and() + + // UNKNOWN -> EXITING_DEBUG_MODE + .withExternal() + .source(AirportState.UNKNOWN) + .target(AirportState.EXITING_DEBUG_MODE) + .event(AirportEvent.DEBUG_MODE_CLOSE) .and() // UNKNOWN -> REBOOTING @@ -146,24 +162,38 @@ public class AirportMachineConfig { .guard(strategy.getCanOfflineGuard()) .and() - // STANDBY -> DEBUG_MODE + // STANDBY -> ENTERING_DEBUG_MODE .withExternal() .source(AirportState.STANDBY) - .target(AirportState.DEBUG_MODE) + .target(AirportState.ENTERING_DEBUG_MODE) .event(AirportEvent.DEBUG_MODE_OPEN) .action(strategy.getOpenDebugModeAction()) .guard(strategy.getIsNotDebugModeGuard()) .and() - // DEBUG_MODE -> STANDBY + // ENTERING_DEBUG_MODE -> DEBUG_MODE + .withExternal() + .source(AirportState.ENTERING_DEBUG_MODE) + .target(AirportState.DEBUG_MODE) + .event(AirportEvent.DEBUG_MODE_ENTERED) + .and() + + // DEBUG_MODE -> EXITING_DEBUG_MODE .withExternal() .source(AirportState.DEBUG_MODE) - .target(AirportState.STANDBY) + .target(AirportState.EXITING_DEBUG_MODE) .event(AirportEvent.DEBUG_MODE_CLOSE) .action(strategy.getCloseDebugModeAction()) .guard(strategy.getCanCloseDebugModeGuard()) .and() + // EXITING_DEBUG_MODE -> STANDBY + .withExternal() + .source(AirportState.EXITING_DEBUG_MODE) + .target(AirportState.STANDBY) + .event(AirportEvent.DEBUG_MODE_EXITED) + .and() + // DEBUG_MODE -> REBOOTING .withExternal() .source(AirportState.DEBUG_MODE) diff --git a/src/main/java/com/tuoheng/status/machine/config/CoverMachineConfig.java b/src/main/java/com/tuoheng/status/machine/config/CoverMachineConfig.java index d1619f3..9173e46 100644 --- a/src/main/java/com/tuoheng/status/machine/config/CoverMachineConfig.java +++ b/src/main/java/com/tuoheng/status/machine/config/CoverMachineConfig.java @@ -107,12 +107,7 @@ public class CoverMachineConfig { .event(CoverEvent.CLOSE) .and() - // UNKNOWN -> HALF_OPEN - .withExternal() - .source(CoverState.UNKNOWN) - .target(CoverState.HALF_OPEN) - .event(CoverEvent.OPENED) - .and() + // UNKNOWN -> ERROR .withExternal() diff --git a/src/main/java/com/tuoheng/status/machine/events/AirportEvent.java b/src/main/java/com/tuoheng/status/machine/events/AirportEvent.java index 7d31db5..f91f50c 100644 --- a/src/main/java/com/tuoheng/status/machine/events/AirportEvent.java +++ b/src/main/java/com/tuoheng/status/machine/events/AirportEvent.java @@ -26,12 +26,24 @@ public enum AirportEvent { */ DEBUG_MODE_OPEN, + /** + * 进入调试模式完成 + * 触发源: Events事件 + */ + DEBUG_MODE_ENTERED, + /** * 关闭调试模式 * 触发源: 用户指令/自动 */ DEBUG_MODE_CLOSE, + /** + * 退出调试模式完成 + * 触发源: Events事件 + */ + DEBUG_MODE_EXITED, + // ==================== 机巢重启事件 ==================== /** * 机巢重启指令 diff --git a/src/main/java/com/tuoheng/status/machine/manager/AbstractAirportSystemManager.java b/src/main/java/com/tuoheng/status/machine/manager/AbstractAirportSystemManager.java index 050ea1e..7f368fc 100644 --- a/src/main/java/com/tuoheng/status/machine/manager/AbstractAirportSystemManager.java +++ b/src/main/java/com/tuoheng/status/machine/manager/AbstractAirportSystemManager.java @@ -126,8 +126,12 @@ public abstract class AbstractAirportSystemManager implements AirportSystemManag return AirportEvent.AIRPORT_ONLINE; case OFFLINE: return AirportEvent.AIRPORT_OFFLINE; - case DEBUG_MODE: + case ENTERING_DEBUG_MODE: return AirportEvent.DEBUG_MODE_OPEN; + case DEBUG_MODE: + return AirportEvent.DEBUG_MODE_ENTERED; + case EXITING_DEBUG_MODE: + return AirportEvent.DEBUG_MODE_CLOSE; case REBOOTING: return AirportEvent.AIRPORT_REBOOT; default: diff --git a/src/main/java/com/tuoheng/status/machine/status/AirportState.java b/src/main/java/com/tuoheng/status/machine/status/AirportState.java index 1f1316f..3dc7cdf 100644 --- a/src/main/java/com/tuoheng/status/machine/status/AirportState.java +++ b/src/main/java/com/tuoheng/status/machine/status/AirportState.java @@ -24,11 +24,21 @@ public enum AirportState { */ STANDBY, + /** + * 进入调试模式中 + */ + ENTERING_DEBUG_MODE, + /** * 调试模式 */ DEBUG_MODE, + /** + * 退出调试模式中 + */ + EXITING_DEBUG_MODE, + /** * 重启中 */