From f8ec713d4a36446ebb383af81ba800f065d1f7d4 Mon Sep 17 00:00:00 2001 From: vparomskiy Date: Thu, 22 Mar 2018 10:53:50 +0200 Subject: [PATCH] update description in Node Annotations --- .../rule/engine/api/EnrichmentNode.java | 11 +++++++++-- .../thingsboard/rule/engine/api/FilterNode.java | 11 +++++++++-- .../rule/engine/api/TransformationNode.java | 8 ++++++++ .../rule/engine/filter/TbJsFilterNode.java | 7 ++++++- .../rule/engine/filter/TbJsSwitchNode.java | 7 ++++++- .../rule/engine/filter/TbMsgTypeFilterNode.java | 5 ++++- .../rule/engine/metadata/TbGetAttributesNode.java | 14 +++++++------- .../metadata/TbGetCustomerAttributeNode.java | 6 +++++- .../engine/metadata/TbGetRelatedAttributeNode.java | 8 +++++++- .../engine/metadata/TbGetTenantAttributeNode.java | 6 +++++- .../engine/transform/TbChangeOriginatorNode.java | 5 ++++- .../rule/engine/transform/TbTransformMsgNode.java | 6 +++++- 12 files changed, 75 insertions(+), 19 deletions(-) diff --git a/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/EnrichmentNode.java b/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/EnrichmentNode.java index 2267bdae67..b3ff2559eb 100644 --- a/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/EnrichmentNode.java +++ b/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/EnrichmentNode.java @@ -16,7 +16,6 @@ package org.thingsboard.rule.engine.api; import org.thingsboard.server.common.data.plugin.ComponentScope; -import org.thingsboard.server.extensions.api.component.EmptyComponentConfiguration; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -32,11 +31,19 @@ public @interface EnrichmentNode { String name(); + String nodeDescription(); + + String nodeDetails(); + + boolean inEnabled() default true; + + boolean outEnabled() default true; + ComponentScope scope() default ComponentScope.TENANT; String descriptor() default "EmptyNodeDescriptor.json"; - String[] relationTypes() default {"Success","Failure"}; + String[] relationTypes() default {"Success", "Failure"}; boolean customRelations() default false; } diff --git a/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/FilterNode.java b/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/FilterNode.java index 5247e397dd..d34755dc2c 100644 --- a/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/FilterNode.java +++ b/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/FilterNode.java @@ -16,7 +16,6 @@ package org.thingsboard.rule.engine.api; import org.thingsboard.server.common.data.plugin.ComponentScope; -import org.thingsboard.server.extensions.api.component.EmptyComponentConfiguration; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -32,11 +31,19 @@ public @interface FilterNode { String name(); + String nodeDescription(); + + String nodeDetails(); + + boolean inEnabled() default true; + + boolean outEnabled() default true; + ComponentScope scope() default ComponentScope.TENANT; String descriptor() default "EmptyNodeDescriptor.json"; - String[] relationTypes() default {"Success","Failure"}; + String[] relationTypes() default {"Success", "Failure"}; boolean customRelations() default false; diff --git a/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/TransformationNode.java b/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/TransformationNode.java index bfe1dcaeda..76b0dda01e 100644 --- a/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/TransformationNode.java +++ b/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/TransformationNode.java @@ -32,6 +32,14 @@ public @interface TransformationNode { String name(); + String nodeDescription(); + + String nodeDetails(); + + boolean inEnabled() default true; + + boolean outEnabled() default true; + ComponentScope scope() default ComponentScope.TENANT; String descriptor() default "EmptyNodeDescriptor.json"; 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 d3fee6859e..393496a41e 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 @@ -26,7 +26,12 @@ import javax.script.Bindings; import static org.thingsboard.rule.engine.DonAsynchron.withCallback; @Slf4j -@FilterNode(name = "Filter Node", relationTypes = {"True", "False", "Failure"}) +@FilterNode(name = "script", relationTypes = {"True", "False", "Failure"}, + nodeDescription = "Filter incoming messages using JS script", + nodeDetails = "Evaluate incoming Message with configured JS condition. " + + "If 'True' - 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 'meta' property. For example 'meta.customerName === 'John';'") public class TbJsFilterNode implements TbNode { private TbJsFilterNodeConfiguration config; 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 5c7d1d10f4..dff214567d 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 @@ -27,7 +27,12 @@ import java.util.Set; import static org.thingsboard.rule.engine.DonAsynchron.withCallback; @Slf4j -@FilterNode(name = "Switch Node", customRelations = true) +@FilterNode(name = "switch", customRelations = true, + 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 'meta' property. For example 'meta.customerName === 'John';' ") public class TbJsSwitchNode implements TbNode { private TbJsSwitchNodeConfiguration config; 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 381512a806..c08c3e0bf5 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 @@ -24,7 +24,10 @@ import org.thingsboard.server.common.msg.TbMsg; * Created by ashvayka on 19.01.18. */ @Slf4j -@FilterNode(name = "Message Type Filter Node") +@FilterNode(name = "message type", + 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.") public class TbMsgTypeFilterNode implements TbNode { TbMsgTypeFilterNodeConfiguration config; 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 90eadcb2c7..216cf28015 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 @@ -21,12 +21,7 @@ import com.google.common.util.concurrent.ListenableFuture; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import org.thingsboard.rule.engine.TbNodeUtils; -import org.thingsboard.rule.engine.api.TbContext; -import org.thingsboard.rule.engine.api.TbNodeConfiguration; -import org.thingsboard.rule.engine.api.TbNodeException; -import org.thingsboard.rule.engine.api.TbNodeState; -import org.thingsboard.rule.engine.api.TbNode; -import org.thingsboard.rule.engine.api.EnrichmentNode; +import org.thingsboard.rule.engine.api.*; import org.thingsboard.server.common.data.kv.AttributeKvEntry; import org.thingsboard.server.common.data.kv.TsKvEntry; import org.thingsboard.server.common.msg.TbMsg; @@ -40,7 +35,12 @@ import static org.thingsboard.server.common.data.DataConstants.*; * Created by ashvayka on 19.01.18. */ @Slf4j -@EnrichmentNode(name = "Get Attributes Node") +@EnrichmentNode(name = "originator attributes", + nodeDescription = "Add Message Originator Attributes or Latest Telemetry into Message Metadata", + nodeDetails = "If Attributes enrichment configured, CLIENT/SHARED/SERVER attributes are added into Message metadata " + + "with specific prefix: cs/shared/ss. To access those attributes in other nodes this template can be used " + + "'meta.cs.temperature' or 'meta.shared.limit' " + + "If Latest Telemetry enrichment configured, latest telemetry added into metadata without prefix.") public class TbGetAttributesNode implements TbNode { private TbGetAttributesNodeConfiguration config; diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetCustomerAttributeNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetCustomerAttributeNode.java index 18ddfcf6b9..c9cabaaabc 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetCustomerAttributeNode.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetCustomerAttributeNode.java @@ -22,7 +22,11 @@ import org.thingsboard.rule.engine.util.EntitiesCustomerIdAsyncLoader; import org.thingsboard.server.common.data.id.CustomerId; import org.thingsboard.server.common.data.id.EntityId; -@EnrichmentNode(name="Get Customer Attributes Node") +@EnrichmentNode(name="customer attributes", + nodeDescription = "Add Originators Customer Attributes or Latest Telemetry into Message Metadata", + nodeDetails = "If Attributes enrichment configured, server scope attributes are added into Message metadata. " + + "To access those attributes in other nodes this template can be used " + + "'meta.temperature'. If Latest Telemetry enrichment configured, latest telemetry added into metadata") public class TbGetCustomerAttributeNode extends TbEntityGetAttrNode { @Override 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 3a0dce85a2..f85d019b04 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 @@ -26,7 +26,13 @@ import org.thingsboard.rule.engine.util.EntitiesRelatedEntityIdAsyncLoader; import org.thingsboard.server.common.data.id.EntityId; -@EnrichmentNode(name="Get Related Entity Attributes Node") +@EnrichmentNode(name="related attributes", + nodeDescription = "Add Originators Related Entity Attributes or Latest Telemetry into Message Metadata", + nodeDetails = "Related Entity found using configured relation direction and Relation Type. " + + "If multiple Related Entities are found, only first Entity is used for attributes enrichment, other entities are discarded. " + + "If Attributes enrichment configured, server scope attributes are added into Message metadata. " + + "To access those attributes in other nodes this template can be used " + + "'meta.temperature'. If Latest Telemetry enrichment configured, latest telemetry added into metadata") public class TbGetRelatedAttributeNode extends TbEntityGetAttrNode { private TbGetRelatedAttrNodeConfiguration config; diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetTenantAttributeNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetTenantAttributeNode.java index e51c053ca2..2603bc5cc1 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetTenantAttributeNode.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/metadata/TbGetTenantAttributeNode.java @@ -24,7 +24,11 @@ import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.TenantId; @Slf4j -@EnrichmentNode(name="Get Tenant Attributes Node") +@EnrichmentNode(name="tenant attributes", + nodeDescription = "Add Originators Tenant Attributes or Latest Telemetry into Message Metadata", + nodeDetails = "If Attributes enrichment configured, server scope attributes are added into Message metadata. " + + "To access those attributes in other nodes this template can be used " + + "'meta.temperature'. If Latest Telemetry enrichment configured, latest telemetry added into metadata") public class TbGetTenantAttributeNode extends TbEntityGetAttrNode { @Override 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 36063b7fc2..8ab8e18abc 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 @@ -32,7 +32,10 @@ import org.thingsboard.server.common.msg.TbMsg; import java.util.HashSet; @Slf4j -@EnrichmentNode(name = "Change Originator Node") +@TransformationNode(name="change originator", + nodeDescription = "Change Message Originator To Tenant/Customer/Related Entity", + nodeDetails = "Related Entity found using configured relation direction and Relation Type. " + + "If multiple Related Entities are found, only first Entity is used as new Originator, other entities are discarded. ") public class TbChangeOriginatorNode extends TbAbstractTransformNode { protected static final String CUSTOMER_SOURCE = "CUSTOMER"; 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 c0d20f43c4..3cd7cd1374 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 @@ -23,7 +23,11 @@ import org.thingsboard.server.common.msg.TbMsg; import javax.script.Bindings; -@EnrichmentNode(name = "Transformation Node") +@TransformationNode(name = "script", + nodeDescription = "Change Message payload and Metadata using JavaScript", + nodeDetails = "JavaScript function recieve 2 input parameters that can be changed inside. " + + "'meta' - is a Message metadata. " + + "'msg' - is a Message payload. Any properties can be changed/removed/added in those objects.") public class TbTransformMsgNode extends TbAbstractTransformNode { private TbTransformMsgNodeConfiguration config;