Контексты
Контекст — это описание атрибута, который SDK передаёт при оценке флага. Контекст-дефинишены не обязательны — SDK работает без них. Они нужны, чтобы в веб-панели было удобно настраивать правила: с подсказками по типу, белым списком значений и защитой от опечаток.
Контекст-дефинишены
Контекст-дефинишен (context definition) описывает атрибут: его ключ, тип данных и режим валидации.
| Поле | Назначение | Пример |
|---|---|---|
name | Человекочитаемое имя | «Страна» |
key | Машинный ключ (поле в constraint) | country |
type | Тип данных: string, number, time, semver | string |
isStrict | Включить whitelist допустимых значений | true |
Whitelist значений
Контекст можно настроить с белым списком допустимых значений. Это полезно, когда вы хотите ограничить выбор значений при настройке правил в веб-панели — например, чтобы никто не написал rus вместо RU. При включённом whitelist в constraints и сегментах доступны только заданные значения.
Если whitelist не нужен — просто не включайте его, и тогда при настройке правил можно будет ввести любое значение.
Типы контекста и операторы
Тип контекста (type) определяет, как операторы сравнения интерпретируют значение:
| Оператор | Описание | string | number | time | semver | Пример |
|---|---|---|---|---|---|---|
in | Входит в список | ✓ | country in [RU, BY] | |||
not_in | Не входит в список | ✓ | plan not_in [free] | |||
eq | Равенство | ✓ | ✓ | ✓ | ✓ | age eq 18 |
ne | Неравенство | ✓ | ✓ | ✓ | ✓ | plan ne free |
gt | Больше | ✓ | ✓ | ✓ | ✓ | version gt 2.0 |
gte | Больше или равно | ✓ | ✓ | ✓ | ✓ | age gte 21 |
lt | Меньше | ✓ | ✓ | ✓ | ✓ | priority lt 5 |
lte | Меньше или равно | ✓ | ✓ | ✓ | ✓ | retries lte 3 |
contains | Содержит подстроку | ✓ | email contains @corp.com |
Использование в коде
Контекст передаётся в SDK при оценке флага:
MozhnoContext ctx = MozhnoContext.builder()
.userId("user-123")
.addProperty("country", "RU")
.addProperty("plan", "premium")
.build();
boolean enabled = client.isEnabled("new-checkout", ctx);Атрибуты country и plan могут быть определены как контекст-дефинишены для удобства настройки правил в веб-панели, но SDK может передавать любые атрибуты независимо от этого.
Что дальше?
- Флаги — типы флагов и роллаут
- Правила активации — как контекст используется в правилах
- Таргетинг — руководство по настройке таргетинга