Browse Source

AI rule node: add support for AI settings in TenantIdLoader

pull/13371/head
Dmytro Skarzhynets 1 year ago
parent
commit
a3a1971a68
No known key found for this signature in database GPG Key ID: 2B51652F224037DF
  1. 5
      application/src/main/java/org/thingsboard/server/actors/ActorSystemContext.java
  2. 6
      application/src/main/java/org/thingsboard/server/actors/ruleChain/DefaultTbContext.java
  3. 2
      common/data/src/main/java/org/thingsboard/server/common/data/ai/AiSettings.java
  4. 3
      rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/TbContext.java
  5. 4
      rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/util/TenantIdLoader.java
  6. 11
      rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/util/TenantIdLoaderTest.java

5
application/src/main/java/org/thingsboard/server/actors/ActorSystemContext.java

@ -62,6 +62,7 @@ import org.thingsboard.server.common.msg.queue.ServiceType;
import org.thingsboard.server.common.msg.queue.TopicPartitionInfo;
import org.thingsboard.server.common.msg.tools.TbRateLimits;
import org.thingsboard.server.common.stats.TbApiUsageReportClient;
import org.thingsboard.server.dao.ai.AiSettingsService;
import org.thingsboard.server.dao.alarm.AlarmCommentService;
import org.thingsboard.server.dao.asset.AssetProfileService;
import org.thingsboard.server.dao.asset.AssetService;
@ -314,6 +315,10 @@ public class ActorSystemContext {
@Getter
private RuleEngineAiService aiService;
@Autowired
@Getter
private AiSettingsService aiSettingsService;
@Autowired
@Getter
private EntityViewService entityViewService;

6
application/src/main/java/org/thingsboard/server/actors/ruleChain/DefaultTbContext.java

@ -76,6 +76,7 @@ import org.thingsboard.server.common.msg.TbMsgMetaData;
import org.thingsboard.server.common.msg.TbMsgProcessingStackItem;
import org.thingsboard.server.common.msg.queue.ServiceType;
import org.thingsboard.server.common.msg.queue.TopicPartitionInfo;
import org.thingsboard.server.dao.ai.AiSettingsService;
import org.thingsboard.server.dao.alarm.AlarmCommentService;
import org.thingsboard.server.dao.asset.AssetProfileService;
import org.thingsboard.server.dao.asset.AssetService;
@ -1018,6 +1019,11 @@ public class DefaultTbContext implements TbContext {
return mainCtx.getAiService();
}
@Override
public AiSettingsService getAiSettingsService() {
return mainCtx.getAiSettingsService();
}
@Override
public MqttClientSettings getMqttClientSettings() {
return mainCtx.getMqttClientSettings();

2
common/data/src/main/java/org/thingsboard/server/common/data/ai/AiSettings.java

@ -87,6 +87,8 @@ public final class AiSettings extends BaseData<AiSettingsId> implements HasTenan
)
String apiKey;
public AiSettings() {}
public AiSettings(AiSettingsId id) {
super(id);
}

3
rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/TbContext.java

@ -44,6 +44,7 @@ import org.thingsboard.server.common.data.rule.RuleNodeState;
import org.thingsboard.server.common.data.script.ScriptLanguage;
import org.thingsboard.server.common.msg.TbMsg;
import org.thingsboard.server.common.msg.TbMsgMetaData;
import org.thingsboard.server.dao.ai.AiSettingsService;
import org.thingsboard.server.dao.alarm.AlarmCommentService;
import org.thingsboard.server.dao.asset.AssetProfileService;
import org.thingsboard.server.dao.asset.AssetService;
@ -419,6 +420,8 @@ public interface TbContext {
RuleEngineAiService getAiService();
AiSettingsService getAiSettingsService();
// Configuration parameters for the MQTT client that is used in the MQTT node and Azure IoT hub node
MqttClientSettings getMqttClientSettings();

4
rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/util/TenantIdLoader.java

@ -19,6 +19,7 @@ import org.thingsboard.rule.engine.api.TbContext;
import org.thingsboard.server.common.data.EntityType;
import org.thingsboard.server.common.data.HasTenantId;
import org.thingsboard.server.common.data.cf.CalculatedFieldLink;
import org.thingsboard.server.common.data.id.AiSettingsId;
import org.thingsboard.server.common.data.id.AlarmId;
import org.thingsboard.server.common.data.id.ApiUsageStateId;
import org.thingsboard.server.common.data.id.AssetId;
@ -175,6 +176,9 @@ public class TenantIdLoader {
tenantEntity = null;
}
break;
case AI_SETTINGS:
tenantEntity = ctx.getAiSettingsService().findAiSettingsById(ctxTenantId, new AiSettingsId(id)).orElse(null);
break;
default:
throw new RuntimeException("Unexpected entity type: " + entityId.getEntityType());
}

11
rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/util/TenantIdLoaderTest.java

@ -40,6 +40,7 @@ import org.thingsboard.server.common.data.OtaPackage;
import org.thingsboard.server.common.data.TbResource;
import org.thingsboard.server.common.data.TenantProfile;
import org.thingsboard.server.common.data.User;
import org.thingsboard.server.common.data.ai.AiSettings;
import org.thingsboard.server.common.data.alarm.Alarm;
import org.thingsboard.server.common.data.asset.Asset;
import org.thingsboard.server.common.data.asset.AssetProfile;
@ -68,6 +69,7 @@ import org.thingsboard.server.common.data.rule.RuleChain;
import org.thingsboard.server.common.data.rule.RuleNode;
import org.thingsboard.server.common.data.widget.WidgetType;
import org.thingsboard.server.common.data.widget.WidgetsBundle;
import org.thingsboard.server.dao.ai.AiSettingsService;
import org.thingsboard.server.dao.asset.AssetService;
import org.thingsboard.server.dao.cf.CalculatedFieldService;
import org.thingsboard.server.dao.customer.CustomerService;
@ -92,6 +94,7 @@ import org.thingsboard.server.dao.user.UserService;
import org.thingsboard.server.dao.widget.WidgetTypeService;
import org.thingsboard.server.dao.widget.WidgetsBundleService;
import java.util.Optional;
import java.util.UUID;
import static org.mockito.ArgumentMatchers.any;
@ -160,6 +163,8 @@ public class TenantIdLoaderTest {
private MobileAppBundleService mobileAppBundleService;
@Mock
private CalculatedFieldService calculatedFieldService;
@Mock
private AiSettingsService aiSettingsService;
private TenantId tenantId;
private TenantProfileId tenantProfileId;
@ -419,6 +424,12 @@ public class TenantIdLoaderTest {
when(ctx.getCalculatedFieldService()).thenReturn(calculatedFieldService);
doReturn(calculatedFieldLink).when(calculatedFieldService).findCalculatedFieldLinkById(eq(tenantId), any());
break;
case AI_SETTINGS:
AiSettings aiSettings = new AiSettings();
aiSettings.setTenantId(tenantId);
when(ctx.getAiSettingsService()).thenReturn(aiSettingsService);
doReturn(Optional.of(aiSettings)).when(aiSettingsService).findAiSettingsById(eq(tenantId), any());
break;
default:
throw new RuntimeException("Unexpected originator EntityType " + entityType);
}

Loading…
Cancel
Save