Skip to content

DirectumCompany/rx-template-settings

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Прикладные константы

Репозиторий с шаблоном разработки «Прикладные константы».

Описание

Решение предоставляет универсальный механизм хранения и использования прикладных констант, значения которых могут изменяться без внесения изменений в код. Константы могут быть использованы как в программном коде, так и в NoCode (через функции вычисляемых выражений), что делает настройку системы гибкой и удобной.

Возможности решения:

  • объединение констант в логические группы через справочник Группы констант;
Константы
  • хранение констант и групп констант двух категорий:

    • Пользовательские — создаются вручную, допускают изменение системных полей (Имя, Описание, Guid, Группа, Тип) и могут быть удалены из системы; Пользовательская константа

    • Системные — создаются программно при инициализации системы, не допускают изменения системных полей (Имя, Описание, Guid, Группа, Тип) и не могут быть удалены из системы; Системная константа

  • хранение значений различных типов данных:

    • строка (string);
    • целое число (integer);
    • вещественное число (double);
    • идентификатор (long);
    • дата (DateTime);
    • логическое значение (bool);
    • пароль (хранится в виде зашифрованной строки);
  • создание системных констант и групп констант при инициализации системы;

  • использование системных констант в программном коде для получения их значений через серверные функции модуля Прикладные константы;

  • использование констант в NoCode для получения их значений через функции вычисляемых выражений модуля Прикладные константы. Например, константу можно указать в параметре процесса и использовать её в настройке варианта процесса или получить её через функцию вычсляемого выражения Получить прикладную константу по точному совпадению значения в поле Guid. Функция доступна из контекста (Задача, Задание, Документ, Справочник); Функции вычисляемых выражений

Состав объектов разработки

Справочники:

  • Прикладные константы (ConstantsSetting)
  • Группы констант (ConstantsGroup)

Модуль Прикладные константы (AppliedConstants):

Работа с системными константами и их группами основана на использовании уникальных идентификаторов (GUID). При создании константы или группы для них явно задаётся GUID, а все последующие операции в коде (поиск, получение значений) выполняются по этому идентификатору. Это гарантирует надёжную привязку, даже если отображаемые имена будут изменены.

Серверные функции модуля AppliedConstants:

Note

Параметры функций name, decription, guid, groupGuid являются типом string. Параметр constant - IConstantsSetting.

  1. Создание системных констант и групп констант в инициализации:
    • CreateConstantsGroup(name, description, guid) — создание группы констант;
    • CreateConstant(name, description, string value, guid, groupGuid) — строка;
    • CreateConstant(name, description, int value, guid, groupGuid) — целое число;
    • CreateConstant(name, description, double value, guid, groupGuid) — вещественное число;
    • CreateConstant(name, description, long value, guid, groupGuid) — идентификатор (long);
    • CreateConstant(name, description, DateTime value, guid, groupGuid) — дата;
    • CreateConstant(name, description, bool value, guid, groupGuid) — логическое значение;
    • CreatePasswordConstant(name, description, string value, guid, groupGuid) — пароль.
  2. Работа с константами в коде (получение, извлечение значений, проверка на соответствие типу):
    • GetConstant(guid) — получение записи константы по guid;
    • CheckConstantType(constant, type) — проверка типа константы;
    • GetStringValue(guid) — получить строковое значение;
    • GetIntegerValue(guid) — получить целочисленное значение;
    • GetDoubleValue(guid) — получить вещественное значение;
    • GetIdentifierValue(guid) — получить идентификатор;
    • GetDateValue(guid) — получить дату;
    • GetBoolValue(guid) — получить логическое значение;
    • GetPasswordValue(guid) — получить пароль (расшифрованная строка base64);
    • GetStringListValue(guid) — получить список строк, сформированный из строкового значения константы, в котором элементы заданы через разделитель (по умолчанию — запятая);
    • GetIntegerListValue(guid) — получить список целых чисел, сформированный из строкового значения константы, в котором элементы заданы через разделитель (по умолчанию — запятая);
  3. Функции вычисляемых выражений (доступны в NoCode)
    • GetConstant(task, guid) — получить прикладную константу по guid;
    • GetConstant(assignment, guid) — получить прикладную константу по guid;
    • GetConstant(document, guid) — получить прикладную константу по guid;
    • GetConstant(databook, guid) — получить прикладную константу по guid;
    • GetStringValue(constant) — получить строковое значение;
    • GetIntegerValue(constant) — получить целочисленное значение;
    • GetDoubleValue(constant) — получить вещественное значение;
    • GetIdentifierValue(constant) — получить идентификатор;
    • GetDateValue(constant) — получить дату;
    • GetBoolValue(constant) — получить логическое значение;
    • GetStringListValue(constant) — получить список строк, сформированный из строкового значения константы, в котором элементы заданы через разделитель (по умолчанию — запятая);
    • GetIntegerListValue(constant) — получить список целых чисел, сформированный из строкового значения константы, в котором элементы заданы через разделитель (по умолчанию — запятая);

Note

Замечания и пожелания по развитию шаблона разработки фиксируйте через Issues. При оформлении ошибки опишите сценарий для воспроизведения. Для пожеланий приведите обоснование для описываемых изменений - частоту использования, бизнес-ценность, риски и/или эффект от реализации.

