From 7d19a1d5e9150f84923990b6149dbf7176e085f0 Mon Sep 17 00:00:00 2001 From: Igor Kulikov Date: Tue, 27 Sep 2022 16:12:01 +0300 Subject: [PATCH] Update assetCreatedMsg and alarmActionMsg to handle rule chain and queue name from asset profile --- .../actors/ruleChain/DefaultTbContext.java | 32 +++++++++++++++++-- .../rule/engine/api/TbContext.java | 4 +++ 2 files changed, 34 insertions(+), 2 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 b6c400685c..afff955bbb 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 @@ -43,6 +43,8 @@ import org.thingsboard.server.common.data.StringUtils; import org.thingsboard.server.common.data.TenantProfile; import org.thingsboard.server.common.data.alarm.Alarm; import org.thingsboard.server.common.data.asset.Asset; +import org.thingsboard.server.common.data.asset.AssetProfile; +import org.thingsboard.server.common.data.id.AssetId; import org.thingsboard.server.common.data.id.CustomerId; import org.thingsboard.server.common.data.id.DeviceId; import org.thingsboard.server.common.data.id.EdgeId; @@ -328,7 +330,7 @@ class DefaultTbContext implements TbContext { public TbMsg deviceCreatedMsg(Device device, RuleNodeId ruleNodeId) { RuleChainId ruleChainId = null; - String queueName = null; + String queueName = null; if (device.getDeviceProfileId() != null) { DeviceProfile deviceProfile = mainCtx.getDeviceProfileCache().find(device.getDeviceProfileId()); if (deviceProfile == null) { @@ -342,7 +344,18 @@ class DefaultTbContext implements TbContext { } public TbMsg assetCreatedMsg(Asset asset, RuleNodeId ruleNodeId) { - return entityActionMsg(asset, asset.getId(), ruleNodeId, DataConstants.ENTITY_CREATED); + RuleChainId ruleChainId = null; + String queueName = null; + if (asset.getAssetProfileId() != null) { + AssetProfile assetProfile = mainCtx.getAssetProfileCache().find(asset.getAssetProfileId()); + if (assetProfile == null) { + log.warn("[{}] Asset profile is null!", asset.getAssetProfileId()); + } else { + ruleChainId = assetProfile.getDefaultRuleChainId(); + queueName = assetProfile.getDefaultQueueName(); + } + } + return entityActionMsg(asset, asset.getId(), ruleNodeId, DataConstants.ENTITY_CREATED, queueName, ruleChainId); } public TbMsg alarmActionMsg(Alarm alarm, RuleNodeId ruleNodeId, String action) { @@ -357,6 +370,15 @@ class DefaultTbContext implements TbContext { ruleChainId = deviceProfile.getDefaultRuleChainId(); queueName = deviceProfile.getDefaultQueueName(); } + } else if (EntityType.ASSET.equals(alarm.getOriginator().getEntityType())) { + AssetId assetId = new AssetId(alarm.getOriginator().getId()); + AssetProfile assetProfile = mainCtx.getAssetProfileCache().get(getTenantId(), assetId); + if (assetProfile == null) { + log.warn("[{}] Asset profile is null!", assetId); + } else { + ruleChainId = assetProfile.getDefaultRuleChainId(); + queueName = assetProfile.getDefaultQueueName(); + } } return entityActionMsg(alarm, alarm.getId(), ruleNodeId, action, queueName, ruleChainId); } @@ -653,9 +675,15 @@ class DefaultTbContext implements TbContext { mainCtx.getDeviceProfileCache().addListener(getTenantId(), getSelfId(), profileListener, deviceListener); } + @Override + public void addAssetProfileListeners(Consumer profileListener, BiConsumer assetListener) { + mainCtx.getAssetProfileCache().addListener(getTenantId(), getSelfId(), profileListener, assetListener); + } + @Override public void removeListeners() { mainCtx.getDeviceProfileCache().removeListener(getTenantId(), getSelfId()); + mainCtx.getAssetProfileCache().removeListener(getTenantId(), getSelfId()); mainCtx.getTenantProfileCache().removeListener(getTenantId(), getSelfId()); } 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 2feaf3fd49..c9c2bdc424 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 @@ -25,6 +25,8 @@ import org.thingsboard.server.common.data.DeviceProfile; import org.thingsboard.server.common.data.TenantProfile; import org.thingsboard.server.common.data.alarm.Alarm; import org.thingsboard.server.common.data.asset.Asset; +import org.thingsboard.server.common.data.asset.AssetProfile; +import org.thingsboard.server.common.data.id.AssetId; import org.thingsboard.server.common.data.id.CustomerId; import org.thingsboard.server.common.data.id.DeviceId; import org.thingsboard.server.common.data.id.EdgeId; @@ -288,6 +290,8 @@ public interface TbContext { void addDeviceProfileListeners(Consumer listener, BiConsumer deviceListener); + void addAssetProfileListeners(Consumer listener, BiConsumer assetListener); + void removeListeners(); TenantProfile getTenantProfile();