Feature toggle — техника разработки программных продуктов. Назначение Feature toggle — возможность управления состоянием дополнительной функциональности в работающем приложении.
В Creatio Feature toggle использует непрерывную интеграцию, которая позволяет сохранить работоспособность приложения и скрыть дополнительную функциональность на стадии разработки. Creatio позволяет как разработать пользовательскую функциональность, так и управлять существующей функциональностью. Для этого воспользуйтесь инструкцией, которая приведена в статье Управлять существующей дополнительной функциональностью. Управление состоянием дополнительных функциональностей выполняется на странице Переключение функциональности (Feature toggling) приложения.
Чтобы реализовать пользовательскую дополнительную функциональность:
- Добавьте пользовательскую функциональность.
- Зарегистрируйте пользовательскую функциональность.
- Реализуйте бизнес-логику пользовательской функциональности.
- Настройте состояние пользовательской функциональности для пользователей приложения.
1. Добавить функциональность
- Перейдите на страницу Переключение функциональности (Feature toggling).
- На панели инструментов страницы нажмите на кнопку Добавить (Add) и заполните свойства добавляемой функциональности:
- Код (Сode) — код пользовательской функциональности, которую планируется добавить (обязательное свойство).
- Источник (Source) — источник пользовательской функциональности, которую планируется добавить. По умолчанию функциональность добавляется в таблицу [Feature] базы данных.
- Описание (Description) — описание пользовательской функциональности, которую планируется добавить.
-
Подключите дополнительную функциональность.
- Чтобы подключить функциональность для всех пользователей, воспользуйтесь инструкцией, которая приведена в статье Управлять существующей дополнительной функциональностью.
- Чтобы подключить функциональность для групп пользователей, воспользуйтесь инструкцией, которая приведена в статье Управлять существующей дополнительной функциональностью.
- Нажмите кнопку Сохранить (Save).
В результате пользовательская функциональность будет добавлена в реестр страницы Переключение функциональности (Feature toggling). В качестве источника функциональности устанавливается DbFeatureProvider. Подробнее об источниках читайте в статье Управлять существующей дополнительной функциональностью.
2. Зарегистрировать функциональность
Функциональность регистрируется на back-end стороне с помощью схемы типа Исходный код (Source code).
Чтобы зарегистрировать функциональность:
- Создайте схему исходного кода. Для этого воспользуйтесь инструкцией, которая приведена в статье Исходный код (C#).
-
В дизайнере исходного кода зарегистрируйте пользовательскую функциональность. Для этого реализуйте пользовательский класс, который является наследником класса FeatureMetadata. Используйте шаблон, который приведен ниже.
Если в исходном коде необходимо реализовать несколько функциональностей, то используйте группирующий класс, в котором для каждой функциональности зарегистрируйте собственный пользовательский класс. Это позволяет сократить время на реализацию логики получения состояний функциональностей. Используйте шаблон, который приведен ниже.
- На панели инструментов дизайнера исходного кода нажмите Сохранить (Save) для временного сохранения изменений в метаданных схемы.
- На панели инструментов дизайнера исходного кода нажмите Опубликовать (Publish) для выполнения изменений на уровне базы данных.
3. Реализовать бизнес-логику функциональности
Пользовательская функциональность определяется в блоке условного оператора, который проверяет состояние функциональности (т. е. значение в колонке [FeatureState] таблицы [AdminUnitFeatureState] базы данных).
Способы реализации бизнес-логики пользовательской функциональности:
- На front-end стороне. Для этого воспользуйтесь инструкцией, которая приведена в пункте Реализовать бизнес-логику функциональности (front-end).
- На back-end стороне. Для этого воспользуйтесь инструкцией, которая приведена в пункте Реализовать бизнес-логику функциональности (back-end).
Реализовать бизнес-логику функциональности (front-end)
- Создайте схему модели представления. Для этого воспользуйтесь инструкцией, которая приведена в статье Клиентский модуль.
-
В дизайнере модуля добавьте исходный код. В исходном коде приложения присутствует блок с дополнительной функциональностью и условный оператор, который определяет состояние подключения функциональности и логику работы приложения в каждом из состояний. Для этого используйте шаблон, который приведен ниже.
Метод getIsEnabled() на front-end стороне проверяет, подключена ли пользовательская функциональность. В нашем примере это функциональность с названием SomeNewFeature.
Метод getIsDisabled() на front-end стороне проверяет, отключена ли пользовательская функциональность. В нашем примере это функциональность с названием SomeNewFeature.
В зависимости от полученного значения, выполняется разная бизнес-логика.
- На панели инструментов дизайнера модуля нажмите Сохранить (Save).
Чтобы пользовательская функциональность отобразилась в клиентском коде и загружалась браузером на front-end стороне, обновите страницу.
Реализовать бизнес-логику функциональности (back-end)
- Создайте схему исходного кода. Для этого воспользуйтесь инструкцией, которая приведена в статье Исходный код (C#).
-
В дизайнере исходного кода реализуйте пользовательскую функциональность. В исходном коде приложения присутствует блок с дополнительной функциональностью и условный оператор, который определяет состояние подключения функциональности и логику работы приложения в каждом из состояний.
Класс Terrasoft.Configuration.FeatureUtilities предоставляет набор расширяющих методов класса UserConnection, которые позволяют использовать функциональность Feature toggle в схемах исходного кода на back-end стороне приложения. Для этого используйте шаблон, который приведен ниже.
Метод GetIsEnabled() на back-end стороне проверяет, подключена ли пользовательская функциональность. В нашем примере это функциональность с названием SomeNewFeature.
Метод GetIsDisabled() на back-end стороне проверяет, отключена ли пользовательская функциональность. В нашем примере это функциональность с названием SomeNewFeature.
В зависимости от полученного значения, выполняется разная бизнес-логика.
Если вы используете группирующий класс, то для реализации набора пользовательских функциональностей используйте шаблон, который приведен ниже.
Метод GetIsEnabled() на back-end стороне проверяет, подключены ли пользовательские функциональности, которые зарегистрированы в группирующем классе. В нашем примере это класс с названием SomeModuleFeatures.
Метод GetIsDisabled() на back-end стороне проверяет, отключены ли пользовательские функциональности, которые зарегистрированы в группирующем классе. В нашем примере это класс с названием SomeModuleFeatures.
В зависимости от полученного значения, выполняется разная бизнес-логика.
- На панели инструментов дизайнера исходного кода нажмите Сохранить (Save) для временного сохранения изменений в метаданных схемы.
- На панели инструментов дизайнера исходного кода нажмите Опубликовать (Publish) для выполнения изменений на уровне базы данных.
4. Настроить состояние функциональности для пользователей приложения
Чтобы настроить состояние пользовательской функциональности для пользователей приложения, воспользуйтесь инструкцией, которая приведена в статье Управлять существующей дополнительной функциональностью.