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