Платформа 3V/Формы/Рекомендации по использованию и оптимизации

Материал из 3v-wiki
Перейти к навигации Перейти к поиску

Рекомендации по настройкам форм:

  1. Минимизировать действия при открытии формы, которые направлены на перестроение и получение данных из отчетов и справочников больших объемов. Например, открывать форму со значениями по умолчанию, либо, при открытии формы с параметром, настроить отложенное построение отчетов.
  2. Если в формах используется получение значения связанных атрибутов справочников больших объемов, необходимо прописывать настройку данного атрибута как получение значения транзитивного атрибута справочника, а не как связанного, через конструкцию TransitiveAttributeDefinitionDto. Данная настройка используется потому, что связанный атрибут влечет построение всего связанного справочника, а транзитивный - только используемых значений. Аналогичную настройку необходимо использовать при настройке отчетов.
  3. В формах должны присутствовать только те контролы, источники, выражения, правила/условия и действия, которые используются в текущей форме, не должно быть лишних источников, выражений, условий и действий, которые не используются.
  4. Для раскрывающегося списка, источником которого является большой справочник необходимо настроить серверный поиск. При серверном поиске выбор значения происходит при вводе и поиске введенного значения по справочнику.
  5. По возможности, не злоупотреблять настройкой disableDataEditingRuleId, где указывается условие блокировки контролов при открытии формы, лучше настраивать блокировку на уровне прав всей формы, либо для каждого контрола отдельно.
  6. Желательно использовать меньше выражений типа EntryExpressionByDictionaryRequest и EntryExpressionDictionaryDataFilterByIndicatorParameter, где происходит запрашивание справочника для каждого выражения данного типа.
  7. Продумывать использование настройки doActionOnChangeValue для контрола, чтобы не происходило постоянного обновления зависимых объектов при изменении значения в контроле, включать данную настройку только для тех контролов, при изменении которых необходимо выполнение действия для дальнейшего заполнения формы.
  8. Выключать настройку isReadOnly для справочников необходимо только в том случае, если действительно необходимо сохранение данных в источник при выполнении действия сохранения всех источников, чтобы не происходило сохранения тех источников, которые этого не требуют.
  9. Для минимизации перестроения источников необходимо проверить необходимость присутствия в контроле "rebuildDependentsObjectOnChange": true, и выставить "rebuildDependentsObjectOnChange": false для тех контролов, которые не предполагают обновления других элементов на странице при смене значения.
  10. Проверить наличие действий во время открытия формы в conditionActionIdsOnOpen и удостовериться, что все действия по открытию карточки действительно нужны и быстро отрабатывают.
Пример задания серверного поиска в контроле выпадающего списка
 1     {
 2       "discriminator": "DictionarySourceEntry",
 3       "dataSourceId": 1,
 4       "expressionId": null,
 5       "id": 1,
 6       "caption": "Проекты",
 7       "enable": true,
 8       "enableRuleIds": [],
 9       "searchSettings": {
10         "maxElements": 500,  //количество выводимых элементов в поиске
11         "minInputChars": 2,  // минимальное число символов для начала поиска
12         "searchMode": "Dictionaries", // обозначение серверного поиска
13         "debounceMs": 300 //время отклика
14       },
15       "hasServerFiltration": true,
16       "maxElements": 100,
17       "displayAttribute": {
18         "id": 2,
19         "discriminator": "OwnAttributeDefinitionDto"
20       },
21       "doActionOnChangeValue": true,
22       "hasMultipleValue": true,
23       "hasNullableValue": false
24     }

Метрики

Для анализа можно пользоваться метриками. Каждый сервис платформы предоставляет как стандартный набор метрик (потребление памяти и т. п.), так и специфические для конкретного сервиса, по адресу http(s)://<host>/<service>/metrics

Визуальное их отображение настроено в графане:

Следует обращать особое внимание на:

  • графики "макс. кол-во элементов справочников по Id форм" (метрика cards_instance_max_dictionary_element_count) и "суммарное кол-во элементов справочников по Id форм" (метрика cards_instance_total_dictionary_element_count) для обнаружения карточек, в которые загружаются большие справочники;
  • таблицы "среднее время открытия форм (сек)" и "максимальное время открытия форм (сек.)". Особое внимание стоит уделять формам, которые открывает или будет открывать обычный пользователь. Чем выше время, тем меньше людей смогут параллельно работать с системой. Рекомендуемое время открытия - менее 5 сек. Все что больше - это точно повод задуматься и посмотреть, что стоит настроить иначе;
  • на кол-во открытых на данный момент карточек (метрика cards_instances_total). Если отображается кол-во, не соответствующее действительности (пользователь уже закрыл карточки, а они числятся открытыми), то это повод завести ошибку на платформу.