Feature toggle — техника разработки программных продуктов. Назначение Feature toggle — возможность управления состоянием дополнительной функциональности в работающем приложении.
В Creatio Feature toggle использует непрерывную интеграцию, которая позволяет сохранить работоспособность приложения и скрыть дополнительную функциональность на стадии разработки. Кроме управления существующей дополнительной функциональность, Creatio позволяет разработать пользовательскую функциональность. Для этого воспользуйтесь инструкцией, которая приведена в статье Реализовать пользовательскую дополнительную функциональность. Управление состоянием дополнительных функциональностей выполняется на странице Переключение функциональности (Feature toggling) приложения.
Понятие Feature toggle описано на Википедии.
Хранить сведения о дополнительной функциональности
Сведения о дополнительной функциональности хранятся в базе данных приложения.
Таблицы базы данных, которые хранят информацию о дополнительной функциональности:
- [Feature] — перечень дополнительной функциональности, которая доступна для подключения/отключения. По умолчанию таблица пуста.
- [AdminUnitFeatureState] (колонка [FeatureState]) — информация о состоянии дополнительной функциональности (подключена/отключена). Таблица [AdminUnitFeatureState] связывает таблицы [Feature] и [SysAdminUnit] базы данных. Таблица [SysAdminUnit] содержит информацию о пользователях и группах пользователей приложения.
Диаграмма взаимосвязи таблиц базы данных, которые хранят информацию о дополнительной функциональности, представлена на рисунке ниже.
Основные колонки таблицы [Feature] базы данных приведены в таблице ниже.
|
|
|
---|---|---|
|
|
Уникальный идентификатор записи. |
|
|
Имя дополнительной функциональности. По умолчанию значение колонки [Name] совпадает со значением колонки [Code]. Имя функциональности пользователь может отредактировать вручную. |
|
|
Код дополнительной функциональности. |
|
|
Состояние дополнительной функциональности по умолчанию (1 — подключена, 0 — отключена). |
Основные колонки таблицы [AdminUnitFeatureState] базы данных приведены в таблице ниже.
|
|
|
---|---|---|
|
|
Уникальный идентификатор записи. |
|
|
Уникальный идентификатор записи из таблицы [Feature]. |
|
|
Уникальный идентификатор записи пользователя. |
|
|
Состояние дополнительной функциональности (1 — подключена, 0 — отключена). |
Открыть страницу Переключение функциональности
Способы перехода на страницу Переключение функциональности (Feature toggling):
- По ссылке [Адрес приложения Creatio]/0/Features. Например, http://my.сreatio.com/0/Features.
- По ссылке [Адрес приложения Creatio]/0/Flags. Например, http://my.сreatio.com/0/Flags.
В результате будет открыта страница Переключение функциональности (Feature toggling).
Информация, которая отображается на странице Переключение функциональности (Feature toggling):
- Код дополнительной функциональности (колонка Код (Code)).
- Состояние дополнительной функциональности для всех пользователей (колонка Состояние (State)).
- Состояние дополнительной функциональности для текущего пользователя (колонка Состояние для текущего пользователя (State for current user)).
- Источник дополнительной функциональности (колонка Источник (Source)).
- Описание дополнительной функциональности (колонка Описание (Description)).
Виды источников дополнительной функциональности (колонка Источник (Source)), которой можно управлять на странице:
- DbFeatureProvider — записи таблицы [Feature] базы данных.
- web.config — логические значения ключей из секции <appSettings> конфигурационного файла Web.config, который находится в корневом каталоге приложения.
- Metadata — дополнительная функциональность, которая зарегистрирована в исходном коде с использованием класса наследника FeatureMetadata.
- GlobalAppSettings — логические свойства класса Terrasoft.Core.GlobalAppSettings. Подробнее читайте в Библиотеке .NET классов.
Виды источников дополнительной функциональности расположены в порядке убывания приоритета.
Способы определения состояния дополнительной функциональности:
- Если дополнительная функциональность не зарегистрирована в приложении, то она отключена.
- Если состояние дополнительной функциональности определено в нескольких источниках, то результирующее состояние функциональности определяется в соответствии с приоритетом источника. Изменения состояния дополнительной функциональности на back-end стороне применяются без перезагрузки страницы. Чтобы применить изменения на front-end стороне, перезагрузите страницу.
Примеры определения состояния (true — подключена, false — отключена) дополнительной функциональности, которая определена в нескольких источниках, приведены в таблице ниже.
|
|
||
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Управлять состоянием дополнительной функциональности
Способы управления состоянием дополнительной функциональности:
- Для группы пользователей приложения.
- Для всех пользователей приложения.
Начиная с версии 8.0.2 Atlas, Creatio позволяет изменить состояние дополнительной функциональности с использованием утилиты WorkspaceConsole. Для этого воспользуйтесь инструкцией, которая приведена в статье Управление поставками в WorkspaceConsole.
Изменить состояние функциональности для групп пользователей
Начиная с версии 8.0.2 Atlas, Creatio позволяет изменить состояние дополнительной функциональности для групп пользователей.
Чтобы изменить состояние дополнительной функциональности для групп пользователей:
- Перейдите на страницу Переключение функциональности (Feature toggling).
- Откройте страницу дополнительной функциональности, состояние которой планируется изменить для группы пользователей.
-
Если группа, для которой планируется изменить состояние дополнительной функциональности, отсутствует на детали Cостояние функциональности для объекта администрирования (Feature status for the system administration object), то добавьте ее.
- На детали Cостояние функциональности для объекта администрирования (Feature status for the system administration object) нажмите на кнопку .
- В поле Объект администрирования (Admin unit) выберите группу пользователей, для которой планируется изменить состояние дополнительной функциональности.
- Откройте страницу группы пользователей.
- Измените значение признака Состояние функциональности (Feature state).
- На панели инструментов страницы дополнительной функциональности нажмите кнопку Сохранить (Save).
- Обновите страницу дополнительной функциональности, чтобы применить изменения.
Изменить состояние функциональности для всех пользователей
Чтобы изменить состояние дополнительной функциональности для всех пользователей:
- Перейдите на страницу Переключение функциональности (Feature toggling).
- Откройте страницу дополнительной функциональности, состояние которой планируется изменить для всех пользователей.
- Измените значение признака Состояние (State).
- Нажмите кнопку Сохранить (Save).
Пространство имен Terrasoft.Configuration.
Класс Terrasoft.Configuration.FeatureUtilities предоставляет набор расширяющих методов класса UserConnection, которые позволяют использовать функциональность Feature Toggle в схемах исходного кода на back-end стороне приложения. Также в классе FeatureUtilities объявлено перечисление состояний функциональностей (колонка [FeatureState] таблицы [AdminUnitFeatureState]).
Методы
Возвращает состояние функциональности.
source | Пользовательское подключение. |
code | Код функциональности. |
Возвращает состояние функциональности.
source | Пользовательское подключение. |
code | Код функциональности. |
sysAdminUnitId | Уникальный идентификатор записи. |
Признак, который возвращает состояние функциональности для любого пользователя.
source | Пользовательское подключение. |
code | Код функциональности. |
Признак, который возвращает состояние функциональности для всех пользователей.
source | Пользовательское подключение. |
code | Код функциональности. |
Возвращает состояния всех функциональностей.
source | Пользовательское подключение. |
Возвращает информацию относительно всех функциональностей и их состояний.
source | Пользовательское подключение. |
Устанавливает состояние функциональности.
source | Пользовательское подключение. |
code | Код функциональности. |
state | Новое состояние функциональности. |
forAllUsers | Признак, который устанавливает функциональность для всех пользователей. |
Установить состояние функциональности или создать функциональность (если она не существует).
source | Пользовательское подключение. |
code | Код функциональности. |
state | Новое состояние функциональности. |
forAllUsers | Признак, который устанавливает функциональность для всех пользователей. |
Создает функциональность.
source | Пользовательское подключение. |
code | Код функциональности. |
name | Имя функциональности. |
description | Описание функциональности. |
Признак, который проверяет подключение функциональности.
source | Пользовательское подключение. |
code | Код функциональности. |
Признак, который проверяет подключение функциональности.
source | Пользовательское подключение. |
code | Код функциональности. |
sysAdminUnitId | Уникальный идентификатор записи. |