AI rule node: add AI settings lifecycle events handling in listeners
This commit is contained in:
		
							parent
							
								
									c738d3a906
								
							
						
					
					
						commit
						bdb657e213
					
				@ -112,7 +112,7 @@ public class EdgeEventSourcingListener {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        try {
 | 
			
		||||
            if (EntityType.TENANT.equals(entityType) || EntityType.EDGE.equals(entityType)) {
 | 
			
		||||
            if (EntityType.TENANT == entityType || EntityType.EDGE == entityType || EntityType.AI_SETTINGS == entityType) {
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            log.trace("[{}] DeleteEntityEvent called: {}", tenantId, event);
 | 
			
		||||
@ -226,7 +226,7 @@ public class EdgeEventSourcingListener {
 | 
			
		||||
                    break;
 | 
			
		||||
                case TENANT:
 | 
			
		||||
                    return !event.getCreated();
 | 
			
		||||
                case API_USAGE_STATE, EDGE:
 | 
			
		||||
                case API_USAGE_STATE, EDGE, AI_SETTINGS:
 | 
			
		||||
                    return false;
 | 
			
		||||
                case DOMAIN:
 | 
			
		||||
                    if (entity instanceof Domain domain) {
 | 
			
		||||
 | 
			
		||||
@ -58,8 +58,7 @@ public class RelatedEdgesSourcingListener {
 | 
			
		||||
            log.trace("[{}] ActionEntityEvent called: {}", event.getTenantId(), event);
 | 
			
		||||
            try {
 | 
			
		||||
                switch (event.getActionType()) {
 | 
			
		||||
                    case ASSIGNED_TO_EDGE, UNASSIGNED_FROM_EDGE ->
 | 
			
		||||
                            relatedEdgesService.publishRelatedEdgeIdsEvictEvent(event.getTenantId(), event.getEntityId());
 | 
			
		||||
                    case ASSIGNED_TO_EDGE, UNASSIGNED_FROM_EDGE -> relatedEdgesService.publishRelatedEdgeIdsEvictEvent(event.getTenantId(), event.getEntityId());
 | 
			
		||||
                }
 | 
			
		||||
            } catch (Exception e) {
 | 
			
		||||
                log.error("[{}] failed to process ActionEntityEvent: {}", event.getTenantId(), event, e);
 | 
			
		||||
@ -67,7 +66,10 @@ public class RelatedEdgesSourcingListener {
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @TransactionalEventListener(fallbackExecution = true)
 | 
			
		||||
    @TransactionalEventListener(
 | 
			
		||||
            fallbackExecution = true,
 | 
			
		||||
            condition = "#event.entityId.getEntityType() != T(org.thingsboard.server.common.data.EntityType).AI_SETTINGS"
 | 
			
		||||
    )
 | 
			
		||||
    public void handleEvent(DeleteEntityEvent<?> event) {
 | 
			
		||||
        executorService.submit(() -> {
 | 
			
		||||
            log.trace("[{}] DeleteEntityEvent called: {}", event.getTenantId(), event);
 | 
			
		||||
 | 
			
		||||
@ -96,7 +96,7 @@ public class EntityStateSourcingListener {
 | 
			
		||||
            case ASSET -> {
 | 
			
		||||
                onAssetUpdate(event.getEntity(), event.getOldEntity());
 | 
			
		||||
            }
 | 
			
		||||
            case ASSET_PROFILE, ENTITY_VIEW, NOTIFICATION_RULE -> {
 | 
			
		||||
            case ASSET_PROFILE, ENTITY_VIEW, NOTIFICATION_RULE, AI_SETTINGS -> {
 | 
			
		||||
                tbClusterService.broadcastEntityStateChangeEvent(tenantId, entityId, lifecycleEvent);
 | 
			
		||||
            }
 | 
			
		||||
            case RULE_CHAIN -> {
 | 
			
		||||
@ -158,7 +158,7 @@ public class EntityStateSourcingListener {
 | 
			
		||||
                Asset asset = (Asset) event.getEntity();
 | 
			
		||||
                tbClusterService.onAssetDeleted(tenantId, asset, null);
 | 
			
		||||
            }
 | 
			
		||||
            case ASSET_PROFILE, ENTITY_VIEW, CUSTOMER, EDGE, NOTIFICATION_RULE -> {
 | 
			
		||||
            case ASSET_PROFILE, ENTITY_VIEW, CUSTOMER, EDGE, NOTIFICATION_RULE, AI_SETTINGS -> {
 | 
			
		||||
                tbClusterService.broadcastEntityStateChangeEvent(tenantId, entityId, ComponentLifecycleEvent.DELETED);
 | 
			
		||||
            }
 | 
			
		||||
            case NOTIFICATION_REQUEST -> {
 | 
			
		||||
 | 
			
		||||
@ -584,16 +584,18 @@ public class DefaultTbClusterService implements TbClusterService {
 | 
			
		||||
        TbQueueProducer<TbProtoQueueMsg<ToRuleEngineNotificationMsg>> toRuleEngineProducer = producerProvider.getRuleEngineNotificationsMsgProducer();
 | 
			
		||||
        Set<String> tbRuleEngineServices = partitionService.getAllServiceIds(ServiceType.TB_RULE_ENGINE);
 | 
			
		||||
        EntityType entityType = msg.getEntityId().getEntityType();
 | 
			
		||||
        if (entityType.equals(EntityType.TENANT)
 | 
			
		||||
                || entityType.equals(EntityType.TENANT_PROFILE)
 | 
			
		||||
                || entityType.equals(EntityType.DEVICE_PROFILE)
 | 
			
		||||
                || (entityType.equals(EntityType.ASSET) && msg.getEvent() == ComponentLifecycleEvent.UPDATED)
 | 
			
		||||
                || entityType.equals(EntityType.ASSET_PROFILE)
 | 
			
		||||
                || entityType.equals(EntityType.API_USAGE_STATE)
 | 
			
		||||
                || (entityType.equals(EntityType.DEVICE) && msg.getEvent() == ComponentLifecycleEvent.UPDATED)
 | 
			
		||||
                || entityType.equals(EntityType.ENTITY_VIEW)
 | 
			
		||||
                || entityType.equals(EntityType.NOTIFICATION_RULE)
 | 
			
		||||
                || entityType.equals(EntityType.CALCULATED_FIELD)
 | 
			
		||||
        if (entityType.isOneOf(
 | 
			
		||||
                EntityType.TENANT,
 | 
			
		||||
                EntityType.API_USAGE_STATE,
 | 
			
		||||
                EntityType.ENTITY_VIEW,
 | 
			
		||||
                EntityType.NOTIFICATION_RULE,
 | 
			
		||||
                EntityType.CALCULATED_FIELD,
 | 
			
		||||
                EntityType.AI_SETTINGS,
 | 
			
		||||
                EntityType.TENANT_PROFILE,
 | 
			
		||||
                EntityType.DEVICE_PROFILE,
 | 
			
		||||
                EntityType.ASSET_PROFILE)
 | 
			
		||||
                || (entityType == EntityType.ASSET && msg.getEvent() == ComponentLifecycleEvent.UPDATED)
 | 
			
		||||
                || (entityType == EntityType.DEVICE && msg.getEvent() == ComponentLifecycleEvent.UPDATED)
 | 
			
		||||
        ) {
 | 
			
		||||
            TbQueueProducer<TbProtoQueueMsg<ToCoreNotificationMsg>> toCoreNfProducer = producerProvider.getTbCoreNotificationsMsgProducer();
 | 
			
		||||
            Set<String> tbCoreServices = partitionService.getAllServiceIds(ServiceType.TB_CORE);
 | 
			
		||||
 | 
			
		||||
@ -46,7 +46,7 @@ public class CleanUpService {
 | 
			
		||||
    private final Set<EntityType> skippedEntities = EnumSet.of(
 | 
			
		||||
            EntityType.ALARM, EntityType.QUEUE, EntityType.TB_RESOURCE, EntityType.OTA_PACKAGE,
 | 
			
		||||
            EntityType.NOTIFICATION_REQUEST, EntityType.NOTIFICATION_TEMPLATE,
 | 
			
		||||
            EntityType.NOTIFICATION_TARGET, EntityType.NOTIFICATION_RULE
 | 
			
		||||
            EntityType.NOTIFICATION_TARGET, EntityType.NOTIFICATION_RULE, EntityType.AI_SETTINGS
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    @TransactionalEventListener(fallbackExecution = true) // after transaction commit
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user