Маски контекстов

Маска контекста является строкой, которая соответствует одному и более контекстам. Маска похожи на путь контекста, но ее сегменты (части, разделенные точками) могут включать специальные символы ("*") вместо имен контекстов. Они напоминают маски имен файлов (например, "*.txt"), которые часто используются при работе с компьютерами. Маски контекстов могут разрешаться в несколько путей контекстов, которые соответствуют маске

Пример маски контекста, который следует читать как "все устройства всех пользователей": users.*.devices.*

Группы обеспечивают специальный синтаксис контекстных масок для доступа ко всем членам группы. Для более подробной информации обратитесь к разделу Маски контекстов членов группы.

Разрешение масок

Маски могут разрешаться в список путей контекста. Например, маска users.* может разрешиться в следующий список путей:

users.admin

users.user1

users.user2

и т.д.

А маска users.*.devices.* может разрешиться в:

users.admin.devices.thermometer1

users.admin.devices.thermometer2

users.admin.devices.thermometer3

users.user1.devices.gateway1

users.user1.devices.gateway2

users.user2.devices.plc

Процесс разрешения маски всегда включает проверку прав доступа. Например, маска users.* разрешается в список пользовательских контекстов, доступных при правах доступа для пользователя, который запрашивает операцию. Она будет разрешаться в список всех пользователей в системе, только если пользователь, запускающий операцию, имеет права доступа ко всем учетным записям.

Совпадение с маской контекста

Путь контекста может совпадать с маской. Помимо этого, маска может расширять путь, или же путь может расширять маску.

Чтобы совпадать с маской контекста, путь должен содержать такое же число сегментов (частей, разделенных "."), что и маска. Если какой-либо сегмент не содержит специальный  символ ("*"), он должен быть идентичным соответствующему сегменту в пути контекста.

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

Аналогично, если маска расширяет путь, ее начало должно совпадать с путем, но она будет содержать в себе и дополнительные сегменты.

Примеры совпадения с маской

Путь users.admin совпадает с маской users.*

Путь users.admin не совпадает с маской external_device_servers.*

Путь users.admin.devices.c1 удлиняет маску users.*. Он длиннее маски, и поэтому он совпадает с началом маски и добавляет сегменты.

Путь users.admin.devices.c1 не удлиняет маску users.*.alerts. Маска не совпадает с тремя главными сегментами пути.

Маска users.*.devices.* удлиняет путь users.admin, потому что она добавляет информацию к нему

Маска users.*.devices.* не удлиняет путь reports.impacts_report, потому что они не совпадают

Маска devices.* не совпадает с путем users.user1.devices. Маска содержит несуществующий ведущий сегмент devices. Например, маска users.*.devices.* может использоваться для совпадения с этим путем.