Снятие тревоги

image0

Этот узел загружает последнюю тревогу с настроенным типом тревоги для отправителя сообщения и сбрасывает тревогу, если она существует.

Конфигурация узла:

  • Alarm Details Builder - скрипт

  • Alarm Type - любая строка, представляющая тип тревоги

Узел правил имеет возможность получить тип тревоги, используя шаблон с полями из метаданных сообщения:

image1

Alarm Details Builder скрипт, используемый для обновления сведений о тревоге JsonNode. Это полезно для хранения дополнительных параметров внутри Alarm. Например, вы можете сохранить пару имя/значение атрибута из полезной нагрузки исходного сообщения или метаданных.

Alarm Details Builder скрипт должен возвращать объект details.

image2

  • Доступ к данным сообщения можно получить через свойство msg. Например, msg.temperature

  • Доступ к метаданным сообщения можно получить через свойство metadata. Например, metadata.customerName

  • Доступ к типу сообщения можно получить через свойство msgType. Например msgType

  • Доступ к текущим сведениям о тревоге можно получить через metadata.prevAlarmDetails.

ОБРАТИТЕ ВНИМАНИЕ: metadata.prevAlarmDetails — это необработанное строковое поле, и его необходимо преобразовать в объект, используя следующую конструкцию:

var details = {};
if (metadata.prevAlarmDetails) {
    details = JSON.parse(metadata.prevAlarmDetails);
}

Функцию сценария Alarm Details Builder можно проверить с помощью функции Test JavaScript.

Пример функции конструктора деталей

Эта функция берет свойство счетчика из предыдущего сигнала тревоги и увеличивает его. Также помещает атрибут температуры из полезной нагрузки входящего сообщения в сведения о тревоге.

var details = {temperature: msg.temperature, count: 1};

if (metadata.prevAlarmDetails) {
    var prevDetails = JSON.parse(metadata.prevAlarmDetails);
    if(prevDetails.count) {
        details.count = prevDetails.count + 1;
    }
}

return details;

Этот узел обновляет текущий сигнал тревоги:

  • изменяет статус тревоги status на CLEARED_ACK, если она уже была подтверждена, иначе на CLEARED_UNACK

  • устанавливает clear time на текущее системное время

  • обновляет сведения об аварийных сигналах с помощью нового объекта, возвращенного из сценария Alarm Details Builder.

В случае, когда Тревога не существует или это уже Сброшенная Тревога, исходное Сообщение будет передано следующим узлам через цепочку False.

В противном случае новое сообщение будет передано по цепочке Cleared.

Сообщение на выходе будет иметь следующую структуру:

  • Message Type - ALARM

  • Originator - тот же отправитель из входящего сообщения

  • Payload - JSON-представление тревоги, которая была сброшена

  • Metadata - все поля из исходных метаданных сообщения. Также будет добавлено дополнительное свойство внутри метаданных - isClearedAlarm со значением true.

Вот пример полезной нагрузки исходящего сообщения:

{
    "tenantId": {
        "entityType": "TENANT",
        "id": "22cd8888-5dac-11e8-bbab-ad47060c9bbb"
    },
    "type": "High Temperature Alarm",
    "originator": {
        "entityType": "DEVICE",
        "id": "11cd8777-5dac-11e8-bbab-ad55560c9ccc"
    },
    "severity": "CRITICAL",
    "status": "CLEARED_UNACK",
    "startTs": 1526985698000,
    "endTs": 1526985698000,
    "ackTs": 0,
    "clearTs": 1526985712000,
    "details": {
        "temperature": 70,
        "ts": 1526985696000
    },
    "propagate": true,
    "id": "33cd8999-5dac-11e8-bbab-ad47060c9431",
    "createdTime": 1526985698000,
    "name": "High Temperature Alarm"
}