Контексты

Одним из ключевых понятий платформы SberMobile является контекст. Контекст выступает в роли логического "контейнера" для данных, относящихся к какому-либо системному ресурсу, устройству или источнику данных внутри единой модели данных. Он также предоставляет методы для управления этими данными и контроля над состоянием объекта. Например, внутренняя работа SberMobile осуществляется с контекстами, которые соответствуют устройствам. Создается "Контекст устройства", и этот контекст используется для наблюдения за настройками устройства и их изменения, просмотра событий и т.д.

Дерево контекстов

Практически все данные, контролируемые SberMobile сервером, представлены контекстами. Контексты организованы в иерархическую структуру, которая называется деревом контекстов. Каждая установка SberMobile Server содержит одно дерево контекстов. Данное дерево динамично, поэтому контексты можно добавлять и удалять во время нормальной работы сервера.

Все контексты, доступные в исходном дереве SberMobile сервера, описаны в разделе Справочник по контекстам.

Помимо исходного дерева контекстов сервера, существуют деревья контекстов, используемые определенными модулями платформы. Например, модель данных веб-инструментальной панели  - это отдельное контекстное дерево, чьи контексты представляют UI-компоненты инструментальной панели.

Названия и пути контекстов

Каждый контекст имеет имя. Имя контекста - это уникальный идентификатор контекста среди дочерних компонентов его родительского контекста. Оно представлено в виде строки, которая может содержать только буквы, числа и символ подчеркивания ("_"). Например, контекст пользователя администратор по умолчанию называется "admin".

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

Как уже говорилось, дерево контекста имеет иерархическую структуру, и адресация к каждому контексту в дереве осуществляется через контекстный путь. Проще говоря, контекстный путь - это его уникальный идентификатор внутри всего дерева контекстов.

Контекстный путь можно также назвать полным именем контекста. Путь состоит из одного и более имен контекста, разделенных точками (".").  

Пример 1: контекст users соответствует всем пользователям в системе. Он включает в себя некоторые пользовательские данные и операции, например, операцию "Регистрация новой учетной записи пользователя" и т.д.

Пример 2: контекст users.peter.devices.dev1 (это его полное имя) относится к устройству dev1, зарегистрированного под учетной записью peter. Данный контекст обеспечивает доступ к настройкам устройства и соответствующим операциям, например, "Конфигурировать устройство" и т.д.

Дерево контекстов "растет" из так называемого корневого контекста. Его особенность заключается в имени - "" (пустая строка).

Еще один термин, который имеет отношение к дереву контекстов, - отношение родитель-потомок. Каждый контекст, кроме корневого, имеет родительский контекст. Также каждый контекст может иметь нуль и более потомков. Например, users.admin является потомком контекста users (который, в свою очередь, является контекстом-родителем).

Типы путей контекста

Контекстные пути могут быть абсолютными (т.е. разрешаться из корня дерева контекстов) или относительными (разрешаться из какого-либо другого контекста). Относительные пути начинаются с точки (".").

Описания контекстов

Описание представляет собой понятное для пользователя имя контекста. Оно используется для ссылки на данный контекст из любого места интерфейса пользователя. Например, описание для контекста plugins - "Drivers/Plugins Per-account Configuration".

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

Использование отдельных свойств для имени и описания контекстов позволяет SberMobile поддерживать внутри системы одно имя (уникальный ID) контекста, и одновременно обеспечить максимально понятное название, используя простое описание. Помимо этого, изменение описания для объекта плавно изменит его внешний вид в интерфейсе (UI) без его "нарушения" (потому что внутри системы у него осталось прежнее имя).

Типы контекстов

Тип контекста помогает SberMobile решить, могут ли одни и те же операции применяться к разным контекстам, таким как свойства между ними. Например, вы можете скопировать свойства одного устройства на другое, однако, будет совершенно бессмысленно копировать свойства устройства в контекст Тревоги. Вот почему SberMobile позволяет копировать  свойства контекстов только между самими контекстами (операция, известная также под названием репликация).

Тип контекста также используется для поиска контекстов такого же или похожего вида, как объекты.

Тип контекста представляет собой строку, которая может содержать только буквы, числа, символ нижнего подчеркивания ("_") и точку (".").

Объекты контекста

Каждый контекст включает в себя так называемые объекты (entities). Выделяют четыре типа объектов:

  • Переменные (также называемые свойства или настройки), которые позволяют просматривать или изменять данные, относящиеся к контексту

  • Функции (также называемые операции или методы), используемые для выполнения некоторых действий, связанных с контекстом

  • События (также называемые сообщения или уведомления), необходимые для наблюдения за тем, что происходит в контексте

  • Действия, которые позволяют пользователям платформы взаимодействовать с контекстом в интерактивном режиме через серию UI процедур

Статусы  контекста

Каждый контекст имеет пиктограмму (иконку), которая используется для его визуального представления в пользовательских интерфейсах SberMobile Server (таких как Web UI).

Некоторые контексты могут иметь различные статусы. Например, контекст аппаратного устройства может быть в двух состояниях: "онлайн" и "офлайн". Каждый статус имеет свою пиктограмму и текстовое описание.

Права доступа к контексту

Когда пользователь или ресурс, наследующий права доступа пользователя, пытаются получить доступ к контексту или некоторым его объектам, он делает это, используя свой текущий уровень прав доступа для этого контекста. Последний определяется таблицей прав доступа пользователя.

Уровень прав доступа определяет, что может делать пользователь с контекстом, например:

  • Совсем не может получить доступ к контексту

  • Может выполнять лишь операции чтения и записи определенных переменных

  • Может выполнять определенные функции

  • Может генерировать определенные события или подписываться на них