|
@@ -1,6 +1,7 @@
|
|
|
package org.jetlinks.community.rule.engine.service;
|
|
|
|
|
|
import lombok.AllArgsConstructor;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
import org.hswebframework.web.crud.events.EntityCreatedEvent;
|
|
|
import org.hswebframework.web.crud.events.EntityDeletedEvent;
|
|
|
import org.hswebframework.web.crud.events.EntityModifyEvent;
|
|
@@ -13,6 +14,7 @@ import org.jetlinks.community.rule.engine.scene.SceneRule;
|
|
|
import org.jetlinks.community.rule.engine.web.request.SceneExecuteRequest;
|
|
|
import org.jetlinks.rule.engine.api.RuleData;
|
|
|
import org.jetlinks.rule.engine.api.RuleEngine;
|
|
|
+import org.springframework.boot.CommandLineRunner;
|
|
|
import org.springframework.context.event.EventListener;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
@@ -27,7 +29,8 @@ import java.util.Map;
|
|
|
|
|
|
@Service
|
|
|
@AllArgsConstructor
|
|
|
-public class SceneService extends GenericReactiveCrudService<SceneEntity, String> {
|
|
|
+@Slf4j
|
|
|
+public class SceneService extends GenericReactiveCrudService<SceneEntity, String> implements CommandLineRunner {
|
|
|
|
|
|
private final RuleEngine ruleEngine;
|
|
|
|
|
@@ -164,4 +167,19 @@ public class SceneService extends GenericReactiveCrudService<SceneEntity, String
|
|
|
);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void run(String... args) {
|
|
|
+ createQuery()
|
|
|
+ .where()
|
|
|
+ .is(SceneEntity::getState, RuleInstanceState.started)
|
|
|
+ .fetch()
|
|
|
+ .flatMap(e -> Mono
|
|
|
+ .defer(() -> ruleEngine.startRule(e.getId(), e.toRule().getModel()).then())
|
|
|
+ .onErrorResume(err -> {
|
|
|
+ log.warn("启动场景[{}]失败", e.getName(), err);
|
|
|
+ return Mono.empty();
|
|
|
+ }))
|
|
|
+ .subscribe();
|
|
|
+ }
|
|
|
+
|
|
|
}
|