Интеграция OpenFeature с autumn: провайдер фича-флагов поднимается по настройкам приложения, а клиент оценки внедряется как обычная зависимость.
Библиотека openfeature даёт стандартный API флагов, но требует ручной
настройки провайдера при старте. Этот стартер убирает ручную работу: секция в autumn-properties.json вместо кода
инициализации.
opm install autumn-openfeature
Опишите провайдера в autumn-properties.json:
{
"openfeature": {
"Провайдер": "json",
"ПутьКФайлу": "flags.json",
"Домен": "магазин"
}
}Дальше прикладной компонент объявляет зависимость и сразу работает с флагами:
&Пластилин Перем FeatureClient;
&Желудь
Процедура ПриСозданииОбъекта()
КонецПроцедуры
Процедура ОформитьЗаказ() Экспорт
Контекст = Новый EvaluationContext(ИдентификаторПользователя, Новый Структура("plan", "pro"));
Если FeatureClient.ПолучитьЛогическое("new-checkout", Ложь, Контекст) Тогда
НоваяКорзина();
Иначе
СтараяКорзина();
КонецЕсли;
КонецПроцедурыНи УстановитьПровайдер, ни путь к файлу флагов в коде не упоминаются: сменить источник флагов можно правкой настроек.
Секция openfeature в autumn-properties.json:
| Параметр | По умолчанию | Назначение |
|---|---|---|
Провайдер |
memory |
json - флаги из файла, memory - набор в памяти, none - только значения по умолчанию |
ПутьКФайлу |
flags.json |
Файл с описанием флагов для провайдера json |
Домен |
"" |
Домен, с которым создаётся клиент; попадает в метаданные |
Формат файла флагов описан в README библиотеки openfeature: простое значение либо развёрнутое описание с вариантами и правилами таргетинга.
Значение none оставляет провайдер-заглушку. Это рабочий режим для тестов и для стендов, где флаги отключены:
приложение получает переданные значения по умолчанию и не зависит от внешнего источника.
| Класс | Роль |
|---|---|
НастройкиФлагов |
Желудь с прочитанной секцией openfeature: Провайдер(), ПутьКФайлу(), Домен() |
ФабрикаФлагов |
Дуб с завязью FeatureClient: поднимает провайдера и отдаёт клиента |
Провайдер регистрируется при первом обращении к клиенту, а не в конструкторе: иначе стартер завязался бы на порядок инициализации компонентов, а он в autumn не гарантирован.
oscript examples/ВнедрениеЧерезОсень.os
opm run install
opm run test