Перезапись текста Cumulocity в зависимости от типа - PullRequest
0 голосов
/ 01 мая 2018

Мы столкнулись с непонятной проблемой с типами сигналов cumulocity.

Мы обнаружили, что при создании тревоги с агентом через HTTPS или MQTT поле «тип» самого первого создания тревоги (для данного типа) определяет серьезность и текстовые поля любых последующих вызовов. с тем же типом.

Например, если агент MQTT запускается впервые, он запускается:

client.publish('s/us', '301,Critical,TextA');
await waitFor(400);
client.publish('s/us', '302,Major,TextB');
await waitFor(400);
client.publish('s/us', '303,Minor,TextC');
await waitFor(400);
client.publish('s/us', '304,Warning,TextD');

Если те же строки кода впоследствии изменяются следующим образом:

// Note that 301 is used for all alarms, indicating severity critical
client.publish('s/us', '301,Critical,Apple');
await waitFor(400);
client.publish('s/us', '301,Major,Banana');
await waitFor(400);
client.publish('s/us', '301,Minor,Coconut');
await waitFor(400);
client.publish('s/us', '301,Warning,Durian');

Все созданные тревоги будут иметь серьезность И текст, соответствующий их серьезности и тексту в первом наборе вызовов, независимо от того, что мы сейчас указываем серьезность КРИТИЧЕСКИЙ и различный текст для каждого; например, будет создан новый сигнал тревоги с {severity: "MAJOR", text: "TextB"}.

Что странно, это поведение работает на основе префиксов . Если код изменяется следующим образом:

client.publish('s/us', '301,Critical1000,Apple');
await waitFor(400);
client.publish('s/us', '301,Major1000,Banana');
await waitFor(400);
client.publish('s/us', '301,Minor1000,Coconut');
await waitFor(400);
client.publish('s/us', '301,Warning1000,Durian');

Созданные аварийные сигналы будут снова сохранять серьезность и текст от первого создания аварийных сигналов, например, будет создан третий сигнал тревоги с {severity: "MAJOR", text: "TextB", type: "Major1000"}.

ОК, поэтому происходит какое-то кэширование на основе префиксов. Может быть, есть способ очистить его?

Однако мне еще предстоит описать самое загадочное явление . Все, что я до сих пор связывал, относится к каждому ManagedObject. Кэширование не переносится на новое устройство / управляемый объект.

Однако, по всему нашему арендатору, для любого источника , любой сигнал тревоги с {type: "Warning"} или чей «тип» начинается с префикса «Warning» , будет иметь {severity: "WARNING", text: "WOAHDUDE"}.

Напомним, что если мы попытаемся создать Alarm с типом «Warning», исходящим из ЛЮБОГО источника, на нашей панели инструментов появится новый "WOAHDUDE".

В какой-то момент я создал будильник с {severity: "WARNING", type: "Warning", text: "WOAHDUDE"}. Я понятия не имею, как это создало своего рода шаблон "WOAHDUDE" на протяжении всего срока аренды, но, похоже, так оно и есть. Как я могу отменить это?

1 Ответ

0 голосов
/ 02 мая 2018

Я думаю, что вы испытываете только дедупликацию по сигналу (https://www.cumulocity.com/guides/reference/alarms/ поиск дедупликации).

Всякий раз, когда имеется активная тревога для устройства с заданным типом x, и вы создаете новую тревогу для того же устройства с тем же типом, тревога полностью сбрасывается, и в первой тревоге счетчик увеличивается.

Таким образом, если второй сигнал тревоги имеет другую серьезность, текст или что-либо еще, эта информация не обновляется в существующий сигнал тревоги.

Относительно проблемы со всеми аварийными сигналами с префиксом «Предупреждение» в типе, получающем один и тот же текст. Может быть, вы создали отображение тревоги в администрации. Эти сопоставления имеют ширину арендатора и перезаписывают серьезность и текст аварийных сообщений при создании.

...