added additionalInfo to the rpc
This commit is contained in:
parent
9d651a7252
commit
373f2f9f0e
@ -209,6 +209,7 @@ CREATE TABLE IF NOT EXISTS rpc (
|
||||
expiration_time bigint NOT NULL,
|
||||
request varchar(10000000) NOT NULL,
|
||||
response varchar(10000000),
|
||||
additional_info varchar(10000000),
|
||||
status varchar(255) NOT NULL
|
||||
);
|
||||
|
||||
|
||||
@ -234,6 +234,7 @@ class DeviceActorMessageProcessor extends AbstractContextAwareMsgProcessor {
|
||||
rpc.setExpirationTime(request.getExpirationTime());
|
||||
rpc.setRequest(JacksonUtil.valueToTree(request));
|
||||
rpc.setStatus(status);
|
||||
rpc.setAdditionalInfo(JacksonUtil.valueToTree(request.getAdditionalInfo()));
|
||||
return systemContext.getTbRpcService().save(tenantId, rpc);
|
||||
}
|
||||
|
||||
|
||||
@ -90,6 +90,7 @@ public abstract class AbstractRpcController extends BaseController {
|
||||
long expTime = System.currentTimeMillis() + Math.max(minTimeout, timeout);
|
||||
UUID rpcRequestUUID = rpcRequestBody.has("requestUUID") ? UUID.fromString(rpcRequestBody.get("requestUUID").asText()) : UUID.randomUUID();
|
||||
boolean persisted = rpcRequestBody.has(DataConstants.PERSISTENT) && rpcRequestBody.get(DataConstants.PERSISTENT).asBoolean();
|
||||
String additionalInfo = JacksonUtil.toString(rpcRequestBody.get(DataConstants.ADDITIONAL_INFO));
|
||||
accessValidator.validate(currentUser, Operation.RPC_CALL, deviceId, new HttpValidationCallback(response, new FutureCallback<>() {
|
||||
@Override
|
||||
public void onSuccess(@Nullable DeferredResult<ResponseEntity> result) {
|
||||
@ -99,7 +100,8 @@ public abstract class AbstractRpcController extends BaseController {
|
||||
oneWay,
|
||||
expTime,
|
||||
body,
|
||||
persisted
|
||||
persisted,
|
||||
additionalInfo
|
||||
);
|
||||
deviceRpcService.processRestApiRpcRequest(rpcRequest, fromDeviceRpcResponse -> reply(new LocalRequestMetaData(rpcRequest, currentUser, result), fromDeviceRpcResponse, timeoutStatus, noActiveConnectionStatus), currentUser);
|
||||
}
|
||||
|
||||
@ -168,6 +168,8 @@ public class DefaultTbCoreDeviceRpcService implements TbCoreDeviceRpcService {
|
||||
entityNode.put("method", msg.getBody().getMethod());
|
||||
entityNode.put("params", msg.getBody().getParams());
|
||||
|
||||
entityNode.put(DataConstants.ADDITIONAL_INFO, msg.getAdditionalInfo());
|
||||
|
||||
try {
|
||||
TbMsg tbMsg = TbMsg.newMsg(DataConstants.RPC_CALL_FROM_SERVER_TO_DEVICE, msg.getDeviceId(), currentUser.getCustomerId(), metaData, TbMsgDataType.JSON, json.writeValueAsString(entityNode));
|
||||
clusterService.pushMsgToRuleEngine(msg.getTenantId(), msg.getDeviceId(), tbMsg, null);
|
||||
|
||||
@ -100,7 +100,7 @@ public class DefaultTbRuleEngineRpcService implements TbRuleEngineDeviceRpcServi
|
||||
@Override
|
||||
public void sendRpcRequestToDevice(RuleEngineDeviceRpcRequest src, Consumer<RuleEngineDeviceRpcResponse> consumer) {
|
||||
ToDeviceRpcRequest request = new ToDeviceRpcRequest(src.getRequestUUID(), src.getTenantId(), src.getDeviceId(),
|
||||
src.isOneway(), src.getExpirationTime(), new ToDeviceRpcRequestBody(src.getMethod(), src.getBody()), src.isPersisted());
|
||||
src.isOneway(), src.getExpirationTime(), new ToDeviceRpcRequestBody(src.getMethod(), src.getBody()), src.isPersisted(), src.getAdditionalInfo());
|
||||
forwardRpcRequestToDeviceActor(request, response -> {
|
||||
if (src.isRestApiCall()) {
|
||||
sendRpcResponseToTbCore(src.getOriginServiceId(), response);
|
||||
|
||||
@ -36,6 +36,7 @@ public class DataConstants {
|
||||
public static final String ALARM_CONDITION_REPEATS = "alarmConditionRepeats";
|
||||
public static final String ALARM_CONDITION_DURATION = "alarmConditionDuration";
|
||||
public static final String PERSISTENT = "persistent";
|
||||
public static final String ADDITIONAL_INFO = "additionalInfo";
|
||||
public static final String COAP_TRANSPORT_NAME = "COAP";
|
||||
public static final String LWM2M_TRANSPORT_NAME = "LWM2M";
|
||||
public static final String MQTT_TRANSPORT_NAME = "MQTT";
|
||||
|
||||
@ -33,6 +33,7 @@ public class Rpc extends BaseData<RpcId> implements HasTenantId {
|
||||
private JsonNode request;
|
||||
private JsonNode response;
|
||||
private RpcStatus status;
|
||||
private JsonNode additionalInfo;
|
||||
|
||||
public Rpc() {
|
||||
super();
|
||||
@ -50,5 +51,6 @@ public class Rpc extends BaseData<RpcId> implements HasTenantId {
|
||||
this.request = rpc.getRequest();
|
||||
this.response = rpc.getResponse();
|
||||
this.status = rpc.getStatus();
|
||||
this.additionalInfo = rpc.getAdditionalInfo();
|
||||
}
|
||||
}
|
||||
|
||||
@ -15,6 +15,7 @@
|
||||
*/
|
||||
package org.thingsboard.server.common.msg.rpc;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import lombok.Data;
|
||||
import org.thingsboard.server.common.data.id.DeviceId;
|
||||
import org.thingsboard.server.common.data.id.TenantId;
|
||||
@ -35,5 +36,7 @@ public class ToDeviceRpcRequest implements Serializable {
|
||||
private final long expirationTime;
|
||||
private final ToDeviceRpcRequestBody body;
|
||||
private final boolean persisted;
|
||||
@JsonIgnore
|
||||
private final String additionalInfo;
|
||||
}
|
||||
|
||||
|
||||
@ -519,6 +519,7 @@ public class ModelConstants {
|
||||
public static final String RPC_REQUEST = "request";
|
||||
public static final String RPC_RESPONSE = "response";
|
||||
public static final String RPC_STATUS = "status";
|
||||
public static final String RPC_ADDITIONAL_INFO = ADDITIONAL_INFO_PROPERTY;
|
||||
|
||||
/**
|
||||
* Edge constants.
|
||||
|
||||
@ -36,6 +36,7 @@ import javax.persistence.Enumerated;
|
||||
import javax.persistence.Table;
|
||||
import java.util.UUID;
|
||||
|
||||
import static org.thingsboard.server.dao.model.ModelConstants.RPC_ADDITIONAL_INFO;
|
||||
import static org.thingsboard.server.dao.model.ModelConstants.RPC_DEVICE_ID;
|
||||
import static org.thingsboard.server.dao.model.ModelConstants.RPC_EXPIRATION_TIME;
|
||||
import static org.thingsboard.server.dao.model.ModelConstants.RPC_REQUEST;
|
||||
@ -72,6 +73,10 @@ public class RpcEntity extends BaseSqlEntity<Rpc> implements BaseEntity<Rpc> {
|
||||
@Column(name = RPC_STATUS)
|
||||
private RpcStatus status;
|
||||
|
||||
@Type(type = "json")
|
||||
@Column(name = RPC_ADDITIONAL_INFO)
|
||||
private JsonNode additionalInfo;
|
||||
|
||||
public RpcEntity() {
|
||||
super();
|
||||
}
|
||||
@ -85,6 +90,7 @@ public class RpcEntity extends BaseSqlEntity<Rpc> implements BaseEntity<Rpc> {
|
||||
this.request = rpc.getRequest();
|
||||
this.response = rpc.getResponse();
|
||||
this.status = rpc.getStatus();
|
||||
this.additionalInfo = rpc.getAdditionalInfo();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -97,6 +103,7 @@ public class RpcEntity extends BaseSqlEntity<Rpc> implements BaseEntity<Rpc> {
|
||||
rpc.setRequest(request);
|
||||
rpc.setResponse(response);
|
||||
rpc.setStatus(status);
|
||||
rpc.setAdditionalInfo(additionalInfo);
|
||||
return rpc;
|
||||
}
|
||||
}
|
||||
|
||||
@ -582,5 +582,6 @@ CREATE TABLE IF NOT EXISTS rpc (
|
||||
expiration_time bigint NOT NULL,
|
||||
request varchar(10000000) NOT NULL,
|
||||
response varchar(10000000),
|
||||
additional_info varchar(10000000),
|
||||
status varchar(255) NOT NULL
|
||||
);
|
||||
|
||||
@ -616,6 +616,7 @@ CREATE TABLE IF NOT EXISTS rpc (
|
||||
expiration_time bigint NOT NULL,
|
||||
request varchar(10000000) NOT NULL,
|
||||
response varchar(10000000),
|
||||
additional_info varchar(10000000),
|
||||
status varchar(255) NOT NULL
|
||||
);
|
||||
|
||||
|
||||
@ -40,5 +40,6 @@ public final class RuleEngineDeviceRpcRequest {
|
||||
private final String body;
|
||||
private final long expirationTime;
|
||||
private final boolean restApiCall;
|
||||
private final String additionalInfo;
|
||||
|
||||
}
|
||||
|
||||
@ -100,6 +100,8 @@ public class TbSendRPCRequestNode implements TbNode {
|
||||
params = gson.toJson(paramsEl);
|
||||
}
|
||||
|
||||
String additionalInfo = gson.toJson(json.get(DataConstants.ADDITIONAL_INFO));
|
||||
|
||||
RuleEngineDeviceRpcRequest request = RuleEngineDeviceRpcRequest.builder()
|
||||
.oneway(oneway)
|
||||
.method(json.get("method").getAsString())
|
||||
@ -112,6 +114,7 @@ public class TbSendRPCRequestNode implements TbNode {
|
||||
.expirationTime(expirationTime)
|
||||
.restApiCall(restApiCall)
|
||||
.persisted(persisted)
|
||||
.additionalInfo(additionalInfo)
|
||||
.build();
|
||||
|
||||
ctx.getRpcService().sendRpcRequestToDevice(request, ruleEngineDeviceRpcResponse -> {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user