Управлять существующей дополнительной функциональностью

Средний

Начиная с версии 8.0.2 Atlas, в Creatio изменена логика работы с дополнительной функциональностью. Если вы используете более раннюю версию приложения, то воспользуйтесь статьей Механизм Feature Toggle.

Feature toggle — техника разработки программных продуктов. Назначение Feature toggle — возможность управления состоянием дополнительной функциональности в работающем приложении.

В Creatio Feature toggle использует непрерывную интеграцию, которая позволяет сохранить работоспособность приложения и скрыть дополнительную функциональность на стадии разработки. Кроме управления существующей дополнительной функциональность, Creatio позволяет разработать пользовательскую функциональность. Для этого воспользуйтесь инструкцией, которая приведена в статье Реализовать пользовательскую дополнительную функциональность. Управление состоянием дополнительных функциональностей выполняется на странице Переключение функциональности (Feature toggling) приложения.

Понятие Feature toggle описано на Википедии.

Хранить сведения о дополнительной функциональности 

Сведения о дополнительной функциональности хранятся в базе данных приложения.

Таблицы базы данных, которые хранят информацию о дополнительной функциональности:

  • [Feature] — перечень дополнительной функциональности, которая доступна для подключения/отключения. По умолчанию таблица пуста.
  • [AdminUnitFeatureState] (колонка [FeatureState]) — информация о состоянии дополнительной функциональности (подключена/отключена). Таблица [AdminUnitFeatureState] связывает таблицы [Feature] и [SysAdminUnit] базы данных. Таблица [SysAdminUnit] содержит информацию о пользователях и группах пользователей приложения.

Диаграмма взаимосвязи таблиц базы данных, которые хранят информацию о дополнительной функциональности, представлена на рисунке ниже.

Основные колонки таблицы [Feature] базы данных приведены в таблице ниже.

Основные колонки таблицы [Feature]
Колонка
Тип
Описание
[Id]
uniqueidentifier
Уникальный идентификатор записи.
[Name]
nvarchar(250)
Имя дополнительной функциональности. По умолчанию значение колонки [Name] совпадает со значением колонки [Code]. Имя функциональности пользователь может отредактировать вручную.
[Code]
nvarchar( 50 )
Код дополнительной функциональности.
[DefaultState]
int
Состояние дополнительной функциональности по умолчанию (1 — подключена, 0 — отключена).

Основные колонки таблицы [AdminUnitFeatureState] базы данных приведены в таблице ниже.

Основные колонки таблицы [AdminUnitFeatureState]
Колонка
Тип
Описание
[Id]
uniqueidentifier
Уникальный идентификатор записи.
[FeatureId]
uniqueidentifier
Уникальный идентификатор записи из таблицы [Feature].
[SysAdminUnitId]
uniqueidentifier
Уникальный идентификатор записи пользователя.
[FeatureState]
int
Состояние дополнительной функциональности (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 — отключена) дополнительной функциональности, которая определена в нескольких источниках, приведены в таблице ниже.

Примеры определения состояния функциональности
Источник функциональности
Результирующее состояние функциональности
DbFeatureProvider
web.config
Metadata или GlobalAppSettings
true
false
false
true
false
true
false
false
Отсутствует
true
false
true
Отсутствует
false
true
false

Управлять состоянием дополнительной функциональности 

Важно. Поскольку изменение состояния дополнительной функциональности может привести к некорректной работе приложения, мы рекомендуем изменять состояние функциональности только по совету технической поддержки или для тестирования пользовательской функциональности.

Способы управления состоянием дополнительной функциональности:

  • Для группы пользователей приложения.
  • Для всех пользователей приложения.

Начиная с версии 8.0.2 Atlas, Creatio позволяет изменить состояние дополнительной функциональности с использованием утилиты WorkspaceConsole. Для этого воспользуйтесь инструкцией, которая приведена в статье Управление поставками в WorkspaceConsole.

Изменить состояние функциональности для групп пользователей 

Начиная с версии 8.0.2 Atlas, Creatio позволяет изменить состояние дополнительной функциональности для групп пользователей.

