Skip to content

Контексты ​

Контекст — это описание атрибута, который SDK передаёт при оценке флага. Контекст-дефинишены не обязательны — SDK работает без них. Они нужны, чтобы в веб-панели было удобно настраивать правила: с подсказками по типу, белым списком значений и защитой от опечаток.

Контекст-дефинишены ​

Контекст-дефинишен (context definition) описывает атрибут: его ключ, тип данных и режим валидации.

ПолеНазначениеПример
nameЧеловекочитаемое имя«Страна»
keyМашинный ключ (поле в constraint)country
typeТип данных: string, number, time, semverstring
isStrictВключить whitelist допустимых значенийtrue

Whitelist значений ​

Контекст можно настроить с белым списком допустимых значений. Это полезно, когда вы хотите ограничить выбор значений при настройке правил в веб-панели — например, чтобы никто не написал rus вместо RU. При включённом whitelist в constraints и сегментах доступны только заданные значения.

Если whitelist не нужен — просто не включайте его, и тогда при настройке правил можно будет ввести любое значение.

Типы контекста и операторы ​

Тип контекста (type) определяет, как операторы сравнения интерпретируют значение:

ОператорОписаниеstringnumbertimesemverПример
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 при оценке флага:

java
MozhnoContext ctx = MozhnoContext.builder()
    .userId("user-123")
    .addProperty("country", "RU")
    .addProperty("plan", "premium")
    .build();

boolean enabled = client.isEnabled("new-checkout", ctx);

Атрибуты country и plan могут быть определены как контекст-дефинишены для удобства настройки правил в веб-панели, но SDK может передавать любые атрибуты независимо от этого.

Что дальше? ​

Released under the BSL 1.1 License.