added RPC message types
This commit is contained in:
		
							parent
							
								
									bafbf7b239
								
							
						
					
					
						commit
						6b546a459e
					
				@ -19,7 +19,7 @@ import com.fasterxml.jackson.databind.JsonNode;
 | 
			
		||||
import lombok.RequiredArgsConstructor;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
import org.thingsboard.server.common.data.audit.ActionType;
 | 
			
		||||
import org.thingsboard.common.util.JacksonUtil;
 | 
			
		||||
import org.thingsboard.server.common.data.id.DeviceId;
 | 
			
		||||
import org.thingsboard.server.common.data.id.RpcId;
 | 
			
		||||
import org.thingsboard.server.common.data.id.TenantId;
 | 
			
		||||
@ -27,9 +27,11 @@ import org.thingsboard.server.common.data.page.PageData;
 | 
			
		||||
import org.thingsboard.server.common.data.page.PageLink;
 | 
			
		||||
import org.thingsboard.server.common.data.rpc.Rpc;
 | 
			
		||||
import org.thingsboard.server.common.data.rpc.RpcStatus;
 | 
			
		||||
import org.thingsboard.server.common.msg.TbMsg;
 | 
			
		||||
import org.thingsboard.server.common.msg.TbMsgMetaData;
 | 
			
		||||
import org.thingsboard.server.dao.rpc.RpcService;
 | 
			
		||||
import org.thingsboard.server.queue.util.TbCoreComponent;
 | 
			
		||||
import org.thingsboard.server.service.action.RuleEngineEntityActionService;
 | 
			
		||||
import org.thingsboard.server.service.queue.TbClusterService;
 | 
			
		||||
 | 
			
		||||
@TbCoreComponent
 | 
			
		||||
@Service
 | 
			
		||||
@ -37,11 +39,11 @@ import org.thingsboard.server.service.action.RuleEngineEntityActionService;
 | 
			
		||||
@Slf4j
 | 
			
		||||
public class TbRpcService {
 | 
			
		||||
    private final RpcService rpcService;
 | 
			
		||||
    private final RuleEngineEntityActionService ruleEngineEntityActionService;
 | 
			
		||||
    private final TbClusterService tbClusterService;
 | 
			
		||||
 | 
			