Чтобы изменить состояние дополнительной функциональности для групп пользователей:

  1. Перейдите на страницу Переключение функциональности (Feature toggling).
  2. Откройте страницу дополнительной функциональности, состояние которой планируется изменить для группы пользователей.
  3. Если группа, для которой планируется изменить состояние дополнительной функциональности, отсутствует на детали Cостояние функциональности для объекта администрирования (Feature status for the system administration object), то добавьте ее.

    1. На детали Cостояние функциональности для объекта администрирования (Feature status for the system administration object) нажмите на кнопку .
    2. В поле Объект администрирования (Admin unit) выберите группу пользователей, для которой планируется изменить состояние дополнительной функциональности.
  4. Откройте страницу группы пользователей.
  5. Измените значение признака Состояние функциональности (Feature state).
  6. На панели инструментов страницы дополнительной функциональности нажмите кнопку Сохранить (Save).
  7. Обновите страницу дополнительной функциональности, чтобы применить изменения.

Важно. Если дополнительная функциональность по умолчанию подключена для всех пользователей и отключена для группы пользователей, то она отключена только для пользователей группы.

Изменить состояние функциональности для всех пользователей 

Чтобы изменить состояние дополнительной функциональности для всех пользователей:

  1. Перейдите на страницу Переключение функциональности (Feature toggling).
  2. Откройте страницу дополнительной функциональности, состояние которой планируется изменить для всех пользователей.
  3. Измените значение признака Состояние (State).
  4. Нажмите кнопку Сохранить (Save).
Класс FeatureUtilities
Средний

Пространство имен Terrasoft.Configuration.

Класс Terrasoft.Configuration.FeatureUtilities предоставляет набор расширяющих методов класса UserConnection, которые позволяют использовать функциональность Feature Toggle в схемах исходного кода на back-end стороне приложения. Также в классе FeatureUtilities объявлено перечисление состояний функциональностей (колонка [FeatureState] таблицы [AdminUnitFeatureState]).

На заметку. Полный перечень конструкторов, методов и свойств класса UserConnection, его родительских классов, а также реализуемых им интерфейсов, можно найти в Библиотеке .NET классов.

Методы 

static int GetFeatureState(this UserConnection source, string code)

Возвращает состояние функциональности.

Параметры
source Пользовательское подключение.
code Код функциональности.
static int GetFeatureState(this UserConnection source, string code, Guid sysAdminUnitId)

Возвращает состояние функциональности.

Параметры
source Пользовательское подключение.
code Код функциональности.
sysAdminUnitId Уникальный идентификатор записи.
static bool GetIsFeatureEnabledForAnyUser(this UserConnection source, string code)

Признак, который возвращает состояние функциональности для любого пользователя.

Параметры
source Пользовательское подключение.
code Код функциональности.
static bool GetIsFeatureEnabledForAllUsers(this UserConnection source, string code)

Признак, который возвращает состояние функциональности для всех пользователей.

Параметры
source Пользовательское подключение.
code Код функциональности.
static Dictionary<string, int> GetFeatureStates(this UserConnection source)

Возвращает состояния всех функциональностей.

Параметры
source Пользовательское подключение.
static List<FeatureInfo> GetFeaturesInfo(this UserConnection source)

Возвращает информацию относительно всех функциональностей и их состояний.

Параметры
source Пользовательское подключение.
static void SetFeatureState(this UserConnection source, string code, int state, bool forAllUsers = false)

Устанавливает состояние функциональности.

Параметры
source Пользовательское подключение.
code Код функциональности.
state Новое состояние функциональности.
forAllUsers Признак, который устанавливает функциональность для всех пользователей.
static void SafeSetFeatureState(this UserConnection source, string code, int state, bool forAllUsers = false)

Установить состояние функциональности или создать функциональность (если она не существует).

Параметры
source Пользовательское подключение.
code Код функциональности.
state Новое состояние функциональности.
forAllUsers Признак, который устанавливает функциональность для всех пользователей.
static void CreateFeature(this UserConnection source, string code, string name, string description)

Создает функциональность.

Параметры
source Пользовательское подключение.
code Код функциональности.
name Имя функциональности.
description Описание функциональности.
static bool GetIsFeatureEnabled(this UserConnection source, string code)

Признак, который проверяет подключение функциональности.

Параметры
source Пользовательское подключение.
code Код функциональности.
static bool GetIsFeatureEnabled(this UserConnection source, string code, Guid sysAdminUnitId)

Признак, который проверяет подключение функциональности.

Параметры
source Пользовательское подключение.
code Код функциональности.
sysAdminUnitId Уникальный идентификатор записи.

Перечисление FeatureState 

Перечисление FeatureState определяет состояния функциональностей (колонка [FeatureState] таблицы [AdminUnitFeatureState]).

Disabled 0 Функциональность отключена.
Enabled 1 Функциональность подключена.
Established 2 Функциональность установлена.