From 6635d7aca23bf83973ac9aa6d04ed14619aee3c0 Mon Sep 17 00:00:00 2001 From: slhafzjw Date: Fri, 6 Mar 2026 14:15:51 +0800 Subject: [PATCH] refactor(Action): add attribute enabled status into Action, and update related collectToTrigger logic in ActionScheduler --- .../java/work/slhaf/partner/core/action/entity/Action.kt | 4 ++++ .../modules/action/dispatcher/scheduler/ActionScheduler.kt | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/Partner-Core/src/main/java/work/slhaf/partner/core/action/entity/Action.kt b/Partner-Core/src/main/java/work/slhaf/partner/core/action/entity/Action.kt index 79698de2..6d7cb9b1 100644 --- a/Partner-Core/src/main/java/work/slhaf/partner/core/action/entity/Action.kt +++ b/Partner-Core/src/main/java/work/slhaf/partner/core/action/entity/Action.kt @@ -32,6 +32,7 @@ sealed interface Schedulable { val scheduleType: ScheduleType val scheduleContent: String val uuid: String + var enabled: Boolean enum class ScheduleType { CYCLE, @@ -116,6 +117,7 @@ data class SchedulableExecutableAction( override val scheduleContent: String ) : ExecutableAction(), Schedulable { + override var enabled = true val scheduleHistories = ArrayList() fun recordAndReset() { @@ -163,6 +165,8 @@ data class StateAction( override val scheduleType: Schedulable.ScheduleType, override val scheduleContent: String, + override var enabled: Boolean = true, + val trigger: Trigger ) : Action(), Schedulable { diff --git a/Partner-Core/src/main/java/work/slhaf/partner/module/modules/action/dispatcher/scheduler/ActionScheduler.kt b/Partner-Core/src/main/java/work/slhaf/partner/module/modules/action/dispatcher/scheduler/ActionScheduler.kt index 086d120c..dee47ba2 100644 --- a/Partner-Core/src/main/java/work/slhaf/partner/module/modules/action/dispatcher/scheduler/ActionScheduler.kt +++ b/Partner-Core/src/main/java/work/slhaf/partner/module/modules/action/dispatcher/scheduler/ActionScheduler.kt @@ -81,6 +81,9 @@ class ActionScheduler : AbstractAgentModule.Standalone() { fun schedule(input: Set) = schedulerScope.launch { for (schedulableData in input) { + if (!schedulableData.enabled) { + continue + } log.debug("New data to schedule: {}", schedulableData) timeWheel.schedule(schedulableData) if (schedulableData is SchedulableExecutableAction) { @@ -143,7 +146,7 @@ class ActionScheduler : AbstractAgentModule.Standalone() { for (i in previousTick..tick) { val bucket = wheel[i] if (bucket.isNotEmpty()) { - toTrigger.addAll(bucket) + toTrigger.addAll(bucket.filter { it.enabled }) val bucketUuids = bucket.asSequence().map { it.uuid }.toHashSet() schedulableGroupByHour[triggerHour].removeIf { it.uuid in bucketUuids } bucket.clear() // 避免重复触发