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