Видимое и действительное дерево контекстов

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

Необходимо знать, что структура дерева контекстов, видимого в Системном дереве и подобных компонентах (таких как Селектор объектов) не совпадает полностью со структурой дерева контекстов SberMobile Server. Для удобства пользования, узлы, которые относятся к одному серверному контексту, могут появиться в двух, трех и более местах Системного дерева.

Например, один контекст устройства, представляющий аппаратное устройство, может появиться одновременно в:

  • узле Устройства, отображая устройство активного пользователя
  • узле Все устройства, включающем все устройства в системе
  • одном и более узлах под названием Группа устройств

На приведенном выше рисунке, узлы, на которые указывают стрелки, относятся к одному серверному контексту. При наведении курсора мыши на узел Системного дерева, появится всплывающая подсказка, в которой указан его абсолютный серверный путь:

Данное различие может стать причиной неожиданных результатов при проверке путей контекстов, видимых в дереве. Например, дерево может включать в себя контекст Устройство ABC, который расположен в Корень > Все устройства. Однако, настоящий серверный путь к данному контексту является users.Owner_Name.devices.deviceABC где Owner_Name - пользователь SberMobile Server, которому принадлежит устройство. Серверный контекст Все устройства не имеет действительных потомков, т.к. он является так называемым отображенным контекстом.

Пути контейнеров

Неопытные пользователи SberMobile иногда путают "действительные" и "отображаемые" контексты контейнеров.

Большинство контекстов в корне системного дерева отображаемые. Например, если вы наведете мышку на узел Устройства, вы увидите, что его путь контекста - это devices:

Если вы развернете этот узел и проверите путь контекста устройства, расположенного прямо под ним, вы увидите, что его путь users.admin.devices.virtual:

Это означает, что действительный контейнер нашего устройства под названием virtual - это users.admin.devices. Он принадлежит пользователю системы с именем admin. Мы можем найти этот действительный контейнер, пройдя путь Users => admin (Administrator) => Devices (заметьте третью стрелку на нижнем изображении):

Большинство контекстов контейнеров в корне видимого системного дерева отображаемые, т.е. узел Queries показывает доступные запросы всех пользователей и т.д.

Однако контексты групп, расположенные в контекстах этих контейнеров, не отображаемые, т.е. узел Query Groups, расположенный в корне узла Queries, показывает только группы, доступные для текущего пользователя. Например, чтобы посмотреть группы запросов, доступные другим пользователям, следуйте Users > User > Queries > Query Groups.