From a1aea81366ceb39ad4b32265d4b099ece0e07e55 Mon Sep 17 00:00:00 2001 From: VoBa Date: Fri, 19 Jul 2019 13:47:02 +0300 Subject: [PATCH] Added usage of msg count in the generator node --- .../thingsboard/rule/engine/debug/TbMsgGeneratorNode.java | 5 ++++- .../rule/engine/debug/TbMsgGeneratorNodeConfiguration.java | 6 +++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/debug/TbMsgGeneratorNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/debug/TbMsgGeneratorNode.java index 0f1dd6d953..238450498d 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/debug/TbMsgGeneratorNode.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/debug/TbMsgGeneratorNode.java @@ -54,6 +54,7 @@ public class TbMsgGeneratorNode implements TbNode { private ScriptEngine jsEngine; private long delay; private long lastScheduledTs; + private int currentMsgCount; private EntityId originatorId; private UUID nextTickId; private TbMsg prevMsg; @@ -63,6 +64,7 @@ public class TbMsgGeneratorNode implements TbNode { public void init(TbContext ctx, TbNodeConfiguration configuration) throws TbNodeException { this.config = TbNodeUtils.convert(configuration, TbMsgGeneratorNodeConfiguration.class); this.delay = TimeUnit.SECONDS.toMillis(config.getPeriodInSeconds()); + this.currentMsgCount = 0; if (!StringUtils.isEmpty(config.getOriginatorId())) { originatorId = EntityIdFactory.getByTypeAndUuid(config.getOriginatorType(), config.getOriginatorId()); } else { @@ -94,9 +96,10 @@ public class TbMsgGeneratorNode implements TbNode { if (initialized && msg.getType().equals(TB_MSG_GENERATOR_NODE_MSG) && msg.getId().equals(nextTickId)) { withCallback(generate(ctx), m -> { - if (initialized) { + if (initialized && (config.getMsgCount() == TbMsgGeneratorNodeConfiguration.UNLIMITED_MSG_COUNT || currentMsgCount < config.getMsgCount())) { ctx.tellNext(m, SUCCESS); scheduleTickMsg(ctx); + currentMsgCount++; } }, t -> { diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/debug/TbMsgGeneratorNodeConfiguration.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/debug/TbMsgGeneratorNodeConfiguration.java index 67c1b7b305..19fa8fc382 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/debug/TbMsgGeneratorNodeConfiguration.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/debug/TbMsgGeneratorNodeConfiguration.java @@ -19,11 +19,11 @@ import lombok.Data; import org.thingsboard.rule.engine.api.NodeConfiguration; import org.thingsboard.server.common.data.EntityType; -import java.util.Map; - @Data public class TbMsgGeneratorNodeConfiguration implements NodeConfiguration { + public static final int UNLIMITED_MSG_COUNT = 0; + private int msgCount; private int periodInSeconds; private String originatorId; @@ -33,7 +33,7 @@ public class TbMsgGeneratorNodeConfiguration implements NodeConfiguration