Commit d76b9eff68a10ba5ba6b8238b26126e3b477bc19
1 parent
4cf29e2d
Changed default rule chain types on nodes
Showing
50 changed files
with
59 additions
and
108 deletions
... | ... | @@ -37,9 +37,7 @@ import org.thingsboard.server.common.msg.TbMsg; |
37 | 37 | "Will create new Customer if it doesn't exists and 'Create new Customer if not exists' is set to true.", |
38 | 38 | uiResources = {"static/rulenode/rulenode-core-config.js"}, |
39 | 39 | configDirective = "tbActionNodeAssignToCustomerConfig", |
40 | - icon = "add_circle", | |
41 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
42 | -) | |
40 | + icon = "add_circle") | |
43 | 41 | public class TbAssignToCustomerNode extends TbAbstractCustomerActionNode<TbAssignToCustomerNodeConfiguration> { |
44 | 42 | |
45 | 43 | @Override | ... | ... |
... | ... | @@ -45,9 +45,7 @@ import org.thingsboard.server.common.msg.TbMsg; |
45 | 45 | "Message metadata can be accessed via <code>metadata</code> property. For example <code>'name = ' + metadata.customerName;</code>.", |
46 | 46 | uiResources = {"static/rulenode/rulenode-core-config.js"}, |
47 | 47 | configDirective = "tbActionNodeClearAlarmConfig", |
48 | - icon = "notifications_off", | |
49 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
50 | -) | |
48 | + icon = "notifications_off") | |
51 | 49 | public class TbClearAlarmNode extends TbAbstractAlarmNode<TbClearAlarmNodeConfiguration> { |
52 | 50 | |
53 | 51 | @Override | ... | ... |
... | ... | @@ -57,9 +57,7 @@ import static org.thingsboard.rule.engine.api.TbRelationTypes.SUCCESS; |
57 | 57 | "Changes message originator to related entity view and produces new messages according to count of updated entity views", |
58 | 58 | uiResources = {"static/rulenode/rulenode-core-config.js"}, |
59 | 59 | configDirective = "tbNodeEmptyConfig", |
60 | - icon = "content_copy", | |
61 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
62 | -) | |
60 | + icon = "content_copy") | |
63 | 61 | public class TbCopyAttributesToEntityViewNode implements TbNode { |
64 | 62 | |
65 | 63 | EmptyNodeConfiguration config; | ... | ... |
... | ... | @@ -51,9 +51,7 @@ import java.util.List; |
51 | 51 | "Message metadata can be accessed via <code>metadata</code> property. For example <code>'name = ' + metadata.customerName;</code>.", |
52 | 52 | uiResources = {"static/rulenode/rulenode-core-config.js"}, |
53 | 53 | configDirective = "tbActionNodeCreateAlarmConfig", |
54 | - icon = "notifications_active", | |
55 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
56 | -) | |
54 | + icon = "notifications_active") | |
57 | 55 | public class TbCreateAlarmNode extends TbAbstractAlarmNode<TbCreateAlarmNodeConfiguration> { |
58 | 56 | |
59 | 57 | private static ObjectMapper mapper = new ObjectMapper(); | ... | ... |
... | ... | @@ -54,9 +54,7 @@ import java.util.List; |
54 | 54 | nodeDetails = "If the relation already exists or successfully created - Message send via <b>Success</b> chain, otherwise <b>Failure</b> chain will be used.", |
55 | 55 | uiResources = {"static/rulenode/rulenode-core-config.js"}, |
56 | 56 | configDirective = "tbActionNodeCreateRelationConfig", |
57 | - icon = "add_circle", | |
58 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
59 | -) | |
57 | + icon = "add_circle") | |
60 | 58 | public class TbCreateRelationNode extends TbAbstractRelationActionNode<TbCreateRelationNodeConfiguration> { |
61 | 59 | |
62 | 60 | @Override | ... | ... |
... | ... | @@ -44,9 +44,7 @@ import java.util.List; |
44 | 44 | nodeDetails = "If the relation(s) successfully deleted - Message send via <b>Success</b> chain, otherwise <b>Failure</b> chain will be used.", |
45 | 45 | uiResources = {"static/rulenode/rulenode-core-config.js"}, |
46 | 46 | configDirective = "tbActionNodeDeleteRelationConfig", |
47 | - icon = "remove_circle", | |
48 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
49 | -) | |
47 | + icon = "remove_circle") | |
50 | 48 | public class TbDeleteRelationNode extends TbAbstractRelationActionNode<TbDeleteRelationNodeConfiguration> { |
51 | 49 | |
52 | 50 | @Override | ... | ... |
... | ... | @@ -37,10 +37,7 @@ import static org.thingsboard.rule.engine.api.TbRelationTypes.SUCCESS; |
37 | 37 | "Message metadata can be accessed via <code>metadata</code> property. For example <code>'name = ' + metadata.customerName;</code>.", |
38 | 38 | uiResources = {"static/rulenode/rulenode-core-config.js"}, |
39 | 39 | configDirective = "tbActionNodeLogConfig", |
40 | - icon = "menu", | |
41 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
42 | -) | |
43 | - | |
40 | + icon = "menu") | |
44 | 41 | public class TbLogNode implements TbNode { |
45 | 42 | |
46 | 43 | private TbLogNodeConfiguration config; | ... | ... |
... | ... | @@ -44,9 +44,7 @@ import static org.thingsboard.rule.engine.api.TbRelationTypes.SUCCESS; |
44 | 44 | nodeDetails = "Count incoming messages for specified interval and produces POST_TELEMETRY_REQUEST msg with messages count", |
45 | 45 | icon = "functions", |
46 | 46 | uiResources = {"static/rulenode/rulenode-core-config.js"}, |
47 | - configDirective = "tbActionNodeMsgCountConfig", | |
48 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
49 | -) | |
47 | + configDirective = "tbActionNodeMsgCountConfig") | |
50 | 48 | public class TbMsgCountNode implements TbNode { |
51 | 49 | |
52 | 50 | private static final String TB_MSG_COUNT_NODE_MSG = "TbMsgCountNodeMsg"; | ... | ... |
... | ... | @@ -78,7 +78,8 @@ import static org.thingsboard.common.util.DonAsynchron.withCallback; |
78 | 78 | " otherwise, the message will be routed via <b>success</b> chain.", |
79 | 79 | uiResources = {"static/rulenode/rulenode-core-config.js"}, |
80 | 80 | configDirective = "tbActionNodeCustomTableConfig", |
81 | - icon = "file_upload" | |
81 | + icon = "file_upload", | |
82 | + ruleChainTypes = RuleChainType.CORE | |
82 | 83 | ) |
83 | 84 | public class TbSaveToCustomCassandraTableNode implements TbNode { |
84 | 85 | ... | ... |
... | ... | @@ -21,9 +21,13 @@ import org.thingsboard.rule.engine.api.TbNodeConfiguration; |
21 | 21 | import org.thingsboard.rule.engine.api.TbNodeException; |
22 | 22 | import org.thingsboard.rule.engine.api.util.TbNodeUtils; |
23 | 23 | import org.thingsboard.server.common.data.EntityType; |
24 | -import org.thingsboard.server.common.data.id.*; | |
24 | +import org.thingsboard.server.common.data.id.AssetId; | |
25 | +import org.thingsboard.server.common.data.id.CustomerId; | |
26 | +import org.thingsboard.server.common.data.id.DashboardId; | |
27 | +import org.thingsboard.server.common.data.id.DeviceId; | |
28 | +import org.thingsboard.server.common.data.id.EdgeId; | |
29 | +import org.thingsboard.server.common.data.id.EntityViewId; | |
25 | 30 | import org.thingsboard.server.common.data.plugin.ComponentType; |
26 | -import org.thingsboard.server.common.data.rule.RuleChainType; | |
27 | 31 | import org.thingsboard.server.common.msg.TbMsg; |
28 | 32 | |
29 | 33 | @RuleNode( |
... | ... | @@ -34,8 +38,7 @@ import org.thingsboard.server.common.msg.TbMsg; |
34 | 38 | nodeDetails = "Finds target Entity Customer by Customer name pattern and then unassign Originator Entity from this customer.", |
35 | 39 | uiResources = {"static/rulenode/rulenode-core-config.js"}, |
36 | 40 | configDirective = "tbActionNodeUnAssignToCustomerConfig", |
37 | - icon = "remove_circle", | |
38 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
41 | + icon = "remove_circle" | |
39 | 42 | ) |
40 | 43 | public class TbUnassignFromCustomerNode extends TbAbstractCustomerActionNode<TbUnassignFromCustomerNodeConfiguration> { |
41 | 44 | ... | ... |
... | ... | @@ -46,8 +46,7 @@ import static org.thingsboard.common.util.DonAsynchron.withCallback; |
46 | 46 | "For example <b>requestId</b> field can be accessed with <code>metadata.requestId</code>.", |
47 | 47 | uiResources = {"static/rulenode/rulenode-core-config.js"}, |
48 | 48 | configDirective = "tbActionNodeSnsConfig", |
49 | - iconUrl = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjQ4IiBoZWlnaHQ9IjQ4Ij48cGF0aCBkPSJNMTMuMjMgMTAuNTZWMTBjLTEuOTQgMC0zLjk5LjM5LTMuOTkgMi42NyAwIDEuMTYuNjEgMS45NSAxLjYzIDEuOTUuNzYgMCAxLjQzLS40NyAxLjg2LTEuMjIuNTItLjkzLjUtMS44LjUtMi44NG0yLjcgNi41M2MtLjE4LjE2LS40My4xNy0uNjMuMDYtLjg5LS43NC0xLjA1LTEuMDgtMS41NC0xLjc5LTEuNDcgMS41LTIuNTEgMS45NS00LjQyIDEuOTUtMi4yNSAwLTQuMDEtMS4zOS00LjAxLTQuMTcgMC0yLjE4IDEuMTctMy42NCAyLjg2LTQuMzggMS40Ni0uNjQgMy40OS0uNzYgNS4wNC0uOTNWNy41YzAtLjY2LjA1LTEuNDEtLjMzLTEuOTYtLjMyLS40OS0uOTUtLjctMS41LS43LTEuMDIgMC0xLjkzLjUzLTIuMTUgMS42MS0uMDUuMjQtLjI1LjQ4LS40Ny40OWwtMi42LS4yOGMtLjIyLS4wNS0uNDYtLjIyLS40LS41Ni42LTMuMTUgMy40NS00LjEgNi00LjEgMS4zIDAgMyAuMzUgNC4wMyAxLjMzQzE3LjExIDQuNTUgMTcgNi4xOCAxNyA3Ljk1djQuMTdjMCAxLjI1LjUgMS44MSAxIDIuNDguMTcuMjUuMjEuNTQgMCAuNzFsLTIuMDYgMS43OGgtLjAxIj48L3BhdGg+PHBhdGggZD0iTTIwLjE2IDE5LjU0QzE4IDIxLjE0IDE0LjgyIDIyIDEyLjEgMjJjLTMuODEgMC03LjI1LTEuNDEtOS44NS0zLjc2LS4yLS4xOC0uMDItLjQzLjI1LS4yOSAyLjc4IDEuNjMgNi4yNSAyLjYxIDkuODMgMi42MSAyLjQxIDAgNS4wNy0uNSA3LjUxLTEuNTMuMzctLjE2LjY2LjI0LjMyLjUxIj48L3BhdGg+PHBhdGggZD0iTTIxLjA3IDE4LjVjLS4yOC0uMzYtMS44NS0uMTctMi41Ny0uMDgtLjE5LjAyLS4yMi0uMTYtLjAzLS4zIDEuMjQtLjg4IDMuMjktLjYyIDMuNTMtLjMzLjI0LjMtLjA3IDIuMzUtMS4yNCAzLjMyLS4xOC4xNi0uMzUuMDctLjI2LS4xMS4yNi0uNjcuODUtMi4xNC41Ny0yLjV6Ij48L3BhdGg+PC9zdmc+", | |
50 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
49 | + iconUrl = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjQ4IiBoZWlnaHQ9IjQ4Ij48cGF0aCBkPSJNMTMuMjMgMTAuNTZWMTBjLTEuOTQgMC0zLjk5LjM5LTMuOTkgMi42NyAwIDEuMTYuNjEgMS45NSAxLjYzIDEuOTUuNzYgMCAxLjQzLS40NyAxLjg2LTEuMjIuNTItLjkzLjUtMS44LjUtMi44NG0yLjcgNi41M2MtLjE4LjE2LS40My4xNy0uNjMuMDYtLjg5LS43NC0xLjA1LTEuMDgtMS41NC0xLjc5LTEuNDcgMS41LTIuNTEgMS45NS00LjQyIDEuOTUtMi4yNSAwLTQuMDEtMS4zOS00LjAxLTQuMTcgMC0yLjE4IDEuMTctMy42NCAyLjg2LTQuMzggMS40Ni0uNjQgMy40OS0uNzYgNS4wNC0uOTNWNy41YzAtLjY2LjA1LTEuNDEtLjMzLTEuOTYtLjMyLS40OS0uOTUtLjctMS41LS43LTEuMDIgMC0xLjkzLjUzLTIuMTUgMS42MS0uMDUuMjQtLjI1LjQ4LS40Ny40OWwtMi42LS4yOGMtLjIyLS4wNS0uNDYtLjIyLS40LS41Ni42LTMuMTUgMy40NS00LjEgNi00LjEgMS4zIDAgMyAuMzUgNC4wMyAxLjMzQzE3LjExIDQuNTUgMTcgNi4xOCAxNyA3Ljk1djQuMTdjMCAxLjI1LjUgMS44MSAxIDIuNDguMTcuMjUuMjEuNTQgMCAuNzFsLTIuMDYgMS43OGgtLjAxIj48L3BhdGg+PHBhdGggZD0iTTIwLjE2IDE5LjU0QzE4IDIxLjE0IDE0LjgyIDIyIDEyLjEgMjJjLTMuODEgMC03LjI1LTEuNDEtOS44NS0zLjc2LS4yLS4xOC0uMDItLjQzLjI1LS4yOSAyLjc4IDEuNjMgNi4yNSAyLjYxIDkuODMgMi42MSAyLjQxIDAgNS4wNy0uNSA3LjUxLTEuNTMuMzctLjE2LjY2LjI0LjMyLjUxIj48L3BhdGg+PHBhdGggZD0iTTIxLjA3IDE4LjVjLS4yOC0uMzYtMS44NS0uMTctMi41Ny0uMDgtLjE5LjAyLS4yMi0uMTYtLjAzLS4zIDEuMjQtLjg4IDMuMjktLjYyIDMuNTMtLjMzLjI0LjMtLjA3IDIuMzUtMS4yNCAzLjMyLS4xOC4xNi0uMzUuMDctLjI2LS4xMS4yNi0uNjcuODUtMi4xNC41Ny0yLjV6Ij48L3BhdGg+PC9zdmc+" | |
51 | 50 | ) |
52 | 51 | public class TbSnsNode implements TbNode { |
53 | 52 | ... | ... |
... | ... | @@ -51,8 +51,7 @@ import static org.thingsboard.common.util.DonAsynchron.withCallback; |
51 | 51 | " For example <b>requestId</b> field can be accessed with <code>metadata.requestId</code>.", |
52 | 52 | uiResources = {"static/rulenode/rulenode-core-config.js"}, |
53 | 53 | configDirective = "tbActionNodeSqsConfig", |
54 | - iconUrl = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjQ4IiBoZWlnaHQ9IjQ4Ij48cGF0aCBkPSJNMTMuMjMgMTAuNTZWMTBjLTEuOTQgMC0zLjk5LjM5LTMuOTkgMi42NyAwIDEuMTYuNjEgMS45NSAxLjYzIDEuOTUuNzYgMCAxLjQzLS40NyAxLjg2LTEuMjIuNTItLjkzLjUtMS44LjUtMi44NG0yLjcgNi41M2MtLjE4LjE2LS40My4xNy0uNjMuMDYtLjg5LS43NC0xLjA1LTEuMDgtMS41NC0xLjc5LTEuNDcgMS41LTIuNTEgMS45NS00LjQyIDEuOTUtMi4yNSAwLTQuMDEtMS4zOS00LjAxLTQuMTcgMC0yLjE4IDEuMTctMy42NCAyLjg2LTQuMzggMS40Ni0uNjQgMy40OS0uNzYgNS4wNC0uOTNWNy41YzAtLjY2LjA1LTEuNDEtLjMzLTEuOTYtLjMyLS40OS0uOTUtLjctMS41LS43LTEuMDIgMC0xLjkzLjUzLTIuMTUgMS42MS0uMDUuMjQtLjI1LjQ4LS40Ny40OWwtMi42LS4yOGMtLjIyLS4wNS0uNDYtLjIyLS40LS41Ni42LTMuMTUgMy40NS00LjEgNi00LjEgMS4zIDAgMyAuMzUgNC4wMyAxLjMzQzE3LjExIDQuNTUgMTcgNi4xOCAxNyA3Ljk1djQuMTdjMCAxLjI1LjUgMS44MSAxIDIuNDguMTcuMjUuMjEuNTQgMCAuNzFsLTIuMDYgMS43OGgtLjAxIj48L3BhdGg+PHBhdGggZD0iTTIwLjE2IDE5LjU0QzE4IDIxLjE0IDE0LjgyIDIyIDEyLjEgMjJjLTMuODEgMC03LjI1LTEuNDEtOS44NS0zLjc2LS4yLS4xOC0uMDItLjQzLjI1LS4yOSAyLjc4IDEuNjMgNi4yNSAyLjYxIDkuODMgMi42MSAyLjQxIDAgNS4wNy0uNSA3LjUxLTEuNTMuMzctLjE2LjY2LjI0LjMyLjUxIj48L3BhdGg+PHBhdGggZD0iTTIxLjA3IDE4LjVjLS4yOC0uMzYtMS44NS0uMTctMi41Ny0uMDgtLjE5LjAyLS4yMi0uMTYtLjAzLS4zIDEuMjQtLjg4IDMuMjktLjYyIDMuNTMtLjMzLjI0LjMtLjA3IDIuMzUtMS4yNCAzLjMyLS4xOC4xNi0uMzUuMDctLjI2LS4xMS4yNi0uNjcuODUtMi4xNC41Ny0yLjV6Ij48L3BhdGg+PC9zdmc+", | |
55 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
54 | + iconUrl = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjQ4IiBoZWlnaHQ9IjQ4Ij48cGF0aCBkPSJNMTMuMjMgMTAuNTZWMTBjLTEuOTQgMC0zLjk5LjM5LTMuOTkgMi42NyAwIDEuMTYuNjEgMS45NSAxLjYzIDEuOTUuNzYgMCAxLjQzLS40NyAxLjg2LTEuMjIuNTItLjkzLjUtMS44LjUtMi44NG0yLjcgNi41M2MtLjE4LjE2LS40My4xNy0uNjMuMDYtLjg5LS43NC0xLjA1LTEuMDgtMS41NC0xLjc5LTEuNDcgMS41LTIuNTEgMS45NS00LjQyIDEuOTUtMi4yNSAwLTQuMDEtMS4zOS00LjAxLTQuMTcgMC0yLjE4IDEuMTctMy42NCAyLjg2LTQuMzggMS40Ni0uNjQgMy40OS0uNzYgNS4wNC0uOTNWNy41YzAtLjY2LjA1LTEuNDEtLjMzLTEuOTYtLjMyLS40OS0uOTUtLjctMS41LS43LTEuMDIgMC0xLjkzLjUzLTIuMTUgMS42MS0uMDUuMjQtLjI1LjQ4LS40Ny40OWwtMi42LS4yOGMtLjIyLS4wNS0uNDYtLjIyLS40LS41Ni42LTMuMTUgMy40NS00LjEgNi00LjEgMS4zIDAgMyAuMzUgNC4wMyAxLjMzQzE3LjExIDQuNTUgMTcgNi4xOCAxNyA3Ljk1djQuMTdjMCAxLjI1LjUgMS44MSAxIDIuNDguMTcuMjUuMjEuNTQgMCAuNzFsLTIuMDYgMS43OGgtLjAxIj48L3BhdGg+PHBhdGggZD0iTTIwLjE2IDE5LjU0QzE4IDIxLjE0IDE0LjgyIDIyIDEyLjEgMjJjLTMuODEgMC03LjI1LTEuNDEtOS44NS0zLjc2LS4yLS4xOC0uMDItLjQzLjI1LS4yOSAyLjc4IDEuNjMgNi4yNSAyLjYxIDkuODMgMi42MSAyLjQxIDAgNS4wNy0uNSA3LjUxLTEuNTMuMzctLjE2LjY2LjI0LjMyLjUxIj48L3BhdGg+PHBhdGggZD0iTTIxLjA3IDE4LjVjLS4yOC0uMzYtMS44NS0uMTctMi41Ny0uMDgtLjE5LjAyLS4yMi0uMTYtLjAzLS4zIDEuMjQtLjg4IDMuMjktLjYyIDMuNTMtLjMzLjI0LjMtLjA3IDIuMzUtMS4yNCAzLjMyLS4xOC4xNi0uMzUuMDctLjI2LS4xMS4yNi0uNjcuODUtMi4xNC41Ny0yLjV6Ij48L3BhdGg+PC9zdmc+" | |
56 | 55 | ) |
57 | 56 | public class TbSqsNode implements TbNode { |
58 | 57 | ... | ... |
... | ... | @@ -45,8 +45,7 @@ import static org.thingsboard.rule.engine.api.TbRelationTypes.SUCCESS; |
45 | 45 | inEnabled = false, |
46 | 46 | uiResources = {"static/rulenode/rulenode-core-config.js", "static/rulenode/rulenode-core-config.css"}, |
47 | 47 | configDirective = "tbActionNodeGeneratorConfig", |
48 | - icon = "repeat", | |
49 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
48 | + icon = "repeat" | |
50 | 49 | ) |
51 | 50 | |
52 | 51 | public class TbMsgGeneratorNode implements TbNode { | ... | ... |
... | ... | @@ -46,8 +46,7 @@ import static org.thingsboard.rule.engine.api.TbRelationTypes.SUCCESS; |
46 | 46 | nodeDetails = "Delays messages for configurable period. Please note, this node acknowledges the message from the current queue (message will be removed from queue)", |
47 | 47 | icon = "pause", |
48 | 48 | uiResources = {"static/rulenode/rulenode-core-config.js"}, |
49 | - configDirective = "tbActionNodeMsgDelayConfig", | |
50 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
49 | + configDirective = "tbActionNodeMsgDelayConfig" | |
51 | 50 | ) |
52 | 51 | |
53 | 52 | public class TbMsgDelayNode implements TbNode { | ... | ... |
... | ... | @@ -40,6 +40,7 @@ import org.thingsboard.server.common.data.id.TenantId; |
40 | 40 | import org.thingsboard.server.common.data.plugin.ComponentType; |
41 | 41 | import org.thingsboard.server.common.data.relation.EntityRelation; |
42 | 42 | import org.thingsboard.server.common.data.relation.RelationTypeGroup; |
43 | +import org.thingsboard.server.common.data.rule.RuleChainType; | |
43 | 44 | import org.thingsboard.server.common.msg.TbMsg; |
44 | 45 | import org.thingsboard.server.common.msg.session.SessionMsgType; |
45 | 46 | |
... | ... | @@ -57,7 +58,8 @@ import static org.thingsboard.rule.engine.api.TbRelationTypes.SUCCESS; |
57 | 58 | nodeDetails = "Pushes messages to edge, if Message Originator assigned to particular edge or is EDGE entity. This node is used only on Cloud instances to push messages from Cloud to Edge. Supports only DEVICE, ENTITY_VIEW, ASSET and EDGE Message Originator(s).", |
58 | 59 | uiResources = {"static/rulenode/rulenode-core-config.js", "static/rulenode/rulenode-core-config.css"}, |
59 | 60 | configDirective = "tbNodeEmptyConfig", |
60 | - icon = "cloud_download" | |
61 | + icon = "cloud_download", | |
62 | + ruleChainTypes = RuleChainType.CORE | |
61 | 63 | ) |
62 | 64 | public class TbMsgPushToEdgeNode implements TbNode { |
63 | 65 | ... | ... |
... | ... | @@ -40,8 +40,7 @@ import java.util.Map; |
40 | 40 | nodeDetails = "If selected checkbox 'Check that all selected keys are present'\" and all keys in message data and metadata are exist - send Message via <b>True</b> chain, otherwise <b>False</b> chain is used.\n" + |
41 | 41 | "Else if the checkbox is not selected, and at least one of the keys from data or metadata of the message exists - send Message via <b>True</b> chain, otherwise, <b>False</b> chain is used. ", |
42 | 42 | uiResources = {"static/rulenode/rulenode-core-config.js"}, |
43 | - configDirective = "tbFilterNodeCheckMessageConfig", | |
44 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
43 | + configDirective = "tbFilterNodeCheckMessageConfig" | |
45 | 44 | ) |
46 | 45 | public class TbCheckMessageNode implements TbNode { |
47 | 46 | ... | ... |
... | ... | @@ -52,8 +52,7 @@ import static org.thingsboard.common.util.DonAsynchron.withCallback; |
52 | 52 | " any relation to the originator of the message by type and direction.", |
53 | 53 | nodeDetails = "If at least one relation exists - send Message via <b>True</b> chain, otherwise <b>False</b> chain is used.", |
54 | 54 | uiResources = {"static/rulenode/rulenode-core-config.js"}, |
55 | - configDirective = "tbFilterNodeCheckRelationConfig", | |
56 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
55 | + configDirective = "tbFilterNodeCheckRelationConfig" | |
57 | 56 | ) |
58 | 57 | public class TbCheckRelationNode implements TbNode { |
59 | 58 | ... | ... |
... | ... | @@ -37,8 +37,7 @@ import static org.thingsboard.common.util.DonAsynchron.withCallback; |
37 | 37 | "Message metadata can be accessed via <code>metadata</code> property. For example <code>metadata.customerName === 'John';</code><br/>" + |
38 | 38 | "Message type can be accessed via <code>msgType</code> property.", |
39 | 39 | uiResources = {"static/rulenode/rulenode-core-config.js"}, |
40 | - configDirective = "tbFilterNodeScriptConfig", | |
41 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
40 | + configDirective = "tbFilterNodeScriptConfig" | |
42 | 41 | ) |
43 | 42 | |
44 | 43 | public class TbJsFilterNode implements TbNode { | ... | ... |
... | ... | @@ -40,8 +40,7 @@ import static org.thingsboard.common.util.DonAsynchron.withCallback; |
40 | 40 | "Message metadata can be accessed via <code>metadata</code> property. For example <code>metadata.customerName === 'John';</code><br/>" + |
41 | 41 | "Message type can be accessed via <code>msgType</code> property.", |
42 | 42 | uiResources = {"static/rulenode/rulenode-core-config.js"}, |
43 | - configDirective = "tbFilterNodeSwitchConfig", | |
44 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
43 | + configDirective = "tbFilterNodeSwitchConfig" | |
45 | 44 | ) |
46 | 45 | public class TbJsSwitchNode implements TbNode { |
47 | 46 | ... | ... |
... | ... | @@ -34,8 +34,7 @@ import org.thingsboard.server.common.msg.TbMsg; |
34 | 34 | nodeDescription = "Filter incoming messages by Message Type", |
35 | 35 | nodeDetails = "If incoming MessageType is expected - send Message via <b>True</b> chain, otherwise <b>False</b> chain is used.", |
36 | 36 | uiResources = {"static/rulenode/rulenode-core-config.js", "static/rulenode/rulenode-core-config.css"}, |
37 | - configDirective = "tbFilterNodeMessageTypeConfig", | |
38 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
37 | + configDirective = "tbFilterNodeMessageTypeConfig" | |
39 | 38 | ) |
40 | 39 | public class TbMsgTypeFilterNode implements TbNode { |
41 | 40 | ... | ... |
... | ... | @@ -35,8 +35,7 @@ import org.thingsboard.server.common.msg.session.SessionMsgType; |
35 | 35 | nodeDescription = "Route incoming messages by Message Type", |
36 | 36 | nodeDetails = "Sends messages with message types <b>\"Post attributes\", \"Post telemetry\", \"RPC Request\"</b> etc. via corresponding chain, otherwise <b>Other</b> chain is used.", |
37 | 37 | uiResources = {"static/rulenode/rulenode-core-config.js"}, |
38 | - configDirective = "tbNodeEmptyConfig", | |
39 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
38 | + configDirective = "tbNodeEmptyConfig" | |
40 | 39 | ) |
41 | 40 | public class TbMsgTypeSwitchNode implements TbNode { |
42 | 41 | ... | ... |
... | ... | @@ -32,8 +32,7 @@ import org.thingsboard.server.common.msg.TbMsg; |
32 | 32 | nodeDescription = "Filter incoming messages by message Originator Type", |
33 | 33 | nodeDetails = "If Originator Type of incoming message is expected - send Message via <b>True</b> chain, otherwise <b>False</b> chain is used.", |
34 | 34 | uiResources = {"static/rulenode/rulenode-core-config.js", "static/rulenode/rulenode-core-config.css"}, |
35 | - configDirective = "tbFilterNodeOriginatorTypeConfig", | |
36 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
35 | + configDirective = "tbFilterNodeOriginatorTypeConfig" | |
37 | 36 | ) |
38 | 37 | public class TbOriginatorTypeFilterNode implements TbNode { |
39 | 38 | ... | ... |
... | ... | @@ -32,8 +32,7 @@ import org.thingsboard.server.common.msg.TbMsg; |
32 | 32 | nodeDescription = "Route incoming messages by Message Originator Type", |
33 | 33 | nodeDetails = "Routes messages to chain according to the originator type ('Device', 'Asset', etc.).", |
34 | 34 | uiResources = {"static/rulenode/rulenode-core-config.js"}, |
35 | - configDirective = "tbNodeEmptyConfig", | |
36 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
35 | + configDirective = "tbNodeEmptyConfig" | |
37 | 36 | ) |
38 | 37 | public class TbOriginatorTypeSwitchNode implements TbNode { |
39 | 38 | ... | ... |
... | ... | @@ -50,8 +50,7 @@ import static org.thingsboard.common.util.DonAsynchron.withCallback; |
50 | 50 | "<b>messageId</b> field can be accessed with <code>metadata.messageId</code>.", |
51 | 51 | uiResources = {"static/rulenode/rulenode-core-config.js"}, |
52 | 52 | configDirective = "tbActionNodePubSubConfig", |
53 | - iconUrl = "data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4IiB2aWV3Qm94PSIwIDAgMTI4IDEyOCI+Cjx0aXRsZT5DbG91ZCBQdWJTdWI8L3RpdGxlPgo8Zz4KPHBhdGggZD0iTTEyNi40Nyw1OC4xMmwtMjYuMy00NS43NEExMS41NiwxMS41NiwwLDAsMCw5MC4zMSw2LjVIMzcuN2ExMS41NSwxMS41NSwwLDAsMC05Ljg2LDUuODhMMS41Myw1OGExMS40OCwxMS40OCwwLDAsMCwwLDExLjQ0bDI2LjMsNDZhMTEuNzcsMTEuNzcsMCwwLDAsOS44Niw2LjA5SDkwLjNhMTEuNzMsMTEuNzMsMCwwLDAsOS44Ny02LjA2bDI2LjMtNDUuNzRBMTEuNzMsMTEuNzMsMCwwLDAsMTI2LjQ3LDU4LjEyWiIgc3R5bGU9ImZpbGw6ICM3MzViMmYiLz4KPHBhdGggZD0iTTg5LjIyLDQ3Ljc0LDgzLjM2LDQ5bC0xNC42LTE0LjZMNjQuMDksNDMuMSw2MS41NSw1My4ybDQuMjksNC4yOUw1Ny42LDU5LjE4LDQ2LjMsNDcuODhsLTcuNjcsNy4zOEw1Mi43Niw2OS4zN2wtMTUsMTEuOUw3OCwxMjEuNUg5MC4zYTExLjczLDExLjczLDAsMCwwLDkuODctNi4wNmwyMC43Mi0zNloiIHN0eWxlPSJvcGFjaXR5OiAwLjA3MDAwMDAwMDI5ODAyMztpc29sYXRpb246IGlzb2xhdGUiLz4KPHBhdGggZD0iTTgyLjg2LDQ3YTUuMzIsNS4zMiwwLDEsMS0xLjk1LDcuMjdBNS4zMiw1LjMyLDAsMCwxLDgyLjg2LDQ3IiBzdHlsZT0iZmlsbDogI2ZmZiIvPgo8cGF0aCBkPSJNMzkuODIsNTYuMThhNS4zMiw1LjMyLDAsMSwxLDcuMjctMS45NSw1LjMyLDUuMzIsMCwwLDEtNy4yNywxLjk1IiBzdHlsZT0iZmlsbDogI2ZmZiIvPgo8cGF0aCBkPSJNNjkuMzIsODguODVBNS4zMiw1LjMyLDAsMSwxLDY0LDgzLjUyYTUuMzIsNS4zMiwwLDAsMSw1LjMyLDUuMzIiIHN0eWxlPSJmaWxsOiAjZmZmIi8+CjxnPgo8cGF0aCBkPSJNNjQsNTIuOTRhMTEuMDYsMTEuMDYsMCwwLDEsMi40Ni4yOFYzOS4xNUg2MS41NFY1My4yMkExMS4wNiwxMS4wNiwwLDAsMSw2NCw1Mi45NFoiIHN0eWxlPSJmaWxsOiAjZmZmIi8+CjxwYXRoIGQ9Ik03NC41Nyw2Ny4yNmExMSwxMSwwLDAsMS0yLjQ3LDQuMjVsMTIuMTksNywyLjQ2LTQuMjZaIiBzdHlsZT0iZmlsbDogI2ZmZiIvPgo8cGF0aCBkPSJNNTMuNDMsNjcuMjZsLTEyLjE4LDcsMi40Niw0LjI2LDEyLjE5LTdBMTEsMTEsMCwwLDEsNTMuNDMsNjcuMjZaIiBzdHlsZT0iZmlsbDogI2ZmZiIvPgo8L2c+CjxwYXRoIGQ9Ik03Mi42LDY0QTguNiw4LjYsMCwxLDEsNjQsNTUuNCw4LjYsOC42LDAsMCwxLDcyLjYsNjQiIHN0eWxlPSJmaWxsOiAjZmZmIi8+CjxwYXRoIGQ9Ik0zOS4xLDcwLjU3YTYuNzYsNi43NiwwLDEsMS0yLjQ3LDkuMjMsNi43Niw2Ljc2LDAsMCwxLDIuNDctOS4yMyIgc3R5bGU9ImZpbGw6ICNmZmYiLz4KPHBhdGggZD0iTTgyLjE0LDgyLjI3YTYuNzYsNi43NiwwLDEsMSw5LjIzLTIuNDcsNi43NSw2Ljc1LDAsMCwxLTkuMjMsMi40NyIgc3R5bGU9ImZpbGw6ICNmZmYiLz4KPHBhdGggZD0iTTcwLjc2LDM5LjE1QTYuNzYsNi43NiwwLDEsMSw2NCwzMi4zOWE2Ljc2LDYuNzYsMCwwLDEsNi43Niw2Ljc2IiBzdHlsZT0iZmlsbDogI2ZmZiIvPgo8L2c+Cjwvc3ZnPgo=", | |
54 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
53 | + iconUrl = "data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4IiB2aWV3Qm94PSIwIDAgMTI4IDEyOCI+Cjx0aXRsZT5DbG91ZCBQdWJTdWI8L3RpdGxlPgo8Zz4KPHBhdGggZD0iTTEyNi40Nyw1OC4xMmwtMjYuMy00NS43NEExMS41NiwxMS41NiwwLDAsMCw5MC4zMSw2LjVIMzcuN2ExMS41NSwxMS41NSwwLDAsMC05Ljg2LDUuODhMMS41Myw1OGExMS40OCwxMS40OCwwLDAsMCwwLDExLjQ0bDI2LjMsNDZhMTEuNzcsMTEuNzcsMCwwLDAsOS44Niw2LjA5SDkwLjNhMTEuNzMsMTEuNzMsMCwwLDAsOS44Ny02LjA2bDI2LjMtNDUuNzRBMTEuNzMsMTEuNzMsMCwwLDAsMTI2LjQ3LDU4LjEyWiIgc3R5bGU9ImZpbGw6ICM3MzViMmYiLz4KPHBhdGggZD0iTTg5LjIyLDQ3Ljc0LDgzLjM2LDQ5bC0xNC42LTE0LjZMNjQuMDksNDMuMSw2MS41NSw1My4ybDQuMjksNC4yOUw1Ny42LDU5LjE4LDQ2LjMsNDcuODhsLTcuNjcsNy4zOEw1Mi43Niw2OS4zN2wtMTUsMTEuOUw3OCwxMjEuNUg5MC4zYTExLjczLDExLjczLDAsMCwwLDkuODctNi4wNmwyMC43Mi0zNloiIHN0eWxlPSJvcGFjaXR5OiAwLjA3MDAwMDAwMDI5ODAyMztpc29sYXRpb246IGlzb2xhdGUiLz4KPHBhdGggZD0iTTgyLjg2LDQ3YTUuMzIsNS4zMiwwLDEsMS0xLjk1LDcuMjdBNS4zMiw1LjMyLDAsMCwxLDgyLjg2LDQ3IiBzdHlsZT0iZmlsbDogI2ZmZiIvPgo8cGF0aCBkPSJNMzkuODIsNTYuMThhNS4zMiw1LjMyLDAsMSwxLDcuMjctMS45NSw1LjMyLDUuMzIsMCwwLDEtNy4yNywxLjk1IiBzdHlsZT0iZmlsbDogI2ZmZiIvPgo8cGF0aCBkPSJNNjkuMzIsODguODVBNS4zMiw1LjMyLDAsMSwxLDY0LDgzLjUyYTUuMzIsNS4zMiwwLDAsMSw1LjMyLDUuMzIiIHN0eWxlPSJmaWxsOiAjZmZmIi8+CjxnPgo8cGF0aCBkPSJNNjQsNTIuOTRhMTEuMDYsMTEuMDYsMCwwLDEsMi40Ni4yOFYzOS4xNUg2MS41NFY1My4yMkExMS4wNiwxMS4wNiwwLDAsMSw2NCw1Mi45NFoiIHN0eWxlPSJmaWxsOiAjZmZmIi8+CjxwYXRoIGQ9Ik03NC41Nyw2Ny4yNmExMSwxMSwwLDAsMS0yLjQ3LDQuMjVsMTIuMTksNywyLjQ2LTQuMjZaIiBzdHlsZT0iZmlsbDogI2ZmZiIvPgo8cGF0aCBkPSJNNTMuNDMsNjcuMjZsLTEyLjE4LDcsMi40Niw0LjI2LDEyLjE5LTdBMTEsMTEsMCwwLDEsNTMuNDMsNjcuMjZaIiBzdHlsZT0iZmlsbDogI2ZmZiIvPgo8L2c+CjxwYXRoIGQ9Ik03Mi42LDY0QTguNiw4LjYsMCwxLDEsNjQsNTUuNCw4LjYsOC42LDAsMCwxLDcyLjYsNjQiIHN0eWxlPSJmaWxsOiAjZmZmIi8+CjxwYXRoIGQ9Ik0zOS4xLDcwLjU3YTYuNzYsNi43NiwwLDEsMS0yLjQ3LDkuMjMsNi43Niw2Ljc2LDAsMCwxLDIuNDctOS4yMyIgc3R5bGU9ImZpbGw6ICNmZmYiLz4KPHBhdGggZD0iTTgyLjE0LDgyLjI3YTYuNzYsNi43NiwwLDEsMSw5LjIzLTIuNDcsNi43NSw2Ljc1LDAsMCwxLTkuMjMsMi40NyIgc3R5bGU9ImZpbGw6ICNmZmYiLz4KPHBhdGggZD0iTTcwLjc2LDM5LjE1QTYuNzYsNi43NiwwLDEsMSw2NCwzMi4zOWE2Ljc2LDYuNzYsMCwwLDEsNi43Niw2Ljc2IiBzdHlsZT0iZmlsbDogI2ZmZiIvPgo8L2c+Cjwvc3ZnPgo=" | |
55 | 54 | ) |
56 | 55 | public class TbPubSubNode implements TbNode { |
57 | 56 | ... | ... |
... | ... | @@ -52,8 +52,7 @@ import java.util.concurrent.TimeoutException; |
52 | 52 | nodeDescription = "Produces incoming messages using GPS based geofencing", |
53 | 53 | nodeDetails = "Extracts latitude and longitude parameters from incoming message and returns different events based on configuration parameters", |
54 | 54 | uiResources = {"static/rulenode/rulenode-core-config.js"}, |
55 | - configDirective = "tbActionNodeGpsGeofencingConfig", | |
56 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
55 | + configDirective = "tbActionNodeGpsGeofencingConfig" | |
57 | 56 | ) |
58 | 57 | public class TbGpsGeofencingActionNode extends AbstractGeofencingNode<TbGpsGeofencingActionNodeConfiguration> { |
59 | 58 | ... | ... |
... | ... | @@ -53,8 +53,7 @@ import java.util.List; |
53 | 53 | nodeDescription = "Filter incoming messages by GPS based geofencing", |
54 | 54 | nodeDetails = "Extracts latitude and longitude parameters from incoming message and returns 'True' if they are inside configured perimeters, 'False' otherwise.", |
55 | 55 | uiResources = {"static/rulenode/rulenode-core-config.js"}, |
56 | - configDirective = "tbFilterNodeGpsGeofencingConfig", | |
57 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
56 | + configDirective = "tbFilterNodeGpsGeofencingConfig" | |
58 | 57 | ) |
59 | 58 | public class TbGpsGeofencingFilterNode extends AbstractGeofencingNode<TbGpsGeofencingFilterNodeConfiguration> { |
60 | 59 | ... | ... |
... | ... | @@ -52,8 +52,7 @@ import java.util.Properties; |
52 | 52 | " from the Kafka in the Message Metadata. For example <b>partition</b> field can be accessed with <code>metadata.partition</code>.", |
53 | 53 | uiResources = {"static/rulenode/rulenode-core-config.js"}, |
54 | 54 | configDirective = "tbActionNodeKafkaConfig", |
55 | - iconUrl = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUzOCIgaGVpZ2h0PSIyNTAwIiB2aWV3Qm94PSIwIDAgMjU2IDQxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PHBhdGggZD0iTTIwMS44MTYgMjMwLjIxNmMtMTYuMTg2IDAtMzAuNjk3IDcuMTcxLTQwLjYzNCAxOC40NjFsLTI1LjQ2My0xOC4wMjZjMi43MDMtNy40NDIgNC4yNTUtMTUuNDMzIDQuMjU1LTIzLjc5NyAwLTguMjE5LTEuNDk4LTE2LjA3Ni00LjExMi0yMy40MDhsMjUuNDA2LTE3LjgzNWM5LjkzNiAxMS4yMzMgMjQuNDA5IDE4LjM2NSA0MC41NDggMTguMzY1IDI5Ljg3NSAwIDU0LjE4NC0yNC4zMDUgNTQuMTg0LTU0LjE4NCAwLTI5Ljg3OS0yNC4zMDktNTQuMTg0LTU0LjE4NC01NC4xODQtMjkuODc1IDAtNTQuMTg0IDI0LjMwNS01NC4xODQgNTQuMTg0IDAgNS4zNDguODA4IDEwLjUwNSAyLjI1OCAxNS4zODlsLTI1LjQyMyAxNy44NDRjLTEwLjYyLTEzLjE3NS0yNS45MTEtMjIuMzc0LTQzLjMzMy0yNS4xODJ2LTMwLjY0YzI0LjU0NC01LjE1NSA0My4wMzctMjYuOTYyIDQzLjAzNy01My4wMTlDMTI0LjE3MSAyNC4zMDUgOTkuODYyIDAgNjkuOTg3IDAgNDAuMTEyIDAgMTUuODAzIDI0LjMwNSAxNS44MDMgNTQuMTg0YzAgMjUuNzA4IDE4LjAxNCA0Ny4yNDYgNDIuMDY3IDUyLjc2OXYzMS4wMzhDMjUuMDQ0IDE0My43NTMgMCAxNzIuNDAxIDAgMjA2Ljg1NGMwIDM0LjYyMSAyNS4yOTIgNjMuMzc0IDU4LjM1NSA2OC45NHYzMi43NzRjLTI0LjI5OSA1LjM0MS00Mi41NTIgMjcuMDExLTQyLjU1MiA1Mi44OTQgMCAyOS44NzkgMjQuMzA5IDU0LjE4NCA1NC4xODQgNTQuMTg0IDI5Ljg3NSAwIDU0LjE4NC0yNC4zMDUgNTQuMTg0LTU0LjE4NCAwLTI1Ljg4My0xOC4yNTMtNDcuNTUzLTQyLjU1Mi01Mi44OTR2LTMyLjc3NWE2OS45NjUgNjkuOTY1IDAgMCAwIDQyLjYtMjQuNzc2bDI1LjYzMyAxOC4xNDNjLTEuNDIzIDQuODQtMi4yMiA5Ljk0Ni0yLjIyIDE1LjI0IDAgMjkuODc5IDI0LjMwOSA1NC4xODQgNTQuMTg0IDU0LjE4NCAyOS44NzUgMCA1NC4xODQtMjQuMzA1IDU0LjE4NC01NC4xODQgMC0yOS44NzktMjQuMzA5LTU0LjE4NC01NC4xODQtNTQuMTg0em0wLTEyNi42OTVjMTQuNDg3IDAgMjYuMjcgMTEuNzg4IDI2LjI3IDI2LjI3MXMtMTEuNzgzIDI2LjI3LTI2LjI3IDI2LjI3LTI2LjI3LTExLjc4Ny0yNi4yNy0yNi4yN2MwLTE0LjQ4MyAxMS43ODMtMjYuMjcxIDI2LjI3LTI2LjI3MXptLTE1OC4xLTQ5LjMzN2MwLTE0LjQ4MyAxMS43ODQtMjYuMjcgMjYuMjcxLTI2LjI3czI2LjI3IDExLjc4NyAyNi4yNyAyNi4yN2MwIDE0LjQ4My0xMS43ODMgMjYuMjctMjYuMjcgMjYuMjdzLTI2LjI3MS0xMS43ODctMjYuMjcxLTI2LjI3em01Mi41NDEgMzA3LjI3OGMwIDE0LjQ4My0xMS43ODMgMjYuMjctMjYuMjcgMjYuMjdzLTI2LjI3MS0xMS43ODctMjYuMjcxLTI2LjI3YzAtMTQuNDgzIDExLjc4NC0yNi4yNyAyNi4yNzEtMjYuMjdzMjYuMjcgMTEuNzg3IDI2LjI3IDI2LjI3em0tMjYuMjcyLTExNy45N2MtMjAuMjA1IDAtMzYuNjQyLTE2LjQzNC0zNi42NDItMzYuNjM4IDAtMjAuMjA1IDE2LjQzNy0zNi42NDIgMzYuNjQyLTM2LjY0MiAyMC4yMDQgMCAzNi42NDEgMTYuNDM3IDM2LjY0MSAzNi42NDIgMCAyMC4yMDQtMTYuNDM3IDM2LjYzOC0zNi42NDEgMzYuNjM4em0xMzEuODMxIDY3LjE3OWMtMTQuNDg3IDAtMjYuMjctMTEuNzg4LTI2LjI3LTI2LjI3MXMxMS43ODMtMjYuMjcgMjYuMjctMjYuMjcgMjYuMjcgMTEuNzg3IDI2LjI3IDI2LjI3YzAgMTQuNDgzLTExLjc4MyAyNi4yNzEtMjYuMjcgMjYuMjcxeiIvPjwvc3ZnPg==", | |
56 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
55 | + iconUrl = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUzOCIgaGVpZ2h0PSIyNTAwIiB2aWV3Qm94PSIwIDAgMjU2IDQxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PHBhdGggZD0iTTIwMS44MTYgMjMwLjIxNmMtMTYuMTg2IDAtMzAuNjk3IDcuMTcxLTQwLjYzNCAxOC40NjFsLTI1LjQ2My0xOC4wMjZjMi43MDMtNy40NDIgNC4yNTUtMTUuNDMzIDQuMjU1LTIzLjc5NyAwLTguMjE5LTEuNDk4LTE2LjA3Ni00LjExMi0yMy40MDhsMjUuNDA2LTE3LjgzNWM5LjkzNiAxMS4yMzMgMjQuNDA5IDE4LjM2NSA0MC41NDggMTguMzY1IDI5Ljg3NSAwIDU0LjE4NC0yNC4zMDUgNTQuMTg0LTU0LjE4NCAwLTI5Ljg3OS0yNC4zMDktNTQuMTg0LTU0LjE4NC01NC4xODQtMjkuODc1IDAtNTQuMTg0IDI0LjMwNS01NC4xODQgNTQuMTg0IDAgNS4zNDguODA4IDEwLjUwNSAyLjI1OCAxNS4zODlsLTI1LjQyMyAxNy44NDRjLTEwLjYyLTEzLjE3NS0yNS45MTEtMjIuMzc0LTQzLjMzMy0yNS4xODJ2LTMwLjY0YzI0LjU0NC01LjE1NSA0My4wMzctMjYuOTYyIDQzLjAzNy01My4wMTlDMTI0LjE3MSAyNC4zMDUgOTkuODYyIDAgNjkuOTg3IDAgNDAuMTEyIDAgMTUuODAzIDI0LjMwNSAxNS44MDMgNTQuMTg0YzAgMjUuNzA4IDE4LjAxNCA0Ny4yNDYgNDIuMDY3IDUyLjc2OXYzMS4wMzhDMjUuMDQ0IDE0My43NTMgMCAxNzIuNDAxIDAgMjA2Ljg1NGMwIDM0LjYyMSAyNS4yOTIgNjMuMzc0IDU4LjM1NSA2OC45NHYzMi43NzRjLTI0LjI5OSA1LjM0MS00Mi41NTIgMjcuMDExLTQyLjU1MiA1Mi44OTQgMCAyOS44NzkgMjQuMzA5IDU0LjE4NCA1NC4xODQgNTQuMTg0IDI5Ljg3NSAwIDU0LjE4NC0yNC4zMDUgNTQuMTg0LTU0LjE4NCAwLTI1Ljg4My0xOC4yNTMtNDcuNTUzLTQyLjU1Mi01Mi44OTR2LTMyLjc3NWE2OS45NjUgNjkuOTY1IDAgMCAwIDQyLjYtMjQuNzc2bDI1LjYzMyAxOC4xNDNjLTEuNDIzIDQuODQtMi4yMiA5Ljk0Ni0yLjIyIDE1LjI0IDAgMjkuODc5IDI0LjMwOSA1NC4xODQgNTQuMTg0IDU0LjE4NCAyOS44NzUgMCA1NC4xODQtMjQuMzA1IDU0LjE4NC01NC4xODQgMC0yOS44NzktMjQuMzA5LTU0LjE4NC01NC4xODQtNTQuMTg0em0wLTEyNi42OTVjMTQuNDg3IDAgMjYuMjcgMTEuNzg4IDI2LjI3IDI2LjI3MXMtMTEuNzgzIDI2LjI3LTI2LjI3IDI2LjI3LTI2LjI3LTExLjc4Ny0yNi4yNy0yNi4yN2MwLTE0LjQ4MyAxMS43ODMtMjYuMjcxIDI2LjI3LTI2LjI3MXptLTE1OC4xLTQ5LjMzN2MwLTE0LjQ4MyAxMS43ODQtMjYuMjcgMjYuMjcxLTI2LjI3czI2LjI3IDExLjc4NyAyNi4yNyAyNi4yN2MwIDE0LjQ4My0xMS43ODMgMjYuMjctMjYuMjcgMjYuMjdzLTI2LjI3MS0xMS43ODctMjYuMjcxLTI2LjI3em01Mi41NDEgMzA3LjI3OGMwIDE0LjQ4My0xMS43ODMgMjYuMjctMjYuMjcgMjYuMjdzLTI2LjI3MS0xMS43ODctMjYuMjcxLTI2LjI3YzAtMTQuNDgzIDExLjc4NC0yNi4yNyAyNi4yNzEtMjYuMjdzMjYuMjcgMTEuNzg3IDI2LjI3IDI2LjI3em0tMjYuMjcyLTExNy45N2MtMjAuMjA1IDAtMzYuNjQyLTE2LjQzNC0zNi42NDItMzYuNjM4IDAtMjAuMjA1IDE2LjQzNy0zNi42NDIgMzYuNjQyLTM2LjY0MiAyMC4yMDQgMCAzNi42NDEgMTYuNDM3IDM2LjY0MSAzNi42NDIgMCAyMC4yMDQtMTYuNDM3IDM2LjYzOC0zNi42NDEgMzYuNjM4em0xMzEuODMxIDY3LjE3OWMtMTQuNDg3IDAtMjYuMjctMTEuNzg4LTI2LjI3LTI2LjI3MXMxMS43ODMtMjYuMjcgMjYuMjctMjYuMjcgMjYuMjcgMTEuNzg3IDI2LjI3IDI2LjI3YzAgMTQuNDgzLTExLjc4MyAyNi4yNzEtMjYuMjcgMjYuMjcxeiIvPjwvc3ZnPg==" | |
57 | 56 | ) |
58 | 57 | public class TbKafkaNode implements TbNode { |
59 | 58 | ... | ... |
... | ... | @@ -41,8 +41,7 @@ import static org.thingsboard.rule.engine.mail.TbSendEmailNode.SEND_EMAIL_TYPE; |
41 | 41 | "Set 'SEND_EMAIL' output message type.", |
42 | 42 | uiResources = {"static/rulenode/rulenode-core-config.js"}, |
43 | 43 | configDirective = "tbTransformationNodeToEmailConfig", |
44 | - icon = "email", | |
45 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
44 | + icon = "email" | |
46 | 45 | ) |
47 | 46 | public class TbMsgToEmailNode implements TbNode { |
48 | 47 | ... | ... |
... | ... | @@ -47,8 +47,7 @@ import static org.thingsboard.common.util.DonAsynchron.withCallback; |
47 | 47 | "with <code>to Email</code> Node using <code>Successful</code> chain.", |
48 | 48 | uiResources = {"static/rulenode/rulenode-core-config.js"}, |
49 | 49 | configDirective = "tbActionNodeSendEmailConfig", |
50 | - icon = "send", | |
51 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
50 | + icon = "send" | |
52 | 51 | ) |
53 | 52 | public class TbSendEmailNode implements TbNode { |
54 | 53 | ... | ... |
... | ... | @@ -41,8 +41,7 @@ import org.thingsboard.server.common.msg.TbMsg; |
41 | 41 | "To access those attributes in other nodes this template can be used " + |
42 | 42 | "<code>metadata.cs_temperature</code> or <code>metadata.shared_limit</code> ", |
43 | 43 | uiResources = {"static/rulenode/rulenode-core-config.js"}, |
44 | - configDirective = "tbEnrichmentNodeOriginatorAttributesConfig", | |
45 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
44 | + configDirective = "tbEnrichmentNodeOriginatorAttributesConfig" | |
46 | 45 | ) |
47 | 46 | public class TbGetAttributesNode extends TbAbstractGetAttributesNode<TbGetAttributesNodeConfiguration, EntityId> { |
48 | 47 | ... | ... |
... | ... | @@ -34,8 +34,7 @@ import org.thingsboard.server.common.data.rule.RuleChainType; |
34 | 34 | "To access those attributes in other nodes this template can be used " + |
35 | 35 | "<code>metadata.temperature</code>.", |
36 | 36 | uiResources = {"static/rulenode/rulenode-core-config.js", "static/rulenode/rulenode-core-config.css"}, |
37 | - configDirective = "tbEnrichmentNodeCustomerAttributesConfig", | |
38 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
37 | + configDirective = "tbEnrichmentNodeCustomerAttributesConfig" | |
39 | 38 | ) |
40 | 39 | public class TbGetCustomerAttributeNode extends TbEntityGetAttrNode<CustomerId> { |
41 | 40 | ... | ... |
... | ... | @@ -43,8 +43,7 @@ import org.thingsboard.server.common.msg.TbMsg; |
43 | 43 | "<b>Note:</b> only Device, Asset, and Entity View type are allowed.<br><br>" + |
44 | 44 | "If the originator of the message is not assigned to Customer, or originator type is not supported - Message will be forwarded to <b>Failure</b> chain, otherwise, <b>Success</b> chain will be used.", |
45 | 45 | uiResources = {"static/rulenode/rulenode-core-config.js"}, |
46 | - configDirective = "tbEnrichmentNodeEntityDetailsConfig", | |
47 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
46 | + configDirective = "tbEnrichmentNodeEntityDetailsConfig" | |
48 | 47 | ) |
49 | 48 | public class TbGetCustomerDetailsNode extends TbAbstractGetEntityDetailsNode<TbGetCustomerDetailsNodeConfiguration> { |
50 | 49 | ... | ... |
... | ... | @@ -39,8 +39,7 @@ import org.thingsboard.server.common.msg.TbMsg; |
39 | 39 | "To access those attributes in other nodes this template can be used " + |
40 | 40 | "<code>metadata.cs_temperature</code> or <code>metadata.shared_limit</code> ", |
41 | 41 | uiResources = {"static/rulenode/rulenode-core-config.js"}, |
42 | - configDirective = "tbEnrichmentNodeDeviceAttributesConfig", | |
43 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
42 | + configDirective = "tbEnrichmentNodeDeviceAttributesConfig" | |
44 | 43 | ) |
45 | 44 | public class TbGetDeviceAttrNode extends TbAbstractGetAttributesNode<TbGetDeviceAttrNodeConfiguration, DeviceId> { |
46 | 45 | ... | ... |
... | ... | @@ -44,8 +44,7 @@ import static org.thingsboard.rule.engine.api.TbRelationTypes.SUCCESS; |
44 | 44 | nodeDescription = "Add Message Originator fields values into Message Metadata", |
45 | 45 | nodeDetails = "Will fetch fields values specified in mapping. If specified field is not part of originator fields it will be ignored.", |
46 | 46 | uiResources = {"static/rulenode/rulenode-core-config.js"}, |
47 | - configDirective = "tbEnrichmentNodeOriginatorFieldsConfig", | |
48 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
47 | + configDirective = "tbEnrichmentNodeOriginatorFieldsConfig" | |
49 | 48 | ) |
50 | 49 | public class TbGetOriginatorFieldsNode implements TbNode { |
51 | 50 | ... | ... |
... | ... | @@ -36,8 +36,7 @@ import org.thingsboard.server.common.data.rule.RuleChainType; |
36 | 36 | "To access those attributes in other nodes this template can be used " + |
37 | 37 | "<code>metadata.temperature</code>.", |
38 | 38 | uiResources = {"static/rulenode/rulenode-core-config.js", "static/rulenode/rulenode-core-config.css"}, |
39 | - configDirective = "tbEnrichmentNodeRelatedAttributesConfig", | |
40 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
39 | + configDirective = "tbEnrichmentNodeRelatedAttributesConfig" | |
41 | 40 | ) |
42 | 41 | |
43 | 42 | public class TbGetRelatedAttributeNode extends TbEntityGetAttrNode<EntityId> { | ... | ... |
... | ... | @@ -67,8 +67,7 @@ import static org.thingsboard.server.common.data.kv.Aggregation.NONE; |
67 | 67 | "Also, the rule node allows you to select telemetry sampling order: <b>ASC</b> or <b>DESC</b>. </br>" + |
68 | 68 | "<b>Note</b>: The maximum size of the fetched array is 1000 records.\n ", |
69 | 69 | uiResources = {"static/rulenode/rulenode-core-config.js"}, |
70 | - configDirective = "tbEnrichmentNodeGetTelemetryFromDatabase", | |
71 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
70 | + configDirective = "tbEnrichmentNodeGetTelemetryFromDatabase" | |
72 | 71 | ) |
73 | 72 | public class TbGetTelemetryNode implements TbNode { |
74 | 73 | ... | ... |
... | ... | @@ -36,8 +36,7 @@ import org.thingsboard.server.common.data.rule.RuleChainType; |
36 | 36 | "To access those attributes in other nodes this template can be used " + |
37 | 37 | "<code>metadata.temperature</code>.", |
38 | 38 | uiResources = {"static/rulenode/rulenode-core-config.js", "static/rulenode/rulenode-core-config.css"}, |
39 | - configDirective = "tbEnrichmentNodeTenantAttributesConfig", | |
40 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
39 | + configDirective = "tbEnrichmentNodeTenantAttributesConfig" | |
41 | 40 | ) |
42 | 41 | public class TbGetTenantAttributeNode extends TbEntityGetAttrNode<TenantId> { |
43 | 42 | ... | ... |
... | ... | @@ -38,8 +38,7 @@ import org.thingsboard.server.common.msg.TbMsg; |
38 | 38 | "<b>Note:</b> only Device, Asset, and Entity View type are allowed.<br><br>" + |
39 | 39 | "If the originator of the message is not assigned to Tenant, or originator type is not supported - Message will be forwarded to <b>Failure</b> chain, otherwise, <b>Success</b> chain will be used.", |
40 | 40 | uiResources = {"static/rulenode/rulenode-core-config.js"}, |
41 | - configDirective = "tbEnrichmentNodeEntityDetailsConfig", | |
42 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
41 | + configDirective = "tbEnrichmentNodeEntityDetailsConfig" | |
43 | 42 | ) |
44 | 43 | public class TbGetTenantDetailsNode extends TbAbstractGetEntityDetailsNode<TbGetTenantDetailsNodeConfiguration> { |
45 | 44 | ... | ... |
... | ... | @@ -50,8 +50,7 @@ import java.util.concurrent.TimeoutException; |
50 | 50 | nodeDetails = "Will publish message payload to the MQTT broker with QoS <b>AT_LEAST_ONCE</b>.", |
51 | 51 | uiResources = {"static/rulenode/rulenode-core-config.js", "static/rulenode/rulenode-core-config.css"}, |
52 | 52 | configDirective = "tbActionNodeMqttConfig", |
53 | - icon = "call_split", | |
54 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
53 | + icon = "call_split" | |
55 | 54 | ) |
56 | 55 | public class TbMqttNode implements TbNode { |
57 | 56 | ... | ... |
... | ... | @@ -40,8 +40,7 @@ import static org.thingsboard.common.util.DonAsynchron.withCallback; |
40 | 40 | nodeDetails = "Will publish message payload to RabbitMQ queue.", |
41 | 41 | uiResources = {"static/rulenode/rulenode-core-config.js"}, |
42 | 42 | configDirective = "tbActionNodeRabbitMqConfig", |
43 | - iconUrl = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbDpzcGFjZT0icHJlc2VydmUiIHZlcnNpb249IjEuMSIgeT0iMHB4IiB4PSIwcHgiIHZpZXdCb3g9IjAgMCAxMDAwIDEwMDAiPjxwYXRoIHN0cm9rZS13aWR0aD0iLjg0OTU2IiBkPSJtODYwLjQ3IDQxNi4zMmgtMjYyLjAxYy0xMi45MTMgMC0yMy42MTgtMTAuNzA0LTIzLjYxOC0yMy42MTh2LTI3Mi43MWMwLTIwLjMwNS0xNi4yMjctMzYuMjc2LTM2LjI3Ni0zNi4yNzZoLTkzLjc5MmMtMjAuMzA1IDAtMzYuMjc2IDE2LjIyNy0zNi4yNzYgMzYuMjc2djI3MC44NGMtMC4yNTQ4NyAxNC4xMDMtMTEuNDY5IDI1LjU3Mi0yNS43NDIgMjUuNTcybC04NS42MzYgMC42Nzk2NWMtMTQuMTAzIDAtMjUuNTcyLTExLjQ2OS0yNS41NzItMjUuNTcybDAuNjc5NjUtMjcxLjUyYzAtMjAuMzA1LTE2LjIyNy0zNi4yNzYtMzYuMjc2LTM2LjI3NmgtOTMuNTM3Yy0yMC4zMDUgMC0zNi4yNzYgMTYuMjI3LTM2LjI3NiAzNi4yNzZ2NzYzLjg0YzAgMTguMDk2IDE0Ljc4MiAzMi40NTMgMzIuNDUzIDMyLjQ1M2g3MjIuODFjMTguMDk2IDAgMzIuNDUzLTE0Ljc4MiAzMi40NTMtMzIuNDUzdi00MzUuMzFjLTEuMTg5NC0xOC4xODEtMTUuMjkyLTMyLjE5OC0zMy4zODgtMzIuMTk4em0tMTIyLjY4IDI4Ny4wN2MwIDIzLjYxOC0xOC44NiA0Mi40NzgtNDIuNDc4IDQyLjQ3OGgtNzMuOTk3Yy0yMy42MTggMC00Mi40NzgtMTguODYtNDIuNDc4LTQyLjQ3OHYtNzQuMjUyYzAtMjMuNjE4IDE4Ljg2LTQyLjQ3OCA0Mi40NzgtNDIuNDc4aDczLjk5N2MyMy42MTggMCA0Mi40NzggMTguODYgNDIuNDc4IDQyLjQ3OHoiLz48L3N2Zz4=", | |
44 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
43 | + iconUrl = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbDpzcGFjZT0icHJlc2VydmUiIHZlcnNpb249IjEuMSIgeT0iMHB4IiB4PSIwcHgiIHZpZXdCb3g9IjAgMCAxMDAwIDEwMDAiPjxwYXRoIHN0cm9rZS13aWR0aD0iLjg0OTU2IiBkPSJtODYwLjQ3IDQxNi4zMmgtMjYyLjAxYy0xMi45MTMgMC0yMy42MTgtMTAuNzA0LTIzLjYxOC0yMy42MTh2LTI3Mi43MWMwLTIwLjMwNS0xNi4yMjctMzYuMjc2LTM2LjI3Ni0zNi4yNzZoLTkzLjc5MmMtMjAuMzA1IDAtMzYuMjc2IDE2LjIyNy0zNi4yNzYgMzYuMjc2djI3MC44NGMtMC4yNTQ4NyAxNC4xMDMtMTEuNDY5IDI1LjU3Mi0yNS43NDIgMjUuNTcybC04NS42MzYgMC42Nzk2NWMtMTQuMTAzIDAtMjUuNTcyLTExLjQ2OS0yNS41NzItMjUuNTcybDAuNjc5NjUtMjcxLjUyYzAtMjAuMzA1LTE2LjIyNy0zNi4yNzYtMzYuMjc2LTM2LjI3NmgtOTMuNTM3Yy0yMC4zMDUgMC0zNi4yNzYgMTYuMjI3LTM2LjI3NiAzNi4yNzZ2NzYzLjg0YzAgMTguMDk2IDE0Ljc4MiAzMi40NTMgMzIuNDUzIDMyLjQ1M2g3MjIuODFjMTguMDk2IDAgMzIuNDUzLTE0Ljc4MiAzMi40NTMtMzIuNDUzdi00MzUuMzFjLTEuMTg5NC0xOC4xODEtMTUuMjkyLTMyLjE5OC0zMy4zODgtMzIuMTk4em0tMTIyLjY4IDI4Ny4wN2MwIDIzLjYxOC0xOC44NiA0Mi40NzgtNDIuNDc4IDQyLjQ3OGgtNzMuOTk3Yy0yMy42MTggMC00Mi40NzgtMTguODYtNDIuNDc4LTQyLjQ3OHYtNzQuMjUyYzAtMjMuNjE4IDE4Ljg2LTQyLjQ3OCA0Mi40NzgtNDIuNDc4aDczLjk5N2MyMy42MTggMCA0Mi40NzggMTguODYgNDIuNDc4IDQyLjQ3OHoiLz48L3N2Zz4=" | |
45 | 44 | ) |
46 | 45 | public class TbRabbitMqNode implements TbNode { |
47 | 46 | ... | ... |
... | ... | @@ -42,8 +42,7 @@ import org.thingsboard.server.common.msg.TbMsg; |
42 | 42 | "and if your proxy with auth, the next ones should be added: \"tb.proxy.user\" and \"tb.proxy.password\" to the thingsboard.conf file.", |
43 | 43 | uiResources = {"static/rulenode/rulenode-core-config.js"}, |
44 | 44 | configDirective = "tbActionNodeRestApiCallConfig", |
45 | - iconUrl = "data:image/svg+xml;base64,PHN2ZyBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MTIgNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbDpzcGFjZT0icHJlc2VydmUiIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiB2ZXJzaW9uPSIxLjEiIHk9IjBweCIgeD0iMHB4Ij48ZyB0cmFuc2Zvcm09Im1hdHJpeCguOTQ5NzUgMCAwIC45NDk3NSAxNy4xMiAyNi40OTIpIj48cGF0aCBkPSJtMTY5LjExIDEwOC41NGMtOS45MDY2IDAuMDczNC0xOS4wMTQgNi41NzI0LTIyLjAxNCAxNi40NjlsLTY5Ljk5MyAyMzEuMDhjLTMuNjkwNCAxMi4xODEgMy4yODkyIDI1LjIyIDE1LjQ2OSAyOC45MSAyLjIyNTkgMC42NzQ4MSA0LjQ5NjkgMSA2LjcyODUgMSA5Ljk3MjEgMCAxOS4xNjUtNi41MTUzIDIyLjE4Mi0xNi40NjdhNi41MjI0IDYuNTIyNCAwIDAgMCAwLjAwMiAtMC4wMDJsNjkuOTktMjMxLjA3YTYuNTIyNCA2LjUyMjQgMCAwIDAgMCAtMC4wMDJjMy42ODU1LTEyLjE4MS0zLjI4Ny0yNS4yMjUtMTUuNDcxLTI4LjkxMi0yLjI4MjUtMC42OTE0NS00LjYxMTYtMS4wMTY5LTYuODk4NC0xem04NC45ODggMGMtOS45MDQ4IDAuMDczNC0xOS4wMTggNi41Njc1LTIyLjAxOCAxNi40NjlsLTY5Ljk4NiAyMzEuMDhjLTMuNjg5OCAxMi4xNzkgMy4yODUzIDI1LjIxNyAxNS40NjUgMjguOTA4IDIuMjI5NyAwLjY3NjQ3IDQuNTAwOCAxLjAwMiA2LjczMjQgMS4wMDIgOS45NzIxIDAgMTkuMTY1LTYuNTE1MyAyMi4xODItMTYuNDY3YTYuNTIyNCA2LjUyMjQgMCAwIDAgMC4wMDIgLTAuMDAybDY5Ljk4OC0yMzEuMDdjMy42OTA4LTEyLjE4MS0zLjI4NTItMjUuMjIzLTE1LjQ2Ny0yOC45MTItMi4yODE0LTAuNjkyMzEtNC42MTA4LTEuMDE4OS02Ljg5ODQtMS4wMDJ6bS0yMTcuMjkgNDIuMjNjLTEyLjcyOS0wLjAwMDg3LTIzLjE4OCAxMC40NTYtMjMuMTg4IDIzLjE4NiAwLjAwMSAxMi43MjggMTAuNDU5IDIzLjE4NiAyMy4xODggMjMuMTg2IDEyLjcyNy0wLjAwMSAyMy4xODMtMTAuNDU5IDIzLjE4NC0yMy4xODYgMC4wMDA4NzYtMTIuNzI4LTEwLjQ1Ni0yMy4xODUtMjMuMTg0LTIzLjE4NnptMCAxNDYuNjRjLTEyLjcyNy0wLjAwMDg3LTIzLjE4NiAxMC40NTUtMjMuMTg4IDIzLjE4NC0wLjAwMDg3MyAxMi43MjkgMTAuNDU4IDIzLjE4OCAyMy4xODggMjMuMTg4IDEyLjcyOC0wLjAwMSAyMy4xODQtMTAuNDYgMjMuMTg0LTIzLjE4OC0wLjAwMS0xMi43MjYtMTAuNDU3LTIzLjE4My0yMy4xODQtMjMuMTg0em0yNzAuNzkgNDIuMjExYy0xMi43MjcgMC0yMy4xODQgMTAuNDU3LTIzLjE4NCAyMy4xODRzMTAuNDU1IDIzLjE4OCAyMy4xODQgMjMuMTg4aDE1NC45OGMxMi43MjkgMCAyMy4xODYtMTAuNDYgMjMuMTg2LTIzLjE4OCAwLjAwMS0xMi43MjgtMTAuNDU4LTIzLjE4NC0yMy4xODYtMjMuMTg0eiIgdHJhbnNmb3JtPSJtYXRyaXgoMS4wMzc2IDAgMCAxLjAzNzYgLTcuNTY3NiAtMTQuOTI1KSIgc3Ryb2tlLXdpZHRoPSIxLjI2OTMiLz48L2c+PC9zdmc+", | |
46 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
45 | + iconUrl = "data:image/svg+xml;base64,PHN2ZyBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MTIgNTEyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbDpzcGFjZT0icHJlc2VydmUiIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiB2ZXJzaW9uPSIxLjEiIHk9IjBweCIgeD0iMHB4Ij48ZyB0cmFuc2Zvcm09Im1hdHJpeCguOTQ5NzUgMCAwIC45NDk3NSAxNy4xMiAyNi40OTIpIj48cGF0aCBkPSJtMTY5LjExIDEwOC41NGMtOS45MDY2IDAuMDczNC0xOS4wMTQgNi41NzI0LTIyLjAxNCAxNi40NjlsLTY5Ljk5MyAyMzEuMDhjLTMuNjkwNCAxMi4xODEgMy4yODkyIDI1LjIyIDE1LjQ2OSAyOC45MSAyLjIyNTkgMC42NzQ4MSA0LjQ5NjkgMSA2LjcyODUgMSA5Ljk3MjEgMCAxOS4xNjUtNi41MTUzIDIyLjE4Mi0xNi40NjdhNi41MjI0IDYuNTIyNCAwIDAgMCAwLjAwMiAtMC4wMDJsNjkuOTktMjMxLjA3YTYuNTIyNCA2LjUyMjQgMCAwIDAgMCAtMC4wMDJjMy42ODU1LTEyLjE4MS0zLjI4Ny0yNS4yMjUtMTUuNDcxLTI4LjkxMi0yLjI4MjUtMC42OTE0NS00LjYxMTYtMS4wMTY5LTYuODk4NC0xem04NC45ODggMGMtOS45MDQ4IDAuMDczNC0xOS4wMTggNi41Njc1LTIyLjAxOCAxNi40NjlsLTY5Ljk4NiAyMzEuMDhjLTMuNjg5OCAxMi4xNzkgMy4yODUzIDI1LjIxNyAxNS40NjUgMjguOTA4IDIuMjI5NyAwLjY3NjQ3IDQuNTAwOCAxLjAwMiA2LjczMjQgMS4wMDIgOS45NzIxIDAgMTkuMTY1LTYuNTE1MyAyMi4xODItMTYuNDY3YTYuNTIyNCA2LjUyMjQgMCAwIDAgMC4wMDIgLTAuMDAybDY5Ljk4OC0yMzEuMDdjMy42OTA4LTEyLjE4MS0zLjI4NTItMjUuMjIzLTE1LjQ2Ny0yOC45MTItMi4yODE0LTAuNjkyMzEtNC42MTA4LTEuMDE4OS02Ljg5ODQtMS4wMDJ6bS0yMTcuMjkgNDIuMjNjLTEyLjcyOS0wLjAwMDg3LTIzLjE4OCAxMC40NTYtMjMuMTg4IDIzLjE4NiAwLjAwMSAxMi43MjggMTAuNDU5IDIzLjE4NiAyMy4xODggMjMuMTg2IDEyLjcyNy0wLjAwMSAyMy4xODMtMTAuNDU5IDIzLjE4NC0yMy4xODYgMC4wMDA4NzYtMTIuNzI4LTEwLjQ1Ni0yMy4xODUtMjMuMTg0LTIzLjE4NnptMCAxNDYuNjRjLTEyLjcyNy0wLjAwMDg3LTIzLjE4NiAxMC40NTUtMjMuMTg4IDIzLjE4NC0wLjAwMDg3MyAxMi43MjkgMTAuNDU4IDIzLjE4OCAyMy4xODggMjMuMTg4IDEyLjcyOC0wLjAwMSAyMy4xODQtMTAuNDYgMjMuMTg0LTIzLjE4OC0wLjAwMS0xMi43MjYtMTAuNDU3LTIzLjE4My0yMy4xODQtMjMuMTg0em0yNzAuNzkgNDIuMjExYy0xMi43MjcgMC0yMy4xODQgMTAuNDU3LTIzLjE4NCAyMy4xODRzMTAuNDU1IDIzLjE4OCAyMy4xODQgMjMuMTg4aDE1NC45OGMxMi43MjkgMCAyMy4xODYtMTAuNDYgMjMuMTg2LTIzLjE4OCAwLjAwMS0xMi43MjgtMTAuNDU4LTIzLjE4NC0yMy4xODYtMjMuMTg0eiIgdHJhbnNmb3JtPSJtYXRyaXgoMS4wMzc2IDAgMCAxLjAzNzYgLTcuNTY3NiAtMTQuOTI1KSIgc3Ryb2tlLXdpZHRoPSIxLjI2OTMiLz48L2c+PC9zdmc+" | |
47 | 46 | ) |
48 | 47 | public class TbRestApiCallNode implements TbNode { |
49 | 48 | ... | ... |
... | ... | @@ -40,8 +40,7 @@ import java.util.UUID; |
40 | 40 | nodeDetails = "Expects messages with any message type. Will forward message body to the device.", |
41 | 41 | uiResources = {"static/rulenode/rulenode-core-config.js"}, |
42 | 42 | configDirective = "tbActionNodeRpcReplyConfig", |
43 | - icon = "call_merge", | |
44 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
43 | + icon = "call_merge" | |
45 | 44 | ) |
46 | 45 | public class TbSendRPCReplyNode implements TbNode { |
47 | 46 | ... | ... |
... | ... | @@ -51,8 +51,7 @@ import java.util.concurrent.TimeUnit; |
51 | 51 | "If the RPC call request is originated by REST API call from user, will forward the response to user immediately.", |
52 | 52 | uiResources = {"static/rulenode/rulenode-core-config.js"}, |
53 | 53 | configDirective = "tbActionNodeRpcRequestConfig", |
54 | - icon = "call_made", | |
55 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
54 | + icon = "call_made" | |
56 | 55 | ) |
57 | 56 | public class TbSendRPCRequestNode implements TbNode { |
58 | 57 | ... | ... |
... | ... | @@ -45,8 +45,7 @@ import java.util.Set; |
45 | 45 | nodeDetails = "Saves entity attributes based on configurable scope parameter. Expects messages with 'POST_ATTRIBUTES_REQUEST' message type", |
46 | 46 | uiResources = {"static/rulenode/rulenode-core-config.js", "static/rulenode/rulenode-core-config.css"}, |
47 | 47 | configDirective = "tbActionNodeAttributesConfig", |
48 | - icon = "file_upload", | |
49 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
48 | + icon = "file_upload" | |
50 | 49 | ) |
51 | 50 | public class TbMsgAttributesNode implements TbNode { |
52 | 51 | ... | ... |
... | ... | @@ -46,8 +46,7 @@ import java.util.Map; |
46 | 46 | nodeDetails = "Saves timeseries telemetry data based on configurable TTL parameter. Expects messages with 'POST_TELEMETRY_REQUEST' message type", |
47 | 47 | uiResources = {"static/rulenode/rulenode-core-config.js", "static/rulenode/rulenode-core-config.css"}, |
48 | 48 | configDirective = "tbActionNodeTimeseriesConfig", |
49 | - icon = "file_upload", | |
50 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
49 | + icon = "file_upload" | |
51 | 50 | ) |
52 | 51 | public class TbMsgTimeseriesNode implements TbNode { |
53 | 52 | ... | ... |
... | ... | @@ -39,8 +39,7 @@ import static org.thingsboard.rule.engine.api.TbRelationTypes.SUCCESS; |
39 | 39 | "Subsequent messages will not be processed until the previous message processing is completed or timeout event occurs.\n" + |
40 | 40 | "Size of the queue per originator and timeout values are configurable on a system level", |
41 | 41 | uiResources = {"static/rulenode/rulenode-core-config.js"}, |
42 | - configDirective = "tbNodeEmptyConfig", | |
43 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
42 | + configDirective = "tbNodeEmptyConfig" | |
44 | 43 | ) |
45 | 44 | @Deprecated |
46 | 45 | public class TbSynchronizationBeginNode implements TbNode { | ... | ... |
... | ... | @@ -39,8 +39,7 @@ import static org.thingsboard.rule.engine.api.TbRelationTypes.SUCCESS; |
39 | 39 | nodeDescription = "This Node is now deprecated. Use \"Checkpoint\" instead.", |
40 | 40 | nodeDetails = "", |
41 | 41 | uiResources = {"static/rulenode/rulenode-core-config.js"}, |
42 | - configDirective = ("tbNodeEmptyConfig"), | |
43 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
42 | + configDirective = ("tbNodeEmptyConfig") | |
44 | 43 | ) |
45 | 44 | @Deprecated |
46 | 45 | public class TbSynchronizationEndNode implements TbNode { | ... | ... |
... | ... | @@ -47,8 +47,7 @@ import java.util.HashSet; |
47 | 47 | "Alarm Originator found only in case original Originator is <code>Alarm</code> entity.", |
48 | 48 | uiResources = {"static/rulenode/rulenode-core-config.js", "static/rulenode/rulenode-core-config.css"}, |
49 | 49 | configDirective = "tbTransformationNodeChangeOriginatorConfig", |
50 | - icon = "find_replace", | |
51 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
50 | + icon = "find_replace" | |
52 | 51 | ) |
53 | 52 | public class TbChangeOriginatorNode extends TbAbstractTransformNode { |
54 | 53 | ... | ... |
... | ... | @@ -38,8 +38,7 @@ import static org.thingsboard.rule.engine.api.TbRelationTypes.SUCCESS; |
38 | 38 | "<code>{ msg: <i style=\"color: #666;\">new payload</i>,<br/>   metadata: <i style=\"color: #666;\">new metadata</i>,<br/>   msgType: <i style=\"color: #666;\">new msgType</i> }</code><br/>" + |
39 | 39 | "All fields in resulting object are optional and will be taken from original message if not specified.", |
40 | 40 | uiResources = {"static/rulenode/rulenode-core-config.js", "static/rulenode/rulenode-core-config.css"}, |
41 | - configDirective = "tbTransformationNodeScriptConfig", | |
42 | - ruleChainTypes = {RuleChainType.CORE, RuleChainType.EDGE} | |
41 | + configDirective = "tbTransformationNodeScriptConfig" | |
43 | 42 | ) |
44 | 43 | public class TbTransformMsgNode extends TbAbstractTransformNode { |
45 | 44 | ... | ... |