Browse Source

Merge pull request #10015 from dskarzh/fix/create-alarm-node/entity-updated-event

Fix 'create alarm' node not sending 'ENTITY_CREATED' if severity has changed
pull/10042/head
Andrew Shvayka 2 years ago
committed by GitHub
parent
commit
ebbd290630
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 4
      rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/action/TbAbstractAlarmNode.java
  2. 5
      rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/action/TbAlarmResult.java
  3. 1
      rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/action/TbAlarmNodeTest.java

4
rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/action/TbAbstractAlarmNode.java

@ -60,7 +60,7 @@ public abstract class TbAbstractAlarmNode<C extends TbAbstractAlarmNodeConfigura
ctx.tellNext(msg, TbNodeConnectionType.FALSE);
} else if (alarmResult.isCreated) {
tellNext(ctx, msg, alarmResult, TbMsgType.ENTITY_CREATED, "Created");
} else if (alarmResult.isUpdated) {
} else if (alarmResult.isUpdated || alarmResult.isSeverityUpdated) {
tellNext(ctx, msg, alarmResult, TbMsgType.ENTITY_UPDATED, "Updated");
} else if (alarmResult.isCleared) {
tellNext(ctx, msg, alarmResult, TbMsgType.ALARM_CLEAR, "Cleared");
@ -93,7 +93,7 @@ public abstract class TbAbstractAlarmNode<C extends TbAbstractAlarmNodeConfigura
TbMsgMetaData metaData = originalMsg.getMetaData().copy();
if (alarmResult.isCreated) {
metaData.putValue(DataConstants.IS_NEW_ALARM, Boolean.TRUE.toString());
} else if (alarmResult.isUpdated) {
} else if (alarmResult.isUpdated || alarmResult.isSeverityUpdated) {
metaData.putValue(DataConstants.IS_EXISTING_ALARM, Boolean.TRUE.toString());
} else if (alarmResult.isCleared) {
metaData.putValue(DataConstants.IS_CLEARED_ALARM, Boolean.TRUE.toString());

5
rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/action/TbAlarmResult.java

@ -37,10 +37,11 @@ public class TbAlarmResult {
}
public static TbAlarmResult fromAlarmResult(AlarmApiCallResult result) {
boolean isSeverityChanged = result.isSeverityChanged();
return new TbAlarmResult(
result.isCreated(),
result.isModified() && !result.isSeverityChanged(),
result.isSeverityChanged(),
result.isModified() && !isSeverityChanged,
isSeverityChanged,
result.isCleared(),
result.getAlarm());
}

1
rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/action/TbAlarmNodeTest.java

@ -253,6 +253,7 @@ public class TbAlarmNodeTest {
AlarmApiCallResult.builder()
.successful(true)
.modified(true)
.old(new Alarm(activeAlarm))
.alarm(new AlarmInfo(expectedAlarm))
.build());
node.onMsg(ctx, msg);

Loading…
Cancel
Save