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 AGPL v3.0 License.