Работа с метаданными

Метаданные устройства представляют собой определения переменных (настройки), функций (операции) и событий (оповещения), предоставляемых устройством. Flexible драйвер поддерживает два типа метаданных устройств:

  • Статические метаданные предполагают, что определения доступных переменных/функций/событий зафиксированы в профиле устройства на стороне сервера
  • Динамические метаданные предполагают, что определения переменных/функций/событий извлекаются из устройства при синхронизации

Настройка Flexible драйвера отличается в случае со статическими и динамическими метаданными.

Работа со статическими метаданными

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

Работа с динамическими метаданными

Чтобы настроить Flexible драйвер для чтения определений переменных/функций/событий с устройства, выполните следующее:

  • Задайте Выражение определения переменных, Выражение определения функций и Выражение определения событий в группе Динамические метаданные раздела Операции в профиле устройства. Каждое из этих выражений должно возвращать Таблицу данных с перечнем всех переменных/функций/событий, извлеченных с устройства. Каждый ряд в этих таблицах должен содержать определение одной переменной/функции/события.
  • Обработка таблиц, полученных  в результате указанных выше выражений, будет происходить построчно. Для каждого ряда драйвер будет вычислять выражения из групп Динамические переменные, Динамические функции и Динамические события соответственно. После вычисления всех выражений драйвер будет использовать их результаты для создания определения переменной/функции/события и добавления его к метаданным.

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

  • Выражение имени должно возвращать имя переменной
  • Выражение описания должно возвращать удобочитаемое для человека описание переменной
  • Выражение чтения должно возвращать TRUE, если переменная читается, и FALSE в другом случае
  • Выражение записи должно возвращать TRUE, если переменная записывается, и FALSE в другом случае
  • Выражение формата должно возвращать формат переменной, кодированный в строку
  • Выражение группы должно возвращать группу переменной, либо NULL, если переменная не входит ни в одну группу
  • Выражение подсказки должно возвращать подробное описание переменной
  • Выражение запроса чтения должно возвращать текст другого выражения, которое будет использоваться для подготовки запроса чтения переменной с дальнейшей отправкой на устройство
  • Выражение разбора запроса чтения должно возвращать текст другого выражения, которое будет использоваться для преобразования ответа устройства в новое значение переменной
  • Выражение запроса записи должно возвращать текст другого выражения,  которое будет использоваться для подготовки запроса записи переменной с дальнейшей отправкой на устройство
  • Выражение разбора запроса записи должно возвращать текст другого выражения, которое будет использоваться для проверки успешности операции записи