From 7929a1d9ed25df6231328f702ffd77e0de992cb9 Mon Sep 17 00:00:00 2001 From: zhouhao Date: Fri, 3 Jul 2020 17:34:43 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=AE=9A=E6=97=B6=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rule/engine/executor/TimerTaskExecutorProvider.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/jetlinks-components/rule-engine-component/src/main/java/org/jetlinks/community/rule/engine/executor/TimerTaskExecutorProvider.java b/jetlinks-components/rule-engine-component/src/main/java/org/jetlinks/community/rule/engine/executor/TimerTaskExecutorProvider.java index abfc71c0..5774090a 100644 --- a/jetlinks-components/rule-engine-component/src/main/java/org/jetlinks/community/rule/engine/executor/TimerTaskExecutorProvider.java +++ b/jetlinks-components/rule-engine-component/src/main/java/org/jetlinks/community/rule/engine/executor/TimerTaskExecutorProvider.java @@ -9,6 +9,7 @@ import lombok.AllArgsConstructor; import org.jetlinks.community.ValueObject; import org.jetlinks.rule.engine.api.RuleConstants; import org.jetlinks.rule.engine.api.task.ExecutionContext; +import org.jetlinks.rule.engine.api.task.Task; import org.jetlinks.rule.engine.api.task.TaskExecutor; import org.jetlinks.rule.engine.api.task.TaskExecutorProvider; import org.jetlinks.rule.engine.defaults.AbstractTaskExecutor; @@ -69,7 +70,13 @@ public class TimerTaskExecutorProvider implements TaskExecutorProvider { Mono.delay(nextTime, scheduler) .flatMap(t -> context.getOutput().write(Mono.just(context.newRuleData(t)))) .then(context.fireEvent(RuleConstants.Event.complete, context.newRuleData(System.currentTimeMillis())).thenReturn(1)) - .subscribe(t -> execute()); + .onErrorResume(err -> context.onError(err, null).then(Mono.empty())) + .doFinally(s -> { + if(getState()== Task.State.running){ + execute(); + } + }) + .subscribe(); } @Override