|
|
|
@ -339,31 +339,28 @@ class DefaultTbContext implements TbContext { |
|
|
|
if (device.getDeviceProfileId() != null) { |
|
|
|
deviceProfile = mainCtx.getDeviceProfileCache().find(device.getDeviceProfileId()); |
|
|
|
} |
|
|
|
return entityActionMsg(device, device.getId(), ruleNodeId, DataConstants.ENTITY_CREATED, deviceProfile); |
|
|
|
return deviceActionMsg(device, device.getId(), ruleNodeId, DataConstants.ENTITY_CREATED, deviceProfile); |
|
|
|
} |
|
|
|
|
|
|
|
public TbMsg assetCreatedMsg(Asset asset, RuleNodeId ruleNodeId) { |
|
|
|
RuleChainId ruleChainId = null; |
|
|
|
String queueName = null; |
|
|
|
AssetProfile assetProfile = 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(); |
|
|
|
} |
|
|
|
assetProfile = mainCtx.getAssetProfileCache().find(asset.getAssetProfileId()); |
|
|
|
} |
|
|
|
return entityActionMsg(asset, asset.getId(), ruleNodeId, DataConstants.ENTITY_CREATED, queueName, ruleChainId); |
|
|
|
return assetActionMsg(asset, asset.getId(), ruleNodeId, DataConstants.ENTITY_CREATED, assetProfile); |
|
|
|
} |
|
|
|
|
|
|
|
public TbMsg alarmActionMsg(Alarm alarm, RuleNodeId ruleNodeId, String action) { |
|
|
|
DeviceProfile deviceProfile = null; |
|
|
|
if (EntityType.DEVICE.equals(alarm.getOriginator().getEntityType())) { |
|
|
|
DeviceId deviceId = new DeviceId(alarm.getOriginator().getId()); |
|
|
|
deviceProfile = mainCtx.getDeviceProfileCache().get(getTenantId(), deviceId); |
|
|
|
DeviceProfile deviceProfile = mainCtx.getDeviceProfileCache().get(getTenantId(), deviceId); |
|
|
|
return deviceActionMsg(alarm, alarm.getOriginator(), ruleNodeId, action, deviceProfile); |
|
|
|
} else if (EntityType.ASSET.equals(alarm.getOriginator().getEntityType())) { |
|
|
|
AssetId assetId = new AssetId(alarm.getOriginator().getId()); |
|
|
|
AssetProfile assetProfile = mainCtx.getAssetProfileCache().get(getTenantId(), assetId); |
|
|
|
return assetActionMsg(alarm, alarm.getOriginator(), ruleNodeId, action, assetProfile); |
|
|
|
} |
|
|
|
return entityActionMsg(alarm, alarm.getOriginator(), ruleNodeId, action, deviceProfile); |
|
|
|
return entityActionMsg(alarm, alarm.getOriginator(), ruleNodeId, action); |
|
|
|
} |
|
|
|
|
|
|
|
public TbMsg attributesUpdatedActionMsg(EntityId originator, RuleNodeId ruleNodeId, String scope, List<AttributeKvEntry> attributes) { |
|
|
|
@ -384,14 +381,18 @@ class DefaultTbContext implements TbContext { |
|
|
|
} |
|
|
|
|
|
|
|
private TbMsg attributesActionMsg(EntityId originator, RuleNodeId ruleNodeId, String scope, String action, String msgData) { |
|
|
|
DeviceProfile deviceProfile = null; |
|
|
|
TbMsgMetaData tbMsgMetaData = getActionMetaData(ruleNodeId); |
|
|
|
tbMsgMetaData.putValue("scope", scope); |
|
|
|
if (EntityType.DEVICE.equals(originator.getEntityType())) { |
|
|
|
DeviceId deviceId = new DeviceId(originator.getId()); |
|
|
|
deviceProfile = mainCtx.getDeviceProfileCache().get(getTenantId(), deviceId); |
|
|
|
DeviceProfile deviceProfile = mainCtx.getDeviceProfileCache().get(getTenantId(), deviceId); |
|
|
|
return deviceActionMsg(originator, tbMsgMetaData, msgData, action, deviceProfile); |
|
|
|
} else if (EntityType.ASSET.equals(originator.getEntityType())) { |
|
|
|
AssetId assetId = new AssetId(originator.getId()); |
|
|
|
AssetProfile assetProfile = mainCtx.getAssetProfileCache().get(getTenantId(), assetId); |
|
|
|
return assetActionMsg(originator, tbMsgMetaData, msgData, action, assetProfile); |
|
|
|
} |
|
|
|
TbMsgMetaData tbMsgMetaData = getActionMetaData(ruleNodeId); |
|
|
|
tbMsgMetaData.putValue("scope", scope); |
|
|
|
return entityActionMsg(originator, tbMsgMetaData, msgData, action, deviceProfile); |
|
|
|
return entityActionMsg(originator, tbMsgMetaData, msgData, action, null, null); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@ -399,27 +400,51 @@ class DefaultTbContext implements TbContext { |
|
|
|
mainCtx.getClusterService().onEdgeEventUpdate(tenantId, edgeId); |
|
|
|
} |
|
|
|
|
|
|
|
public <E, I extends EntityId> TbMsg entityActionMsg(E entity, I id, RuleNodeId ruleNodeId, String action) { |
|
|
|
return entityActionMsg(entity, id, ruleNodeId, action, null); |
|
|
|
public <E, I extends EntityId> TbMsg deviceActionMsg(E entity, I id, RuleNodeId ruleNodeId, String action, DeviceProfile deviceProfile) { |
|
|
|
try { |
|
|
|
return deviceActionMsg(id, getActionMetaData(ruleNodeId), mapper.writeValueAsString(mapper.valueToTree(entity)), action, deviceProfile); |
|
|
|
} catch (JsonProcessingException | IllegalArgumentException e) { |
|
|
|
throw new RuntimeException("Failed to process " + id.getEntityType().name().toLowerCase() + " " + action + " msg: " + e); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public <E, I extends EntityId> TbMsg entityActionMsg(E entity, I id, RuleNodeId ruleNodeId, String action, DeviceProfile deviceProfile) { |
|
|
|
public <E, I extends EntityId> TbMsg assetActionMsg(E entity, I id, RuleNodeId ruleNodeId, String action, AssetProfile assetProfile) { |
|
|
|
try { |
|
|
|
return entityActionMsg(id, getActionMetaData(ruleNodeId), mapper.writeValueAsString(mapper.valueToTree(entity)), action, deviceProfile); |
|
|
|
return assetActionMsg(id, getActionMetaData(ruleNodeId), mapper.writeValueAsString(mapper.valueToTree(entity)), action, assetProfile); |
|
|
|
} catch (JsonProcessingException | IllegalArgumentException e) { |
|
|
|
throw new RuntimeException("Failed to process " + id.getEntityType().name().toLowerCase() + " " + action + " msg: " + e); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public <I extends EntityId> TbMsg entityActionMsg(I id, TbMsgMetaData msgMetaData, String msgData, String action, DeviceProfile deviceProfile) { |
|
|
|
public <I extends EntityId> TbMsg assetActionMsg(I id, TbMsgMetaData msgMetaData, String msgData, String action, AssetProfile assetProfile) { |
|
|
|
RuleChainId ruleChainId = null; |
|
|
|
String queueName = null; |
|
|
|
if (deviceProfile == null) { |
|
|
|
log.warn("Device profile is null!"); |
|
|
|
} else { |
|
|
|
if (assetProfile != null) { |
|
|
|
ruleChainId = assetProfile.getDefaultRuleChainId(); |
|
|
|
queueName = assetProfile.getDefaultQueueName(); |
|
|
|
} |
|
|
|
return entityActionMsg(id, msgMetaData, msgData, action, ruleChainId, queueName); |
|
|
|
} |
|
|
|
|
|
|
|
public <I extends EntityId> TbMsg deviceActionMsg(I id, TbMsgMetaData msgMetaData, String msgData, String action, DeviceProfile deviceProfile) { |
|
|
|
RuleChainId ruleChainId = null; |
|
|
|
String queueName = null; |
|
|
|
if (deviceProfile != null) { |
|
|
|
ruleChainId = deviceProfile.getDefaultRuleChainId(); |
|
|
|
queueName = deviceProfile.getDefaultQueueName(); |
|
|
|
} |
|
|
|
return entityActionMsg(id, msgMetaData, msgData, action, ruleChainId, queueName); |
|
|
|
} |
|
|
|
|
|
|
|
public <E, I extends EntityId> TbMsg entityActionMsg(E entity, I id, RuleNodeId ruleNodeId, String action) { |
|
|
|
try { |
|
|
|
return entityActionMsg(id, getActionMetaData(ruleNodeId), mapper.writeValueAsString(mapper.valueToTree(entity)), action, null, null); |
|
|
|
} catch (JsonProcessingException | IllegalArgumentException e) { |
|
|
|
throw new RuntimeException("Failed to process " + id.getEntityType().name().toLowerCase() + " " + action + " msg: " + e); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private <I extends EntityId> TbMsg entityActionMsg(I id, TbMsgMetaData msgMetaData, String msgData, String action, RuleChainId ruleChainId, String queueName) { |
|
|
|
return TbMsg.newMsg(queueName, action, id, msgMetaData, msgData, ruleChainId, null); |
|
|
|
} |
|
|
|
|
|
|
|
|