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

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

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

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

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

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

    Результат выражения статуса члена группы

    Статус группы (Цвет)

    100

    Зеленый

    200

    Желтый

    300

    Красный

    400

    Малиновый

    500

    Синий

    Приведенная ниже таблица показывает, в какой статус перейдет группа согласно различным комбинациям статусных строк членов группы и приведенной выше таблицы:

    Строки статуса члена группы

    Статус группы (Цвет)

    100, 200, 300, 400, 500

    Зеленый

    500, 400, 300, 200, 100

    Зеленый

    300, 300, 300, 400, 500

    Красный

    500, 500, 500, 500, 500

    Синий

    500, 500, 200, 500, 500

    Желтый

    200, 200, 500, 200, 200

    Желтый

    100, 200, 300, 400, 123

    Не определен

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

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

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

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

    Результат выражения статуса члена

    Цвет

    Описание

    1

    Темно-красный

    Ошибка

    2

    Темно-желтый

    Офлайн

    3

    Темно-зеленый

    Онлайн

    Конфигурация статуса вышеобозначенной группы использует информацию о статусе контекста устройств, чтобы рассчитать статус группы устройств. Существует три определенных статуса группы устройств: 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 (Офлайн) в ином случае

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