Статус группы

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

Например, группа Устройства выделяется красным цветом, если хотя бы одно устройство сообщает об ошибке, желтым, если какое-либо из устройств находится офлайн, зеленым - в остальных случаях.

Расчет статуса группы

Расчет статуса группы происходит по следующим правилам:

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

  • Все строки статусов членов группы просматриваются в таблице статусов сверху вниз.

  • Статус группы устанавливается согласно самой верхней записи таблицы статусов, когда результат выражения статуса члена группы совпадает хотя бы с одной строкой статуса.

Предположим, что у нас есть группа из пяти членов. Выражение каждого члена оценивается в строковое выражение, которое обычно равно 100, 200, 300, 400 или 500 (это строковые константы, а не цифры). Таблица статусов будет выглядеть следующим образом:

Этот пример иллюстрирует, как рассчитывается статус по умолчанию группы устройств. Настройки статусов групп по умолчанию следующие:

Переменная статуса члена: contextStatus

Выражение статуса члена: ({status} % 10 != 2 && ({status} - {status} % 10) == 40 ? 1 : ({status} % 10 == 1 || {status} % 10 == 2 ? 3 : 2))

Таблица статусов:  

Конфигурация статуса вышеобозначенной группы использует информацию о статусе контекста устройств, чтобы рассчитать статус группы устройств. Существует три определенных статуса группы устройств: Error (означает, что как минимум одно устройство сообщает об ошибке), Offline (означает, что ошибок нет, но как минимум одно устройство находится в офлайн или состояние его подключения неизвестно) и Online (означает, что все устройства в группе подключены и не сообщают об ошибках).

Выражение статуса члена анализирует поле статуса с целым числом переменной contextStatus. Этот статус можно интерпретировать как:

  • Количество десяток, представляющих статус синхронизации устройства (20 = синхронизировано, 40 = ошибка синхронизации и т.п.)

  • Количество единиц, представляющих статус соединения устройства (0 = офлайн, 1 = онлайн, 2 = в режиме ожидания, 3 = статус неизвестен)

Выражение статуса отдельного члена группы устройств имеет следующий результат:

  • 1 (Ошибка), если устройство не находится в состоянии ожидания ({status} % 10 != 2) и выдает ошибку синхронизации (({status} - {status} % 10) == 40)

  • 3 (Нормальный), если устройство находится в состоянии ожидания или онлайн ({status} % 10 == 1 || {status} % 10 == 2)

  • 2 (Офлайн) в ином случае

См. статью Конфигурция статуса группы для получения более подробной информации.