启动服务时自动启动场景
This commit is contained in:
parent
4701ac0c29
commit
29bc67e3a4
|
|
@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue