Use IDs instead of names
This commit is contained in:
parent
c677b1bdc3
commit
1a83dbc8e3
@ -224,6 +224,7 @@ public class RuleChainActorMessageProcessor extends ComponentMsgProcessor<RuleCh
|
|||||||
if (targetCtx != null) {
|
if (targetCtx != null) {
|
||||||
log.trace("[{}][{}] Pushing message to target rule node", entityId, targetId);
|
log.trace("[{}][{}] Pushing message to target rule node", entityId, targetId);
|
||||||
pushMsgToNode(targetCtx, msg, "");
|
pushMsgToNode(targetCtx, msg, "");
|
||||||
|
pushUpdatesToEdges(msg);
|
||||||
} else {
|
} else {
|
||||||
log.trace("[{}][{}] Rule node does not exist. Probably old message", entityId, targetId);
|
log.trace("[{}][{}] Rule node does not exist. Probably old message", entityId, targetId);
|
||||||
msg.getCallback().onSuccess();
|
msg.getCallback().onSuccess();
|
||||||
@ -346,7 +347,6 @@ public class RuleChainActorMessageProcessor extends ComponentMsgProcessor<RuleCh
|
|||||||
|
|
||||||
private void pushMsgToNode(RuleNodeCtx nodeCtx, TbMsg msg, String fromRelationType) {
|
private void pushMsgToNode(RuleNodeCtx nodeCtx, TbMsg msg, String fromRelationType) {
|
||||||
if (nodeCtx != null) {
|
if (nodeCtx != null) {
|
||||||
pushUpdatesToEdges(msg);
|
|
||||||
nodeCtx.getSelfActor().tell(new RuleChainToRuleNodeMsg(new DefaultTbContext(systemContext, nodeCtx), msg, fromRelationType), self);
|
nodeCtx.getSelfActor().tell(new RuleChainToRuleNodeMsg(new DefaultTbContext(systemContext, nodeCtx), msg, fromRelationType), self);
|
||||||
} else {
|
} else {
|
||||||
log.error("[{}][{}] RuleNodeCtx is empty", entityId, ruleChainName);
|
log.error("[{}][{}] RuleNodeCtx is empty", entityId, ruleChainName);
|
||||||
|
|||||||
@ -274,7 +274,7 @@ public final class EdgeGrpcSession implements Closeable {
|
|||||||
, objectMapper.writeValueAsString(entityNode));
|
, objectMapper.writeValueAsString(entityNode));
|
||||||
log.debug("Sending donwlink entity data msg, entityName [{}], tbMsg [{}]", finalEntityName, tbMsg);
|
log.debug("Sending donwlink entity data msg, entityName [{}], tbMsg [{}]", finalEntityName, tbMsg);
|
||||||
outputStream.onNext(ResponseMsg.newBuilder()
|
outputStream.onNext(ResponseMsg.newBuilder()
|
||||||
.setDownlinkMsg(constructDownlinkEntityDataMsg(finalEntityName, tbMsg))
|
.setDownlinkMsg(constructDownlinkEntityDataMsg(finalEntityName, finalEntityId, tbMsg))
|
||||||
.build());
|
.build());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("[{}] Failed to send attribute updates to the edge", edge.getName(), e);
|
log.error("[{}] Failed to send attribute updates to the edge", edge.getName(), e);
|
||||||
@ -291,25 +291,29 @@ public final class EdgeGrpcSession implements Closeable {
|
|||||||
log.trace("Executing processCustomDownlinkMessage, entry [{}]", entry);
|
log.trace("Executing processCustomDownlinkMessage, entry [{}]", entry);
|
||||||
TbMsg tbMsg = TbMsg.fromBytes(Base64.decodeBase64(entry.getData()), TbMsgCallback.EMPTY);
|
TbMsg tbMsg = TbMsg.fromBytes(Base64.decodeBase64(entry.getData()), TbMsgCallback.EMPTY);
|
||||||
String entityName = null;
|
String entityName = null;
|
||||||
|
EntityId entityId = null;
|
||||||
switch (entry.getEntityType()) {
|
switch (entry.getEntityType()) {
|
||||||
case DEVICE:
|
case DEVICE:
|
||||||
Device device = ctx.getDeviceService().findDeviceById(edge.getTenantId(), new DeviceId(tbMsg.getOriginator().getId()));
|
Device device = ctx.getDeviceService().findDeviceById(edge.getTenantId(), new DeviceId(tbMsg.getOriginator().getId()));
|
||||||
entityName = device.getName();
|
entityName = device.getName();
|
||||||
|
entityId = device.getId();
|
||||||
break;
|
break;
|
||||||
case ASSET:
|
case ASSET:
|
||||||
Asset asset = ctx.getAssetService().findAssetById(edge.getTenantId(), new AssetId(tbMsg.getOriginator().getId()));
|
Asset asset = ctx.getAssetService().findAssetById(edge.getTenantId(), new AssetId(tbMsg.getOriginator().getId()));
|
||||||
entityName = asset.getName();
|
entityName = asset.getName();
|
||||||
|
entityId = asset.getId();
|
||||||
break;
|
break;
|
||||||
case ENTITY_VIEW:
|
case ENTITY_VIEW:
|
||||||
EntityView entityView = ctx.getEntityViewService().findEntityViewById(edge.getTenantId(), new EntityViewId(tbMsg.getOriginator().getId()));
|
EntityView entityView = ctx.getEntityViewService().findEntityViewById(edge.getTenantId(), new EntityViewId(tbMsg.getOriginator().getId()));
|
||||||
entityName = entityView.getName();
|
entityName = entityView.getName();
|
||||||
|
entityId = entityView.getId();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
if (entityName != null) {
|
if (entityName != null && entityId != null) {
|
||||||
log.debug("Sending donwlink entity data msg, entityName [{}], tbMsg [{}]", entityName, tbMsg);
|
log.debug("Sending downlink entity data msg, entityName [{}], tbMsg [{}]", entityName, tbMsg);
|
||||||
outputStream.onNext(ResponseMsg.newBuilder()
|
outputStream.onNext(ResponseMsg.newBuilder()
|
||||||
.setDownlinkMsg(constructDownlinkEntityDataMsg(entityName, tbMsg))
|
.setDownlinkMsg(constructDownlinkEntityDataMsg(entityName, entityId, tbMsg))
|
||||||
.build());
|
.build());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -482,10 +486,13 @@ public final class EdgeGrpcSession implements Closeable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private DownlinkMsg constructDownlinkEntityDataMsg(String entityName, TbMsg tbMsg) {
|
private DownlinkMsg constructDownlinkEntityDataMsg(String entityName, EntityId entityId, TbMsg tbMsg) {
|
||||||
EntityDataProto entityData = EntityDataProto.newBuilder()
|
EntityDataProto entityData = EntityDataProto.newBuilder()
|
||||||
.setEntityName(entityName)
|
.setEntityName(entityName)
|
||||||
.setTbMsg(ByteString.copyFrom(TbMsg.toByteArray(tbMsg))).build();
|
.setTbMsg(ByteString.copyFrom(TbMsg.toByteArray(tbMsg)))
|
||||||
|
.setEntityIdMSB(entityId.getId().getMostSignificantBits())
|
||||||
|
.setEntityIdLSB(entityId.getId().getLeastSignificantBits())
|
||||||
|
.build();
|
||||||
|
|
||||||
DownlinkMsg.Builder builder = DownlinkMsg.newBuilder()
|
DownlinkMsg.Builder builder = DownlinkMsg.newBuilder()
|
||||||
.addAllEntityData(Collections.singletonList(entityData));
|
.addAllEntityData(Collections.singletonList(entityData));
|
||||||
|
|||||||
@ -28,6 +28,8 @@ public class AssetUpdateMsgConstructor {
|
|||||||
public AssetUpdateMsg constructAssetUpdatedMsg(UpdateMsgType msgType, Asset asset) {
|
public AssetUpdateMsg constructAssetUpdatedMsg(UpdateMsgType msgType, Asset asset) {
|
||||||
AssetUpdateMsg.Builder builder = AssetUpdateMsg.newBuilder()
|
AssetUpdateMsg.Builder builder = AssetUpdateMsg.newBuilder()
|
||||||
.setMsgType(msgType)
|
.setMsgType(msgType)
|
||||||
|
.setIdMSB(asset.getId().getId().getMostSignificantBits())
|
||||||
|
.setIdLSB(asset.getId().getId().getLeastSignificantBits())
|
||||||
.setName(asset.getName())
|
.setName(asset.getName())
|
||||||
.setType(asset.getType());
|
.setType(asset.getType());
|
||||||
if (asset.getLabel() != null) {
|
if (asset.getLabel() != null) {
|
||||||
|
|||||||
@ -34,6 +34,8 @@ public class DeviceUpdateMsgConstructor {
|
|||||||
public DeviceUpdateMsg constructDeviceUpdatedMsg(UpdateMsgType msgType, Device device) {
|
public DeviceUpdateMsg constructDeviceUpdatedMsg(UpdateMsgType msgType, Device device) {
|
||||||
DeviceUpdateMsg.Builder builder = DeviceUpdateMsg.newBuilder()
|
DeviceUpdateMsg.Builder builder = DeviceUpdateMsg.newBuilder()
|
||||||
.setMsgType(msgType)
|
.setMsgType(msgType)
|
||||||
|
.setIdMSB(device.getId().getId().getMostSignificantBits())
|
||||||
|
.setIdLSB(device.getId().getId().getLeastSignificantBits())
|
||||||
.setName(device.getName())
|
.setName(device.getName())
|
||||||
.setType(device.getType());
|
.setType(device.getType());
|
||||||
if (device.getLabel() != null) {
|
if (device.getLabel() != null) {
|
||||||
|
|||||||
@ -16,16 +16,8 @@
|
|||||||
package org.thingsboard.server.service.edge.rpc.constructor;
|
package org.thingsboard.server.service.edge.rpc.constructor;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.thingsboard.server.common.data.Device;
|
|
||||||
import org.thingsboard.server.common.data.EntityType;
|
|
||||||
import org.thingsboard.server.common.data.EntityView;
|
import org.thingsboard.server.common.data.EntityView;
|
||||||
import org.thingsboard.server.common.data.asset.Asset;
|
|
||||||
import org.thingsboard.server.common.data.id.AssetId;
|
|
||||||
import org.thingsboard.server.common.data.id.DeviceId;
|
|
||||||
import org.thingsboard.server.dao.asset.AssetService;
|
|
||||||
import org.thingsboard.server.dao.device.DeviceService;
|
|
||||||
import org.thingsboard.server.gen.edge.EdgeEntityType;
|
import org.thingsboard.server.gen.edge.EdgeEntityType;
|
||||||
import org.thingsboard.server.gen.edge.EntityViewUpdateMsg;
|
import org.thingsboard.server.gen.edge.EntityViewUpdateMsg;
|
||||||
import org.thingsboard.server.gen.edge.UpdateMsgType;
|
import org.thingsboard.server.gen.edge.UpdateMsgType;
|
||||||
@ -34,34 +26,27 @@ import org.thingsboard.server.gen.edge.UpdateMsgType;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class EntityViewUpdateMsgConstructor {
|
public class EntityViewUpdateMsgConstructor {
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private DeviceService deviceService;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private AssetService assetService;
|
|
||||||
|
|
||||||
public EntityViewUpdateMsg constructEntityViewUpdatedMsg(UpdateMsgType msgType, EntityView entityView) {
|
public EntityViewUpdateMsg constructEntityViewUpdatedMsg(UpdateMsgType msgType, EntityView entityView) {
|
||||||
String relatedName;
|
EdgeEntityType entityType;
|
||||||
String relatedType;
|
switch (entityView.getEntityId().getEntityType()) {
|
||||||
EdgeEntityType relatedEntityType;
|
case DEVICE:
|
||||||
if (entityView.getEntityId().getEntityType().equals(EntityType.DEVICE)) {
|
entityType = EdgeEntityType.DEVICE;
|
||||||
Device device = deviceService.findDeviceById(entityView.getTenantId(), new DeviceId(entityView.getEntityId().getId()));
|
break;
|
||||||
relatedName = device.getName();
|
case ASSET:
|
||||||
relatedType = device.getType();
|
entityType = EdgeEntityType.ASSET;
|
||||||
relatedEntityType = EdgeEntityType.DEVICE;
|
break;
|
||||||
} else {
|
default:
|
||||||
Asset asset = assetService.findAssetById(entityView.getTenantId(), new AssetId(entityView.getEntityId().getId()));
|
throw new RuntimeException("Unsupported entity type [" + entityView.getEntityId().getEntityType() + "]");
|
||||||
relatedName = asset.getName();
|
|
||||||
relatedType = asset.getType();
|
|
||||||
relatedEntityType = EdgeEntityType.ASSET;
|
|
||||||
}
|
}
|
||||||
EntityViewUpdateMsg.Builder builder = EntityViewUpdateMsg.newBuilder()
|
EntityViewUpdateMsg.Builder builder = EntityViewUpdateMsg.newBuilder()
|
||||||
.setMsgType(msgType)
|
.setMsgType(msgType)
|
||||||
|
.setIdMSB(entityView.getId().getId().getMostSignificantBits())
|
||||||
|
.setIdLSB(entityView.getId().getId().getLeastSignificantBits())
|
||||||
.setName(entityView.getName())
|
.setName(entityView.getName())
|
||||||
.setType(entityView.getType())
|
.setType(entityView.getType())
|
||||||
.setRelatedName(relatedName)
|
.setIdMSB(entityView.getEntityId().getId().getMostSignificantBits())
|
||||||
.setRelatedType(relatedType)
|
.setIdLSB(entityView.getEntityId().getId().getLeastSignificantBits())
|
||||||
.setRelatedEntityType(relatedEntityType);
|
.setEntityType(entityType);
|
||||||
return builder.build();
|
return builder.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -35,6 +35,8 @@ public class UserUpdateMsgConstructor {
|
|||||||
public UserUpdateMsg constructUserUpdatedMsg(UpdateMsgType msgType, User user) {
|
public UserUpdateMsg constructUserUpdatedMsg(UpdateMsgType msgType, User user) {
|
||||||
UserUpdateMsg.Builder builder = UserUpdateMsg.newBuilder()
|
UserUpdateMsg.Builder builder = UserUpdateMsg.newBuilder()
|
||||||
.setMsgType(msgType)
|
.setMsgType(msgType)
|
||||||
|
.setIdMSB(user.getId().getId().getMostSignificantBits())
|
||||||
|
.setIdLSB(user.getId().getId().getLeastSignificantBits())
|
||||||
.setEmail(user.getEmail())
|
.setEmail(user.getEmail())
|
||||||
.setAuthority(user.getAuthority().name())
|
.setAuthority(user.getAuthority().name())
|
||||||
.setEnabled(false);
|
.setEnabled(false);
|
||||||
|
|||||||
@ -141,7 +141,7 @@ public class EdgeGrpcClient implements EdgeRpcClient {
|
|||||||
log.debug("[{}] Entity update message received {}", edgeKey, responseMsg.getEntityUpdateMsg());
|
log.debug("[{}] Entity update message received {}", edgeKey, responseMsg.getEntityUpdateMsg());
|
||||||
onEntityUpdate.accept(responseMsg.getEntityUpdateMsg());
|
onEntityUpdate.accept(responseMsg.getEntityUpdateMsg());
|
||||||
} else if (responseMsg.hasDownlinkMsg()) {
|
} else if (responseMsg.hasDownlinkMsg()) {
|
||||||
log.debug("[{}] Downlink message received for rule chain {}", edgeKey, responseMsg.getDownlinkMsg());
|
log.debug("[{}] Downlink message received {}", edgeKey, responseMsg.getDownlinkMsg());
|
||||||
onDownlink.accept(responseMsg.getDownlinkMsg());
|
onDownlink.accept(responseMsg.getDownlinkMsg());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -99,7 +99,9 @@ enum UpdateMsgType {
|
|||||||
message EntityDataProto {
|
message EntityDataProto {
|
||||||
string entityName = 1;
|
string entityName = 1;
|
||||||
string entityType = 2;
|
string entityType = 2;
|
||||||
bytes tbMsg = 3;
|
int64 entityIdMSB = 3;
|
||||||
|
int64 entityIdLSB = 4;
|
||||||
|
bytes tbMsg = 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
message RuleChainUpdateMsg {
|
message RuleChainUpdateMsg {
|
||||||
@ -159,31 +161,37 @@ message DashboardUpdateMsg {
|
|||||||
|
|
||||||
message DeviceUpdateMsg {
|
message DeviceUpdateMsg {
|
||||||
UpdateMsgType msgType = 1;
|
UpdateMsgType msgType = 1;
|
||||||
string name = 2;
|
int64 idMSB = 2;
|
||||||
string type = 3;
|
int64 idLSB = 3;
|
||||||
string label = 4;
|
string name = 4;
|
||||||
string credentialsType = 5;
|
string type = 5;
|
||||||
string credentialsId = 6;
|
string label = 6;
|
||||||
string credentialsValue = 7;
|
string credentialsType = 7;
|
||||||
string groupName = 8;
|
string credentialsId = 8;
|
||||||
|
string credentialsValue = 9;
|
||||||
|
string groupName = 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
message AssetUpdateMsg {
|
message AssetUpdateMsg {
|
||||||
UpdateMsgType msgType = 1;
|
UpdateMsgType msgType = 1;
|
||||||
string name = 2;
|
int64 idMSB = 2;
|
||||||
string type = 3;
|
int64 idLSB = 3;
|
||||||
string label = 4;
|
string name = 4;
|
||||||
string groupName = 5;
|
string type = 5;
|
||||||
|
string label = 6;
|
||||||
|
string groupName = 7;
|
||||||
}
|
}
|
||||||
|
|
||||||
message EntityViewUpdateMsg {
|
message EntityViewUpdateMsg {
|
||||||
UpdateMsgType msgType = 1;
|
UpdateMsgType msgType = 1;
|
||||||
string name = 2;
|
int64 idMSB = 2;
|
||||||
string type = 3;
|
int64 idLSB = 3;
|
||||||
string relatedName = 4;
|
string name = 4;
|
||||||
string relatedType = 5;
|
string type = 5;
|
||||||
EdgeEntityType relatedEntityType = 6;
|
int64 entityIdMSB = 6;
|
||||||
string groupName = 7;
|
int64 entityIdLSB = 7;
|
||||||
|
EdgeEntityType entityType = 8;
|
||||||
|
string groupName = 9;
|
||||||
}
|
}
|
||||||
|
|
||||||
message AlarmUpdateMsg {
|
message AlarmUpdateMsg {
|
||||||
@ -220,14 +228,16 @@ message CustomerUpdateMsg {
|
|||||||
|
|
||||||
message UserUpdateMsg {
|
message UserUpdateMsg {
|
||||||
UpdateMsgType msgType = 1;
|
UpdateMsgType msgType = 1;
|
||||||
string email = 2;
|
int64 idMSB = 2;
|
||||||
string authority = 3;
|
int64 idLSB = 3;
|
||||||
string firstName = 4;
|
string email = 4;
|
||||||
string lastName = 5;
|
string authority = 5;
|
||||||
string additionalInfo = 6;
|
string firstName = 6;
|
||||||
bool enabled = 7;
|
string lastName = 7;
|
||||||
string password = 8;
|
string additionalInfo = 8;
|
||||||
string groupName = 9;
|
bool enabled = 9;
|
||||||
|
string password = 10;
|
||||||
|
string groupName = 11;
|
||||||
}
|
}
|
||||||
|
|
||||||
message RuleChainMetadataRequestMsg {
|
message RuleChainMetadataRequestMsg {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user