Внимание! Изменения будут вноситься только в новые версии.

Варианты расширения функциональности на проектах

  1. Создание системных констант в инициализации модуля AppliedConstants.

    Для создания системных констант и групп предусмотрены точки расширения инициализации модуля AppliedConstants. Для этого в модуле определены две функции инициализации:

    • CreateConstantsGroups() — создание системных групп прикладных констант;
    • CreateConstants() — создание системных констант всех поддерживаемых типов.

    В функциях реализуйте логику создания системных констант и групп констант, используя серверные функции модуля AppliedConstants (CreateConstantsGroup, CreateConstant, CreatePasswordConstant).

    Рекомендации:

    • Создавайте все системные группы и константы в функциях инициализации модуля AppliedConstants.
    • Храните имена констант, их Guid и значения по умолчанию в константах модуля AppliedConstants.
    • Используйте GUID в нижнем регистре.

    Пример структуры для описания метаданных системных констант:

[Public]
public static class ConstantsSetting
{   
	/// <summary>
	/// Пример константы с целочисленным значением.
	/// </summary>
	[Public]
	public static class ExampleConstantOne
	{
		[Public]
		public const string Guid = "c81a9c54-7edf-428e-bb2e-4d29c6f408d7";
		[Public]
		public const string Name = "АО. Максимальное число переповторов";
		[Public]
		public const string Description = "Определяет максимальное количество повторных попыток выполнения асинхронного обработчика."; 
		[Public]
		public const int DefaultValue = 10;
	}
	
	/// <summary>
	/// Пример константы со списком чисел.
	/// </summary>
	[Public]
	public static class ExampleConstantTwo
	{
		[Public]
		public const string Guid = "f32ebf01-02d3-4e43-9f7a-cf649a68c1c4";
		[Public]
		public const string Name = "Интеграция. Список кодов успешных статусов";
		[Public]
		public const string Description = "Содержит перечень HTTP-статусов, которые считаются успешными при взаимодействии с внешними системами. Значения должны быть указаны через запятую.";
		[Public]
		public const string DefaultValue = "200,201,204"; 
	} 
}
  1. Добавление собственных типов констант.

    Для добавления нового типа константы требуется:

    • добавить новое значение перечисления для свойства Тип (Type) в справочнике Прикладные константы (ConstantsSetting);
    • добавить новое свойство для хранения значения в справочник Прикладные константы (ConstantsSetting). Отображаемое наименование поля - Значение (Value);
    • вынести поле на форму в то же место, куда вынесены остальные поля значений других типов. Номер колонки - 1, Номер строки - 3;
    • настроить видимость поля в разделяемой функции SetPropertiesState();
    • добавить серверные функции для создания и получения значения нового типа константы;
    • при необходимости добавить функцию вычисляемого выражения для NoCode.
  2. Серверные функции для работы с константами в коде являются виртуальными, поэтому при необходимости их можно переопределить и реализовать собственную логику.

Порядок установки

Для работы требуется установленный Directum RX версии 25.2 и выше.

Установка для ознакомления

  1. Склонировать репозиторий rx-template-settings в папку.
  2. Указать в config.yml в разделе DevelopmentStudio:
   GIT_ROOT_DIRECTORY: '<Папка из п.1>'
   REPOSITORIES:
      repository:
      -   '@folderName': 'rx-template-settings'
          '@solutionType': 'Work'
          '@url': https://github.com/DirectumCompany/rx-template-settings'
      -   '@folderName': 'base'
          '@solutionType': 'Base'
          '@url': ''

Установка для использования на проекте

Возможные варианты:

A. Fork репозитория

  1. Сделать fork репозитория rx-template-settings для своей учетной записи.
  2. Склонировать созданный в п. 1 репозиторий в папку.
  3. Указать в config.yml в разделе DevelopmentStudio:
   GIT_ROOT_DIRECTORY: '<Папка из п.1>'
   REPOSITORIES:
      repository:
      -   '@folderName': 'rx-template-settings'
          '@solutionType': 'Work'
          '@url': https://github.com/DirectumCompany/rx-template-settings'
      -   '@folderName': 'base'
          '@solutionType': 'Base'
          '@url': ''

B. Подключение на базовый слой

Вариант не рекомендуется, так как при выходе версии шаблона разработки не гарантируется обратная совместимость.

  1. Склонировать репозиторий rx-template-settings в папку.
  2. Указать в config.yml в разделе DevelopmentStudio:
   GIT_ROOT_DIRECTORY: '<Папка из п.1>'
   REPOSITORIES:
      repository:
      -   '@folderName': 'rx-template-settings'
          '@solutionType': 'Base'
          '@url': https://github.com/DirectumCompany/rx-template-settings'
      -   '@folderName': 'base'
          '@solutionType': 'Base'
          '@url': ''

C. Копирование репозитория в систему контроля версий.

Рекомендуемый вариант для проектов внедрения.

  1. В системе контроля версий с поддержкой git создать новый репозиторий.
  2. Склонировать репозиторий rx-template-settings в папку с ключом --mirror.
  3. Перейти в папку из п. 2.
  4. Импортировать клонированный репозиторий в систему контроля версий командой: `git push –mirror https://github.com/DirectumCompany/rx-template-settings'

About

Репозиторий с типовой разработкой «Прикладные константы».

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages