Refactor
This commit is contained in:
parent
22ada62f3b
commit
c98a2d18a1
@ -101,12 +101,12 @@ public class DefaultAlarmSubscriptionService extends AbstractSubscriptionService
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ListenableFuture<Boolean> clearAlarm(TenantId tenantId, AlarmId alarmId, JsonNode details, long clearTs) {
|
public ListenableFuture<Boolean> clearAlarm(TenantId tenantId, AlarmId alarmId, JsonNode details, long clearTs) {
|
||||||
ListenableFuture<AlarmOperationResult> result = clearAlarmAndGetOperationResult(tenantId, alarmId, details, clearTs);
|
ListenableFuture<AlarmOperationResult> result = clearAlarmForResult(tenantId, alarmId, details, clearTs);
|
||||||
return Futures.transform(result, AlarmOperationResult::isSuccessful, wsCallBackExecutor);
|
return Futures.transform(result, AlarmOperationResult::isSuccessful, wsCallBackExecutor);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ListenableFuture<AlarmOperationResult> clearAlarmAndGetOperationResult(TenantId tenantId, AlarmId alarmId, JsonNode details, long clearTs) {
|
public ListenableFuture<AlarmOperationResult> clearAlarmForResult(TenantId tenantId, AlarmId alarmId, JsonNode details, long clearTs) {
|
||||||
ListenableFuture<AlarmOperationResult> result = alarmService.clearAlarm(tenantId, alarmId, details, clearTs);
|
ListenableFuture<AlarmOperationResult> result = alarmService.clearAlarm(tenantId, alarmId, details, clearTs);
|
||||||
Futures.addCallback(result, new AlarmUpdateCallback(), wsCallBackExecutor);
|
Futures.addCallback(result, new AlarmUpdateCallback(), wsCallBackExecutor);
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
@ -47,7 +47,7 @@ public interface RuleEngineAlarmService {
|
|||||||
|
|
||||||
ListenableFuture<Boolean> clearAlarm(TenantId tenantId, AlarmId alarmId, JsonNode details, long clearTs);
|
ListenableFuture<Boolean> clearAlarm(TenantId tenantId, AlarmId alarmId, JsonNode details, long clearTs);
|
||||||
|
|
||||||
ListenableFuture<AlarmOperationResult> clearAlarmAndGetOperationResult(TenantId tenantId, AlarmId alarmId, JsonNode details, long clearTs);
|
ListenableFuture<AlarmOperationResult> clearAlarmForResult(TenantId tenantId, AlarmId alarmId, JsonNode details, long clearTs);
|
||||||
|
|
||||||
ListenableFuture<Alarm> findAlarmByIdAsync(TenantId tenantId, AlarmId alarmId);
|
ListenableFuture<Alarm> findAlarmByIdAsync(TenantId tenantId, AlarmId alarmId);
|
||||||
|
|
||||||
|
|||||||
@ -18,6 +18,7 @@ package org.thingsboard.rule.engine.profile;
|
|||||||
import com.fasterxml.jackson.databind.JsonNode;
|
import com.fasterxml.jackson.databind.JsonNode;
|
||||||
import com.fasterxml.jackson.databind.node.ObjectNode;
|
import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||||
import com.google.common.util.concurrent.ListenableFuture;
|
import com.google.common.util.concurrent.ListenableFuture;
|
||||||
|
import com.google.common.util.concurrent.MoreExecutors;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
@ -26,17 +27,12 @@ import org.thingsboard.rule.engine.api.TbContext;
|
|||||||
import org.thingsboard.rule.engine.profile.state.PersistedAlarmRuleState;
|
import org.thingsboard.rule.engine.profile.state.PersistedAlarmRuleState;
|
||||||
import org.thingsboard.rule.engine.profile.state.PersistedAlarmState;
|
import org.thingsboard.rule.engine.profile.state.PersistedAlarmState;
|
||||||
import org.thingsboard.server.common.data.DataConstants;
|
import org.thingsboard.server.common.data.DataConstants;
|
||||||
import org.thingsboard.server.common.data.Tenant;
|
|
||||||
import org.thingsboard.server.common.data.alarm.Alarm;
|
import org.thingsboard.server.common.data.alarm.Alarm;
|
||||||
import org.thingsboard.server.common.data.alarm.AlarmSeverity;
|
import org.thingsboard.server.common.data.alarm.AlarmSeverity;
|
||||||
import org.thingsboard.server.common.data.alarm.AlarmStatus;
|
import org.thingsboard.server.common.data.alarm.AlarmStatus;
|
||||||
import org.thingsboard.server.common.data.device.profile.AlarmConditionKeyType;
|
import org.thingsboard.server.common.data.device.profile.AlarmConditionKeyType;
|
||||||
import org.thingsboard.server.common.data.device.profile.DeviceProfileAlarm;
|
import org.thingsboard.server.common.data.device.profile.DeviceProfileAlarm;
|
||||||
import org.thingsboard.server.common.data.id.CustomerId;
|
|
||||||
import org.thingsboard.server.common.data.id.EntityId;
|
import org.thingsboard.server.common.data.id.EntityId;
|
||||||
import org.thingsboard.server.common.data.id.TenantId;
|
|
||||||
import org.thingsboard.server.common.data.query.EntityKeyType;
|
|
||||||
import org.thingsboard.server.common.data.query.KeyFilter;
|
|
||||||
import org.thingsboard.server.common.msg.TbMsg;
|
import org.thingsboard.server.common.msg.TbMsg;
|
||||||
import org.thingsboard.server.common.msg.TbMsgMetaData;
|
import org.thingsboard.server.common.msg.TbMsgMetaData;
|
||||||
import org.thingsboard.server.common.msg.queue.ServiceQueue;
|
import org.thingsboard.server.common.msg.queue.ServiceQueue;
|
||||||
@ -120,15 +116,17 @@ class AlarmState {
|
|||||||
for (AlarmRuleState state : createRulesSortedBySeverityDesc) {
|
for (AlarmRuleState state : createRulesSortedBySeverityDesc) {
|
||||||
stateUpdate = clearAlarmState(stateUpdate, state);
|
stateUpdate = clearAlarmState(stateUpdate, state);
|
||||||
}
|
}
|
||||||
Alarm clearedAlarm;
|
ListenableFuture<AlarmOperationResult> alarmClearOperationResult = ctx.getAlarmService().clearAlarmForResult(
|
||||||
try {
|
ctx.getTenantId(), currentAlarm.getId(), createDetails(clearState), System.currentTimeMillis()
|
||||||
clearedAlarm = ctx.getAlarmService().clearAlarmAndGetOperationResult(
|
);
|
||||||
ctx.getTenantId(), currentAlarm.getId(), createDetails(clearState), System.currentTimeMillis()
|
alarmClearOperationResult.addListener(() -> {
|
||||||
).get().getAlarm();
|
try {
|
||||||
} catch (InterruptedException | ExecutionException e) {
|
Alarm clearedAlarm = alarmClearOperationResult.get().getAlarm();
|
||||||
throw new RuntimeException(e);
|
pushMsg(ctx, new TbAlarmResult(false, false, true, clearedAlarm));
|
||||||
}
|
} catch (Exception e) {
|
||||||
pushMsg(ctx, new TbAlarmResult(false, false, true, clearedAlarm));
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}, MoreExecutors.directExecutor());
|
||||||
currentAlarm = null;
|
currentAlarm = null;
|
||||||
} else if (AlarmEvalResult.FALSE.equals(evalResult)) {
|
} else if (AlarmEvalResult.FALSE.equals(evalResult)) {
|
||||||
stateUpdate = clearAlarmState(stateUpdate, clearState);
|
stateUpdate = clearAlarmState(stateUpdate, clearState);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user