		||||
    public void save(TenantId tenantId, Rpc rpc) {
 | 
			
		||||
        Rpc saved = rpcService.save(tenantId, rpc);
 | 
			
		||||
        ruleEngineEntityActionService.pushEntityActionToRuleEngine(saved.getId(), saved, tenantId, null, rpc.getId() == null ? ActionType.ADDED : ActionType.UPDATED, null);
 | 
			
		||||
        pushRpcMsgToRuleEngine(tenantId, saved);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void save(TenantId tenantId, RpcId rpcId, RpcStatus newStatus, JsonNode response) {
 | 
			
		||||
@ -52,12 +54,17 @@ public class TbRpcService {
 | 
			
		||||
                foundRpc.setResponse(response);
 | 
			
		||||
            }
 | 
			
		||||
            Rpc saved = rpcService.save(tenantId, foundRpc);
 | 
			
		||||
            ruleEngineEntityActionService.pushEntityActionToRuleEngine(saved.getId(), saved, tenantId, null, ActionType.UPDATED, null);
 | 
			
		||||
            pushRpcMsgToRuleEngine(tenantId, saved);
 | 
			
		||||
        } else {
 | 
			
		||||
            log.warn("[{}] Failed to update RPC status because RPC was already deleted", rpcId);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void pushRpcMsgToRuleEngine(TenantId tenantId, Rpc rpc) {
 | 
			
		||||
        TbMsg msg = TbMsg.newMsg("RPC_" + rpc.getStatus().name(), rpc.getDeviceId(), TbMsgMetaData.EMPTY, JacksonUtil.toString(rpc));
 | 
			
		||||
        tbClusterService.pushMsgToRuleEngine(tenantId, rpc.getId(), msg, null);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Rpc findRpcById(TenantId tenantId, RpcId rpcId) {
 | 
			
		||||
        return rpcService.findById(tenantId, rpcId);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -76,6 +76,13 @@ public class DataConstants {
 | 
			
		||||
 | 
			
		||||
    public static final String RPC_CALL_FROM_SERVER_TO_DEVICE = "RPC_CALL_FROM_SERVER_TO_DEVICE";
 | 
			
		||||
 | 
			
		||||
    public static final String RPC_QUEUED = "RPC_QUEUED";
 | 
			
		||||
    public static final String RPC_SENT = "RPC_SENT";
 | 
			
		||||
    public static final String RPC_DELIVERED = "RPC_DELIVERED";
 | 
			
		||||
    public static final String RPC_SUCCESSFUL = "RPC_SUCCESSFUL";
 | 
			
		||||
    public static final String RPC_TIMEOUT = "RPC_TIMEOUT";
 | 
			
		||||
    public static final String RPC_FAILED = "RPC_FAILED";
 | 
			
		||||
 | 
			
		||||
    public static final String DEFAULT_SECRET_KEY = "";
 | 
			
		||||
    public static final String SECRET_KEY_FIELD_NAME = "secretKey";
 | 
			
		||||
    public static final String DURATION_MS_FIELD_NAME = "durationMs";
 | 
			
		||||
 | 
			
		||||
@ -33,8 +33,8 @@ import org.thingsboard.server.common.msg.session.SessionMsgType;
 | 
			
		||||
        type = ComponentType.FILTER,
 | 
			
		||||
        name = "message type switch",
 | 
			
		||||
        configClazz = EmptyNodeConfiguration.class,
 | 
			
		||||
        relationTypes = {"Post attributes", "Post telemetry", "RPC Request from Device", "RPC Request to Device", "Activity Event", "Inactivity Event",
 | 
			
		||||
                "Connect Event", "Disconnect Event", "Entity Created", "Entity Updated", "Entity Deleted", "Entity Assigned",
 | 
			
		||||
        relationTypes = {"Post attributes", "Post telemetry", "RPC Request from Device", "RPC Request to Device", "RPC Queued", "RPC Sent", "RPC Delivered", "RPC Successful", "RPC Timeout", "RPC Failed",
 | 
			
		||||
                "Activity Event", "Inactivity Event", "Connect Event", "Disconnect Event", "Entity Created", "Entity Updated", "Entity Deleted", "Entity Assigned",
 | 
			
		||||
                "Entity Unassigned", "Attributes Updated", "Attributes Deleted", "Alarm Acknowledged", "Alarm Cleared", "Other", "Entity Assigned From Tenant", "Entity Assigned To Tenant",
 | 
			
		||||
                "Timeseries Updated", "Timeseries Deleted"},
 | 
			
		||||
        nodeDescription = "Route incoming messages by Message Type",
 | 
			
		||||
@ -95,6 +95,18 @@ public class TbMsgTypeSwitchNode implements TbNode {
 | 
			
		||||
            relationType = "Timeseries Updated";
 | 
			
		||||
        } else if (msg.getType().equals(DataConstants.TIMESERIES_DELETED)) {
 | 
			
		||||
            relationType = "Timeseries Deleted";
 | 
			
		||||
        } else if (msg.getType().equals(DataConstants.RPC_QUEUED)) {
 | 
			
		||||
            relationType = "RPC Queued";
 | 
			
		||||
        } else if (msg.getType().equals(DataConstants.RPC_SENT)) {
 | 
			
		||||
            relationType = "RPC Sent";
 | 
			
		||||
        } else if (msg.getType().equals(DataConstants.RPC_DELIVERED)) {
 | 
			
		||||
            relationType = "RPC Delivered";
 | 
			
		||||
        } else if (msg.getType().equals(DataConstants.RPC_SUCCESSFUL)) {
 | 
			
		||||
            relationType = "RPC Successful";
 | 
			
		||||
        } else if (msg.getType().equals(DataConstants.RPC_TIMEOUT)) {
 | 
			
		||||
            relationType = "RPC Timeout";
 | 
			
		||||
        } else if (msg.getType().equals(DataConstants.RPC_FAILED)) {
 | 
			
		||||
            relationType = "RPC Failed";
 | 
			
		||||
        } else {
 | 
			
		||||
            relationType = "Other";
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -352,7 +352,13 @@ export enum MessageType {
 | 
			
		||||
  ATTRIBUTES_UPDATED = 'ATTRIBUTES_UPDATED',
 | 
			
		||||
  ATTRIBUTES_DELETED = 'ATTRIBUTES_DELETED',
 | 
			
		||||
  TIMESERIES_UPDATED = 'TIMESERIES_UPDATED',
 | 
			
		||||
  TIMESERIES_DELETED = 'TIMESERIES_DELETED'
 | 
			
		||||
  TIMESERIES_DELETED = 'TIMESERIES_DELETED',
 | 
			
		||||
  RPC_QUEUED = 'RPC_QUEUED',
 | 
			
		||||
  RPC_SENT = 'RPC_SENT',
 | 
			
		||||
  RPC_DELIVERED = 'RPC_SENT',
 | 
			
		||||
  RPC_SUCCESSFUL = 'RPC_DELIVERED',
 | 
			
		||||
  RPC_TIMEOUT = 'RPC_TIMEOUT',
 | 
			
		||||
  RPC_FAILED = 'RPC_FAILED'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export const messageTypeNames = new Map<MessageType, string>(
 | 
			
		||||
@ -373,7 +379,13 @@ export const messageTypeNames = new Map<MessageType, string>(
 | 
			
		||||
    [MessageType.ATTRIBUTES_UPDATED, 'Attributes Updated'],
 | 
			
		||||
    [MessageType.ATTRIBUTES_DELETED, 'Attributes Deleted'],
 | 
			
		||||
    [MessageType.TIMESERIES_UPDATED, 'Timeseries Updated'],
 | 
			
		||||
    [MessageType.TIMESERIES_DELETED, 'Timeseries Deleted']
 | 
			
		||||
    [MessageType.TIMESERIES_DELETED, 'Timeseries Deleted'],
 | 
			
		||||
    [MessageType.RPC_QUEUED, 'RPC Queued'],
 | 
			
		||||
    [MessageType.RPC_SENT, 'RPC Sent'],
 | 
			
		||||
    [MessageType.RPC_DELIVERED, 'RPC Delivered'],
 | 
			
		||||
    [MessageType.RPC_SUCCESSFUL, 'RPC Successful'],
 | 
			
		||||
    [MessageType.RPC_TIMEOUT, 'RPC Timeout'],
 | 
			
		||||
    [MessageType.RPC_FAILED, 'RPC Failed']
 | 
			
		||||
  ]
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user