From 14f8e58df064615f1d272ed6aa391b4a5752f5c5 Mon Sep 17 00:00:00 2001 From: Andrew Shvayka Date: Fri, 30 Mar 2018 18:13:54 +0300 Subject: [PATCH] Implementation of Generator node and improvements --- .../actors/ruleChain/DefaultTbContext.java | 17 +++- .../actors/ruleChain/RuleNodeActor.java | 13 +++ .../RuleNodeActorMessageProcessor.java | 18 +++- .../actors/ruleChain/RuleNodeToSelfMsg.java | 37 +++++++++ .../server/common/msg/MsgType.java | 5 ++ .../rule/engine/api/NodeConfiguration.java | 4 +- .../rule/engine/api/TbContext.java | 3 + .../thingsboard/rule/engine/api/TbNode.java | 2 +- .../rule/engine/debug/TbMsgGeneratorNode.java | 83 +++++++++++++++++++ .../TbMsgGeneratorNodeConfiguration.java | 40 +++++++++ .../rule/engine/filter/TbJsFilterNode.java | 4 +- .../filter/TbJsFilterNodeConfiguration.java | 2 +- .../rule/engine/filter/TbJsSwitchNode.java | 2 +- .../filter/TbJsSwitchNodeConfiguration.java | 2 +- .../engine/filter/TbMsgTypeFilterNode.java | 3 +- .../TbMsgTypeFilterNodeConfiguration.java | 2 +- .../engine/metadata/TbEntityGetAttrNode.java | 2 +- .../engine/metadata/TbGetAttributesNode.java | 2 +- .../TbGetAttributesNodeConfiguration.java | 2 +- .../TbGetEntityAttrNodeConfiguration.java | 2 +- .../metadata/TbGetRelatedAttributeNode.java | 2 +- .../transform/TbAbstractTransformNode.java | 2 +- .../transform/TbChangeOriginatorNode.java | 2 +- .../engine/transform/TbTransformMsgNode.java | 2 +- .../engine/filter/TbJsFilterNodeTest.java | 2 +- .../engine/filter/TbJsSwitchNodeTest.java | 2 +- .../TbGetCustomerAttributeNodeTest.java | 4 +- .../transform/TbChangeOriginatorNodeTest.java | 2 +- .../transform/TbTransformMsgNodeTest.java | 2 +- 29 files changed, 237 insertions(+), 28 deletions(-) create mode 100644 application/src/main/java/org/thingsboard/server/actors/ruleChain/RuleNodeToSelfMsg.java create mode 100644 rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/debug/TbMsgGeneratorNode.java create mode 100644 rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/debug/TbMsgGeneratorNodeConfiguration.java diff --git a/application/src/main/java/org/thingsboard/server/actors/ruleChain/DefaultTbContext.java b/application/src/main/java/org/thingsboard/server/actors/ruleChain/DefaultTbContext.java index 012a09f84e..1d45b61dc3 100644 --- a/application/src/main/java/org/thingsboard/server/actors/ruleChain/DefaultTbContext.java +++ b/application/src/main/java/org/thingsboard/server/actors/ruleChain/DefaultTbContext.java @@ -15,9 +15,12 @@ */ package org.thingsboard.server.actors.ruleChain; +import akka.actor.ActorContext; +import akka.actor.ActorRef; import org.thingsboard.rule.engine.api.ListeningExecutor; import org.thingsboard.rule.engine.api.TbContext; import org.thingsboard.server.actors.ActorSystemContext; +import org.thingsboard.server.common.data.id.RuleNodeId; import org.thingsboard.server.common.msg.TbMsg; import org.thingsboard.server.common.msg.cluster.ServerAddress; import org.thingsboard.server.dao.alarm.AlarmService; @@ -30,8 +33,10 @@ import org.thingsboard.server.dao.relation.RelationService; import org.thingsboard.server.dao.rule.RuleChainService; import org.thingsboard.server.dao.timeseries.TimeseriesService; import org.thingsboard.server.dao.user.UserService; +import scala.concurrent.duration.Duration; import java.util.Set; +import java.util.concurrent.TimeUnit; /** * Created by ashvayka on 19.03.18. @@ -61,7 +66,12 @@ class DefaultTbContext implements TbContext { @Override public void tellSelf(TbMsg msg, long delayMs) { - throw new RuntimeException("Not Implemented!"); + //TODO: add persistence layer + scheduleMsgWithDelay(new RuleNodeToSelfMsg(msg), delayMs, nodeCtx.getSelfActor()); + } + + private void scheduleMsgWithDelay(Object msg, long delayInMs, ActorRef target) { + mainCtx.getScheduler().scheduleOnce(Duration.create(delayInMs, TimeUnit.MILLISECONDS), target, msg, mainCtx.getActorSystem().dispatcher(), nodeCtx.getSelfActor()); } @Override @@ -92,6 +102,11 @@ class DefaultTbContext implements TbContext { nodeCtx.getSelfActor().tell(new RuleNodeToSelfErrorMsg(msg, th), nodeCtx.getSelfActor()); } + @Override + public RuleNodeId getSelfId() { + return nodeCtx.getSelf().getId(); + } + @Override public void tellNext(TbMsg msg, Set relationTypes) { relationTypes.forEach(type -> tellNext(msg, type)); diff --git a/application/src/main/java/org/thingsboard/server/actors/ruleChain/RuleNodeActor.java b/application/src/main/java/org/thingsboard/server/actors/ruleChain/RuleNodeActor.java index 268c597714..f7ca0d8cc7 100644 --- a/application/src/main/java/org/thingsboard/server/actors/ruleChain/RuleNodeActor.java +++ b/application/src/main/java/org/thingsboard/server/actors/ruleChain/RuleNodeActor.java @@ -47,12 +47,25 @@ public class RuleNodeActor extends ComponentActor componentClazz = Class.forName(ruleNode.getType()); TbNode tbNode = (TbNode) (componentClazz.newInstance()); - tbNode.init(new TbNodeConfiguration(ruleNode.getConfiguration()), new TbNodeState()); + tbNode.init(defaultCtx, new TbNodeConfiguration(ruleNode.getConfiguration())); return tbNode; } - } diff --git a/application/src/main/java/org/thingsboard/server/actors/ruleChain/RuleNodeToSelfMsg.java b/application/src/main/java/org/thingsboard/server/actors/ruleChain/RuleNodeToSelfMsg.java new file mode 100644 index 0000000000..5c5af42207 --- /dev/null +++ b/application/src/main/java/org/thingsboard/server/actors/ruleChain/RuleNodeToSelfMsg.java @@ -0,0 +1,37 @@ +/** + * Copyright © 2016-2018 The Thingsboard Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.thingsboard.server.actors.ruleChain; + +import lombok.Data; +import org.thingsboard.server.common.data.id.RuleNodeId; +import org.thingsboard.server.common.msg.MsgType; +import org.thingsboard.server.common.msg.TbActorMsg; +import org.thingsboard.server.common.msg.TbMsg; + +/** + * Created by ashvayka on 19.03.18. + */ +@Data +final class RuleNodeToSelfMsg implements TbActorMsg { + + private final TbMsg msg; + + @Override + public MsgType getMsgType() { + return MsgType.RULE_TO_SELF_MSG; + } + +} diff --git a/common/message/src/main/java/org/thingsboard/server/common/msg/MsgType.java b/common/message/src/main/java/org/thingsboard/server/common/msg/MsgType.java index 7c00ee64ab..f8f204403a 100644 --- a/common/message/src/main/java/org/thingsboard/server/common/msg/MsgType.java +++ b/common/message/src/main/java/org/thingsboard/server/common/msg/MsgType.java @@ -54,4 +54,9 @@ public enum MsgType { */ RULE_TO_SELF_ERROR_MSG, + /** + * Message that is sent by RuleActor implementation to RuleActor itself to process the message. + */ + RULE_TO_SELF_MSG, + } diff --git a/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/NodeConfiguration.java b/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/NodeConfiguration.java index 5e4c4b5399..25c14017e5 100644 --- a/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/NodeConfiguration.java +++ b/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/NodeConfiguration.java @@ -15,8 +15,8 @@ */ package org.thingsboard.rule.engine.api; -public interface NodeConfiguration { +public interface NodeConfiguration { - NodeConfiguration defaultConfiguration(); + T defaultConfiguration(); } diff --git a/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/TbContext.java b/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/TbContext.java index 260a51ff17..46fa1d2087 100644 --- a/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/TbContext.java +++ b/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/TbContext.java @@ -15,6 +15,7 @@ */ package org.thingsboard.rule.engine.api; +import org.thingsboard.server.common.data.id.RuleNodeId; import org.thingsboard.server.common.msg.TbMsg; import org.thingsboard.server.common.msg.cluster.ServerAddress; import org.thingsboard.server.dao.alarm.AlarmService; @@ -55,6 +56,8 @@ public interface TbContext { void tellError(TbMsg msg, Throwable th); + RuleNodeId getSelfId(); + AttributesService getAttributesService(); CustomerService getCustomerService(); diff --git a/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/TbNode.java b/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/TbNode.java index 89442bb648..2555c999f2 100644 --- a/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/TbNode.java +++ b/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/TbNode.java @@ -24,7 +24,7 @@ import java.util.concurrent.ExecutionException; */ public interface TbNode { - void init(TbNodeConfiguration configuration, TbNodeState state) throws TbNodeException; + void init(TbContext ctx, TbNodeConfiguration configuration) throws TbNodeException; void onMsg(TbContext ctx, TbMsg msg) throws ExecutionException, InterruptedException, TbNodeException; 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 new file mode 100644 index 0000000000..43851a3c86 --- /dev/null +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/debug/TbMsgGeneratorNode.java @@ -0,0 +1,83 @@ +/** + * Copyright © 2016-2018 The Thingsboard Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.thingsboard.rule.engine.debug; + +import com.datastax.driver.core.utils.UUIDs; +import lombok.extern.slf4j.Slf4j; +import org.thingsboard.rule.engine.TbNodeUtils; +import org.thingsboard.rule.engine.api.ListeningExecutor; +import org.thingsboard.rule.engine.api.RuleNode; +import org.thingsboard.rule.engine.api.TbContext; +import org.thingsboard.rule.engine.api.TbNode; +import org.thingsboard.rule.engine.api.TbNodeConfiguration; +import org.thingsboard.rule.engine.api.TbNodeException; +import org.thingsboard.rule.engine.filter.TbJsFilterNodeConfiguration; +import org.thingsboard.rule.engine.js.NashornJsEngine; +import org.thingsboard.server.common.data.plugin.ComponentType; +import org.thingsboard.server.common.msg.TbMsg; +import org.thingsboard.server.common.msg.TbMsgMetaData; + +import javax.script.Bindings; + +import java.nio.charset.StandardCharsets; +import java.util.concurrent.TimeUnit; + +import static org.thingsboard.rule.engine.DonAsynchron.withCallback; + +@Slf4j +@RuleNode( + type = ComponentType.ACTION, + name = "generator", + configClazz = TbMsgGeneratorNodeConfiguration.class, + nodeDescription = "Periodically generates messages", + nodeDetails = "Generates messages with configurable period. ", + inEnabled = false +) + +public class TbMsgGeneratorNode implements TbNode { + + public static final String TB_MSG_GENERATOR_NODE_MSG = "TbMsgGeneratorNodeMsg"; + + private TbMsgGeneratorNodeConfiguration config; + private long delay; + + @Override + public void init(TbContext ctx, TbNodeConfiguration configuration) throws TbNodeException { + this.config = TbNodeUtils.convert(configuration, TbMsgGeneratorNodeConfiguration.class); + this.delay = TimeUnit.SECONDS.toMillis(config.getPeriodInSeconds()); + ctx.tellSelf(newTickMsg(ctx), delay); + } + + @Override + public void onMsg(TbContext ctx, TbMsg msg) { + if (msg.getType().equals(TB_MSG_GENERATOR_NODE_MSG)) { + TbMsgMetaData metaData = new TbMsgMetaData(); + if (config.getMsgMetaData() != null) { + config.getMsgMetaData().forEach(metaData::putValue); + } + ctx.tellNext(new TbMsg(UUIDs.timeBased(), config.getMsgType(), ctx.getSelfId(), metaData, config.getMsgBody().getBytes(StandardCharsets.UTF_8))); + ctx.tellSelf(newTickMsg(ctx), delay); + } + } + + private TbMsg newTickMsg(TbContext ctx) { + return new TbMsg(UUIDs.timeBased(), TB_MSG_GENERATOR_NODE_MSG, ctx.getSelfId(), new TbMsgMetaData(), new byte[]{}); + } + + @Override + public void destroy() { + } +} 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 new file mode 100644 index 0000000000..e15b13f1ca --- /dev/null +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/debug/TbMsgGeneratorNodeConfiguration.java @@ -0,0 +1,40 @@ +/** + * Copyright © 2016-2018 The Thingsboard Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.thingsboard.rule.engine.debug; + +import lombok.Data; +import org.thingsboard.rule.engine.api.NodeConfiguration; +import java.util.Map; + +@Data +public class TbMsgGeneratorNodeConfiguration implements NodeConfiguration { + + private int msgCount; + private int periodInSeconds; + private String msgType; + private String msgBody; + private Map msgMetaData; + + @Override + public TbMsgGeneratorNodeConfiguration defaultConfiguration() { + TbMsgGeneratorNodeConfiguration configuration = new TbMsgGeneratorNodeConfiguration(); + configuration.setMsgCount(0); + configuration.setPeriodInSeconds(1); + configuration.setMsgType("DebugMsg"); + configuration.setMsgBody("{}"); + return configuration; + } +} diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbJsFilterNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbJsFilterNode.java index eb8941cc8c..044a8b866d 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbJsFilterNode.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbJsFilterNode.java @@ -29,7 +29,7 @@ import static org.thingsboard.rule.engine.DonAsynchron.withCallback; @Slf4j @RuleNode( type = ComponentType.FILTER, - name = "script", relationTypes = {"True", "False", "Failure"}, + name = "script", relationTypes = {"True", "False"}, configClazz = TbJsFilterNodeConfiguration.class, nodeDescription = "Filter incoming messages using JS script", nodeDetails = "Evaluate incoming Message with configured JS condition. " + @@ -45,7 +45,7 @@ public class TbJsFilterNode implements TbNode { private NashornJsEngine jsEngine; @Override - public void init(TbNodeConfiguration configuration, TbNodeState state) throws TbNodeException { + public void init(TbContext ctx, TbNodeConfiguration configuration) throws TbNodeException { this.config = TbNodeUtils.convert(configuration, TbJsFilterNodeConfiguration.class); this.jsEngine = new NashornJsEngine(config.getJsScript(), "Filter"); } diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbJsFilterNodeConfiguration.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbJsFilterNodeConfiguration.java index 2d776ce3e3..9ab74e890f 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbJsFilterNodeConfiguration.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbJsFilterNodeConfiguration.java @@ -19,7 +19,7 @@ import lombok.Data; import org.thingsboard.rule.engine.api.NodeConfiguration; @Data -public class TbJsFilterNodeConfiguration implements NodeConfiguration { +public class TbJsFilterNodeConfiguration implements NodeConfiguration { private String jsScript; diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbJsSwitchNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbJsSwitchNode.java index 98f0ebcd76..d04b58a4d5 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbJsSwitchNode.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbJsSwitchNode.java @@ -45,7 +45,7 @@ public class TbJsSwitchNode implements TbNode { private NashornJsEngine jsEngine; @Override - public void init(TbNodeConfiguration configuration, TbNodeState state) throws TbNodeException { + public void init(TbContext ctx, TbNodeConfiguration configuration) throws TbNodeException { this.config = TbNodeUtils.convert(configuration, TbJsSwitchNodeConfiguration.class); this.jsEngine = new NashornJsEngine(config.getJsScript(), "Switch"); } diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbJsSwitchNodeConfiguration.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbJsSwitchNodeConfiguration.java index 3a4856cd93..79b0912c6c 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbJsSwitchNodeConfiguration.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbJsSwitchNodeConfiguration.java @@ -22,7 +22,7 @@ import org.thingsboard.rule.engine.api.NodeConfiguration; import java.util.Set; @Data -public class TbJsSwitchNodeConfiguration implements NodeConfiguration { +public class TbJsSwitchNodeConfiguration implements NodeConfiguration { private String jsScript; diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbMsgTypeFilterNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbMsgTypeFilterNode.java index 8d72a7b711..225cd99e36 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbMsgTypeFilterNode.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbMsgTypeFilterNode.java @@ -29,6 +29,7 @@ import org.thingsboard.server.common.msg.TbMsg; type = ComponentType.FILTER, name = "message type", configClazz = TbMsgTypeFilterNodeConfiguration.class, + relationTypes = {"True", "False"}, nodeDescription = "Filter incoming messages by Message Type", nodeDetails = "Evaluate incoming Message with configured JS condition. " + "If incoming MessageType is expected - send Message via Success chain, otherwise Failure chain is used.", @@ -39,7 +40,7 @@ public class TbMsgTypeFilterNode implements TbNode { TbMsgTypeFilterNodeConfiguration config; @Override - public void init(TbNodeConfiguration configuration, TbNodeState state) throws TbNodeException { + public void init(TbContext ctx, TbNodeConfiguration configuration) throws TbNodeException { this.config = TbNodeUtils.convert(configuration, TbMsgTypeFilterNodeConfiguration.class); } diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbMsgTypeFilterNodeConfiguration.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbMsgTypeFilterNodeConfiguration.java index aafd2ed7c2..ae88aa8b07 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbMsgTypeFilterNodeConfiguration.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/filter/TbMsgTypeFilterNodeConfiguration.java @@ -26,7 +26,7 @@ import java.util.List; * Created by ashvayka on 19.01.18. */ @Data -public class TbMsgTypeFilterNodeConfiguration implements NodeConfiguration { +public class TbMsgTypeFilterNodeConfiguration implements NodeConfiguration { private List messageTypes; diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbEntityGetAttrNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbEntityGetAttrNode.java index 269e40fc19..3bb1cff29a 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbEntityGetAttrNode.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbEntityGetAttrNode.java @@ -37,7 +37,7 @@ public abstract class TbEntityGetAttrNode implements TbNode private TbGetEntityAttrNodeConfiguration config; @Override - public void init(TbNodeConfiguration configuration, TbNodeState state) throws TbNodeException { + public void init(TbContext ctx, TbNodeConfiguration configuration) throws TbNodeException { this.config = TbNodeUtils.convert(configuration, TbGetEntityAttrNodeConfiguration.class); } diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetAttributesNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetAttributesNode.java index 4fc0f3e48f..7bf70f4ed9 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetAttributesNode.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetAttributesNode.java @@ -49,7 +49,7 @@ public class TbGetAttributesNode implements TbNode { private TbGetAttributesNodeConfiguration config; @Override - public void init(TbNodeConfiguration configuration, TbNodeState state) throws TbNodeException { + public void init(TbContext ctx, TbNodeConfiguration configuration) throws TbNodeException { this.config = TbNodeUtils.convert(configuration, TbGetAttributesNodeConfiguration.class); } diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetAttributesNodeConfiguration.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetAttributesNodeConfiguration.java index 103b4de956..6cd224722a 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetAttributesNodeConfiguration.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetAttributesNodeConfiguration.java @@ -25,7 +25,7 @@ import java.util.List; * Created by ashvayka on 19.01.18. */ @Data -public class TbGetAttributesNodeConfiguration implements NodeConfiguration { +public class TbGetAttributesNodeConfiguration implements NodeConfiguration { private List clientAttributeNames; private List sharedAttributeNames; diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetEntityAttrNodeConfiguration.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetEntityAttrNodeConfiguration.java index 51951150af..0bcefae872 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetEntityAttrNodeConfiguration.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetEntityAttrNodeConfiguration.java @@ -23,7 +23,7 @@ import java.util.Map; import java.util.Optional; @Data -public class TbGetEntityAttrNodeConfiguration implements NodeConfiguration { +public class TbGetEntityAttrNodeConfiguration implements NodeConfiguration { private Map attrMapping; private boolean isTelemetry = false; diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetRelatedAttributeNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetRelatedAttributeNode.java index 4cd5cd5ba6..603746ef29 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetRelatedAttributeNode.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetRelatedAttributeNode.java @@ -38,7 +38,7 @@ public class TbGetRelatedAttributeNode extends TbEntityGetAttrNode { private TbGetRelatedAttrNodeConfiguration config; @Override - public void init(TbNodeConfiguration configuration, TbNodeState state) throws TbNodeException { + public void init(TbContext context, TbNodeConfiguration configuration) throws TbNodeException { this.config = TbNodeUtils.convert(configuration, TbGetRelatedAttrNodeConfiguration.class); setConfig(config); } diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbAbstractTransformNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbAbstractTransformNode.java index 426a3276a9..d6fcc5ebe6 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbAbstractTransformNode.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbAbstractTransformNode.java @@ -32,7 +32,7 @@ public abstract class TbAbstractTransformNode implements TbNode { private TbTransformNodeConfiguration config; @Override - public void init(TbNodeConfiguration configuration, TbNodeState state) throws TbNodeException { + public void init(TbContext context, TbNodeConfiguration configuration) throws TbNodeException { this.config = TbNodeUtils.convert(configuration, TbTransformNodeConfiguration.class); } diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbChangeOriginatorNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbChangeOriginatorNode.java index 40a647a822..cf761f295f 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbChangeOriginatorNode.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbChangeOriginatorNode.java @@ -49,7 +49,7 @@ public class TbChangeOriginatorNode extends TbAbstractTransformNode { private TbChangeOriginatorNodeConfiguration config; @Override - public void init(TbNodeConfiguration configuration, TbNodeState state) throws TbNodeException { + public void init(TbContext ctx, TbNodeConfiguration configuration) throws TbNodeException { this.config = TbNodeUtils.convert(configuration, TbChangeOriginatorNodeConfiguration.class); validateConfig(config); setConfig(config); diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbTransformMsgNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbTransformMsgNode.java index e47ea0f8db..27e46fe091 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbTransformMsgNode.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbTransformMsgNode.java @@ -38,7 +38,7 @@ public class TbTransformMsgNode extends TbAbstractTransformNode { private NashornJsEngine jsEngine; @Override - public void init(TbNodeConfiguration configuration, TbNodeState state) throws TbNodeException { + public void init(TbContext ctx, TbNodeConfiguration configuration) throws TbNodeException { this.config = TbNodeUtils.convert(configuration, TbTransformMsgNodeConfiguration.class); this.jsEngine = new NashornJsEngine(config.getJsScript(), "Transform"); setConfig(config); diff --git a/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/filter/TbJsFilterNodeTest.java b/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/filter/TbJsFilterNodeTest.java index 4c44886db0..de9d9c4e45 100644 --- a/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/filter/TbJsFilterNodeTest.java +++ b/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/filter/TbJsFilterNodeTest.java @@ -144,7 +144,7 @@ public class TbJsFilterNodeTest { TbNodeConfiguration nodeConfiguration = new TbNodeConfiguration(mapper.valueToTree(config)); node = new TbJsFilterNode(); - node.init(nodeConfiguration, null); + node.init(null, nodeConfiguration); } private void mockJsExecutor() { diff --git a/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/filter/TbJsSwitchNodeTest.java b/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/filter/TbJsSwitchNodeTest.java index 01227f48aa..f1f2d73259 100644 --- a/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/filter/TbJsSwitchNodeTest.java +++ b/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/filter/TbJsSwitchNodeTest.java @@ -107,7 +107,7 @@ public class TbJsSwitchNodeTest { TbNodeConfiguration nodeConfiguration = new TbNodeConfiguration(mapper.valueToTree(config)); node = new TbJsSwitchNode(); - node.init(nodeConfiguration, null); + node.init(null, nodeConfiguration); } private void mockJsExecutor() { diff --git a/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/metadata/TbGetCustomerAttributeNodeTest.java b/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/metadata/TbGetCustomerAttributeNodeTest.java index ad40f03006..2218749af5 100644 --- a/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/metadata/TbGetCustomerAttributeNodeTest.java +++ b/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/metadata/TbGetCustomerAttributeNodeTest.java @@ -88,7 +88,7 @@ public class TbGetCustomerAttributeNodeTest { TbNodeConfiguration nodeConfiguration = new TbNodeConfiguration(mapper.valueToTree(config)); node = new TbGetCustomerAttributeNode(); - node.init(nodeConfiguration, null); + node.init(null, nodeConfiguration); } @Test @@ -226,7 +226,7 @@ public class TbGetCustomerAttributeNodeTest { TbNodeConfiguration nodeConfiguration = new TbNodeConfiguration(mapper.valueToTree(config)); node = new TbGetCustomerAttributeNode(); - node.init(nodeConfiguration, null); + node.init(null, nodeConfiguration); DeviceId deviceId = new DeviceId(UUIDs.timeBased()); diff --git a/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbChangeOriginatorNodeTest.java b/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbChangeOriginatorNodeTest.java index 190692c4e5..39e0121e53 100644 --- a/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbChangeOriginatorNodeTest.java +++ b/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbChangeOriginatorNodeTest.java @@ -119,6 +119,6 @@ public class TbChangeOriginatorNodeTest { TbNodeConfiguration nodeConfiguration = new TbNodeConfiguration(mapper.valueToTree(config)); node = new TbChangeOriginatorNode(); - node.init(nodeConfiguration, null); + node.init(null, nodeConfiguration); } } \ No newline at end of file diff --git a/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbTransformMsgNodeTest.java b/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbTransformMsgNodeTest.java index c6b3441f27..6df9830bec 100644 --- a/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbTransformMsgNodeTest.java +++ b/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/transform/TbTransformMsgNodeTest.java @@ -114,7 +114,7 @@ public class TbTransformMsgNodeTest { TbNodeConfiguration nodeConfiguration = new TbNodeConfiguration(mapper.valueToTree(config)); node = new TbTransformMsgNode(); - node.init(nodeConfiguration, null); + node.init(null, nodeConfiguration); } private void mockJsExecutor() {