From ecf54464a81759370157157ade9513207761ac8d Mon Sep 17 00:00:00 2001 From: Igor Kulikov Date: Wed, 4 Apr 2018 21:36:37 +0300 Subject: [PATCH] Update rule node ctx on update --- .../server/actors/ruleChain/DefaultTbContext.java | 6 ++++++ .../ruleChain/RuleChainActorMessageProcessor.java | 7 ++++--- .../ruleChain/RuleNodeActorMessageProcessor.java | 1 + .../server/actors/ruleChain/RuleNodeCtx.java | 4 +++- .../org/thingsboard/rule/engine/api/TbContext.java | 12 +++--------- .../rule/engine/filter/TbJsFilterNode.java | 4 ++-- .../rule/engine/filter/TbJsSwitchNode.java | 4 ++-- .../rule/engine/transform/TbTransformMsgNode.java | 2 +- 8 files changed, 22 insertions(+), 18 deletions(-) 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 032689f9e3..03dc376f10 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 @@ -23,6 +23,7 @@ import org.thingsboard.rule.engine.api.RuleEngineTelemetryService; 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.data.rule.RuleNode; import org.thingsboard.server.common.msg.TbMsg; import org.thingsboard.server.common.msg.cluster.ServerAddress; import org.thingsboard.server.dao.alarm.AlarmService; @@ -106,6 +107,11 @@ class DefaultTbContext implements TbContext { nodeCtx.getSelfActor().tell(new RuleNodeToSelfErrorMsg(msg, th), nodeCtx.getSelfActor()); } + @Override + public void updateSelf(RuleNode self) { + nodeCtx.setSelf(self); + } + @Override public RuleNodeId getSelfId() { return nodeCtx.getSelf().getId(); diff --git a/application/src/main/java/org/thingsboard/server/actors/ruleChain/RuleChainActorMessageProcessor.java b/application/src/main/java/org/thingsboard/server/actors/ruleChain/RuleChainActorMessageProcessor.java index a853b1576b..d588a63637 100644 --- a/application/src/main/java/org/thingsboard/server/actors/ruleChain/RuleChainActorMessageProcessor.java +++ b/application/src/main/java/org/thingsboard/server/actors/ruleChain/RuleChainActorMessageProcessor.java @@ -92,6 +92,7 @@ public class RuleChainActorMessageProcessor extends ComponentMsgProcessorTrue - send Message via True chain, otherwise False chain is used." + - "Message payload can be accessed via msg property. For example msg.temperature < 10;" + - "Message metadata can be accessed via metadata property. For example metadata.customerName === 'John';" + + "Message payload can be accessed via msg property. For example msg.temperature < 10;
" + + "Message metadata can be accessed via metadata property. For example metadata.customerName === 'John';
" + "Message type can be accessed via msgType property.", uiResources = {"static/rulenode/rulenode-core-config.js"}, configDirective = "tbFilterNodeScriptConfig") 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 7996ae7a03..0a96fab31f 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 @@ -35,8 +35,8 @@ import static org.thingsboard.rule.engine.DonAsynchron.withCallback; nodeDescription = "Route incoming Message to one or multiple output chains", nodeDetails = "Node executes configured JS script. Script should return array of next Chain names where Message should be routed. " + "If Array is empty - message not routed to next Node. " + - "Message payload can be accessed via msg property. For example msg.temperature < 10; " + - "Message metadata can be accessed via metadata property. For example metadata.customerName === 'John';" + + "Message payload can be accessed via msg property. For example msg.temperature < 10;
" + + "Message metadata can be accessed via metadata property. For example metadata.customerName === 'John';
" + "Message type can be accessed via msgType property.", uiResources = {"static/rulenode/rulenode-core-config.js"}, configDirective = "tbFilterNodeSwitchConfig") 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 f57edba753..bbb4b5f37a 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 @@ -34,7 +34,7 @@ import javax.script.Bindings; "msg - is a Message payload.
" + "msgType - is a Message type.
" + "Should return the following structure:
" + - "{ msg: , metadata: , msgType: }" + + "{ msg: new payload,
   metadata: new metadata,
   msgType: new msgType }

" + "All fields in resulting object are optional and will be taken from original message if not specified.", uiResources = {"static/rulenode/rulenode-core-config.js", "static/rulenode/rulenode-core-config.css"}, configDirective = "tbTransformationNodeScriptConfig")