diff --git a/application/src/main/java/org/thingsboard/server/service/rpc/DefaultDeviceRpcService.java b/application/src/main/java/org/thingsboard/server/service/rpc/DefaultDeviceRpcService.java index 8e866612f2..64f5213d65 100644 --- a/application/src/main/java/org/thingsboard/server/service/rpc/DefaultDeviceRpcService.java +++ b/application/src/main/java/org/thingsboard/server/service/rpc/DefaultDeviceRpcService.java @@ -22,6 +22,7 @@ import com.fasterxml.jackson.databind.node.ObjectNode; import com.google.protobuf.InvalidProtocolBufferException; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.thingsboard.rule.engine.api.RpcError; import org.thingsboard.rule.engine.api.msg.ToDeviceActorNotificationMsg; @@ -67,6 +68,7 @@ public class DefaultDeviceRpcService implements DeviceRpcService { private ClusterRpcService rpcService; @Autowired + @Lazy private ActorService actorService; private ScheduledExecutorService rpcCallBackExecutor; diff --git a/application/src/main/java/org/thingsboard/server/service/state/DefaultDeviceStateService.java b/application/src/main/java/org/thingsboard/server/service/state/DefaultDeviceStateService.java index a41fdee250..f4e37db971 100644 --- a/application/src/main/java/org/thingsboard/server/service/state/DefaultDeviceStateService.java +++ b/application/src/main/java/org/thingsboard/server/service/state/DefaultDeviceStateService.java @@ -28,6 +28,7 @@ import lombok.Getter; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.thingsboard.rule.engine.api.RpcError; import org.thingsboard.server.actors.service.ActorService; @@ -102,6 +103,7 @@ public class DefaultDeviceStateService implements DeviceStateService { private AttributesService attributesService; @Autowired + @Lazy private ActorService actorService; @Autowired diff --git a/application/src/main/resources/thingsboard.yml b/application/src/main/resources/thingsboard.yml index 154a0982b1..2a2728dbb4 100644 --- a/application/src/main/resources/thingsboard.yml +++ b/application/src/main/resources/thingsboard.yml @@ -225,7 +225,7 @@ sql: # Actor system parameters actors: tenant: - create_components_on_init: true + create_components_on_init: "${ACTORS_TENANT_CREATE_COMPONENTS_ON_INIT:true}" session: max_concurrent_sessions_per_device: "${ACTORS_MAX_CONCURRENT_SESSION_PER_DEVICE:1}" sync: diff --git a/ui/src/app/services/item-buffer.service.js b/ui/src/app/services/item-buffer.service.js index a9fe348794..09ed9c552c 100644 --- a/ui/src/app/services/item-buffer.service.js +++ b/ui/src/app/services/item-buffer.service.js @@ -214,10 +214,19 @@ function ItemBuffer($q, bufferStore, types, utils, dashboardUtils, ruleChainServ var node = ruleNodes.nodes[i]; var component = ruleChainService.getRuleNodeComponentByClazz(node.componentClazz); if (component) { + var icon = types.ruleNodeType[component.type].icon; + var iconUrl = null; + if (component.configurationDescriptor.nodeDefinition.icon) { + icon = component.configurationDescriptor.nodeDefinition.icon; + } + if (component.configurationDescriptor.nodeDefinition.iconUrl) { + iconUrl = component.configurationDescriptor.nodeDefinition.iconUrl; + } delete node.componentClazz; node.component = component; node.nodeClass = types.ruleNodeType[component.type].nodeClass; - node.icon = types.ruleNodeType[component.type].icon; + node.icon = icon; + node.iconUrl = iconUrl; node.connectors = []; node.x = Math.round(node.x + deltaX); node.y = Math.round(node.y + deltaY);