Решение «Генератор сущностей»

27 1

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

Пример настройки справочника “Тип справочника”

Для генерации дополнительных справочников необходимо перейти на обложку модуля “Генератор сущностей” и создать новый тип справочника.

При занесении GUID’а в поле “Идентификатор типа” произойдет автоматическое заполнение поля “Имя” локализованным значением указанного типа.

Чтобы узнать идентификатор (GUID) справочника, выделите его в дереве решений и в контекстном меню выберите пункт “Скопировать идентификатор”.

Пример настройка справочника “Соответствие заполняемых параметров сущности”

Для запуска генерации необходимо создать запись справочника “ Соответствие заполняемых параметров сущности”, для этого нужно перейти на обложку модуля “Генератор сущностей” и создать новый тип справочника.

Для создания доступны такие типы сущности как Справочник и Документ.

При выборе типа сущности “Документ” в карточке появляется поле Тип документа с возможностью выбора записей из соответствующего справочника, а также чекбокс “Создать версию”, который позволяет создавать пустые pdf версии у генерируемых документов.

При выборе типа сущности “Справочник” в карточке появляется поле Тип справочника с возможностью выбора записей из соответствующего справочника.

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

Для обязательных свойств необходимо указать вариант заполнения, для этого нажимаем на кнопку “Изменить данные”. В открывшемся диалоге выбираем свойство, которое хотим изменить.

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

В результате в табличную часть занесутся введенные пользователем данные.

При необходимости можно также добавить дополнительные свойства сущности, которые будут заполняться при генерации. Для этого нажимаем на кнопку “Добавить данные”. В открывшемся диалоге выбираем свойство, которое хотим заполнить. В качестве наименования свойства можно использовать как имя из среды разработки, так и локализованное значение свойства, если все локализованные значения уникальны.

Возможный вид карточки после выбора всех необходимых параметров.

Пример генерации сущностей

Запуск генерации происходит с обложки модуля “Генератор сущностей” по действию “Запуск генерации”.

В открывшемся диалоге необходимо выбрать запись из справочника “Соответствие заполняемых параметров сущности”, а также ввести количество создаваемых записей.

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

Пример сгенерированной служебной записки.

Возможные варианты заполнения

Варианты заполнения для типов свойств:

  1. Дата
    1. Пустое значение;
    2. Фиксированная дата – дата, заданная пользователем;
    3. Временной промежуток – случайная дата в заданном промежутке.
  2. Логическое значение
    1. Пустое значение;
    2. Фиксированное значение – логическое значение, заданное пользователем;
    3. Случайное распределение – случайно выбранное значение между True или False.
  3. Число
    1. Пустое значение;
    2. Фиксированное число – число, заданное пользователем;
    3. Диапазон чисел – случайное число в заданном диапазоне;
    4. Число с указанной длиной – случайное число с строго заданной длиной.
  4. Строка
    1. Пустое значение;
    2. Фиксированная строка – текст, заданный пользователем;
    3. Случайная строка – случайная строка с кол-вом слов от 1 до 5;
    4. Случайный параграф;
    5. Телефонный номер – номер телефона, пример: “+7(955)311-73-00”;
    6. Число в виде строки – случайное число в диапазоне от 1 до 1 000 000;
    7. Email – случайный адрес электронной почты;
    8. Логин – случайный логин (никнейм);
    9. Фамилия – случайная фамилия, с возможностью выбора пола;
    10. Имя – случайное имя, с возможностью выбора пола;
    11. ФИО – строка с именем и фамилией, с возможностью выбора пола;
    12. Название должности;
    13. Субъект федерации – республики, края и области РФ;
    14. Город;
    15. Улица;
    16. Название подразделения;
    17. Название организации.
  5. Перечисление
    1. Пустое значение;
    2. Фиксированное значение – значение перечисления, заданное пользователем;
    3. Случайное распределение – случайно выбранное значение перечисления.
  6. Ссылочное свойство
    1. Пустое значение;
    2. Фиксированное значение – ссылочное значение, выбранное пользователем;
    3. Случайное распределение – случайно выбранное значение среди всех сущностей.

Вариант “Пустое значение” используется для свойств, которые заполняются при создании сущности или заполняются на основании других свойств. Например, свойство “Состояние” по умолчанию будет иметь значение “Действующий”, а в значение свойства “Создано” у документов изначально будет подставляться текущая дата.

Инструкция для разработчиков по добавлению новых вариантов заполнения

  1. В константы модуля Faker необходимо добавить новое значение в соответствующий вложенный класс (Важно: значения констант в классах должны быть уникальными). Вложенные классы:
    1. Common – значения, которые используются в нескольких типах;
    2. Date – тип свойства дата;
    3. Bool – тип свойства логическое;
    4. Numeric – для числовых типов свойств;
    5. String – для текстовых типов свойств;
    6. Enumeration – тип свойства перечисление;
    7. Navigation – тип свойства ссылка.
  2. В разделяемом слое справочника ParametersMatching находиться функция GetMatchingTypeToParameters в ней необходимо настроить словарь в соответствии с новыми данными;
  3. Если для нового варианта нужно выводить дополнительное поле в диалоге. В клиентском слое справочника ParametersMatching находиться функция ShowDialogControlsByParameter в ней необходимо создавать соответствующие контролы для нового варианта заполнения;
  4. В серверном слое модуля Faker находится функция GetPropertyValueByParameters, обрабатывающая логику по генерации данных на основе заполненных параметров из табличной части. В нее необходимо добавить логику по созданию соответствующего значения в зависимости от варианта заполнения.

Планы по развитию

В дальнейшем планируется:

  1. Доработать функционал для работы с коллекциями, а также свойствами с следующими типами: бинарные данные, бинарные данные в хранилище и картинки;
  2. Доработать вывод значений перечислений, т.к. на данный момент выводятся имена перечислений, используемые в коде, а не локализованные значения;
  3. Добавить возможность выбора языка для генерации данных;
  4. Добавить возможность автоматического заполнения обязательных полей, которые становятся обязательными только при показе формы.

Исходный код можно посмотреть на GitHub.

Антон Максунов

GUID можно скопировать в адресной строке если открыть нужный справочник или документ

Авторизуйтесь, чтобы написать комментарий