Перейти к содержанию

Оптимизация работы вычисляемых атрибутов

Описание проблемы

Одной из возможных причин снижения производительности работы Comindware Platform является использование вычисляемых атрибутов.

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

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

Поэтому вычисляемый атрибут может в значительной степени повлиять на производительность работы некоторых разделов системы:

  • Таблицы — при отображении вычисляемого атрибута в таблице в момент открытия таблицы пересчитываются все значения атрибута.
  • Форма — при отображении вычисляемого атрибута на форме значение пересчитывается не только в момент открытия формы, но и при любом щелчке любого поля, изменении значения любого другого атрибута, добавлении записи в коллекцию и т. .
  • API, C# скрипты — при обращении к данным через API, например, получении информации по конкретной записи, или к массиву записей, для вычисляемого атрибута будет пересчитано значение перед отправкой, что может увеличить время получения ответа на запрос.

Решение

  1. Ограничьте использование вычисляемых атрибутов в таблицах
  • По возможности рекомендуем не выносить вычисляемые атрибуты на таблицы, часто используемые для получения оперативной информации.
  • Рекомендуем выносить вычисляемые атрибуты только в таблицы отчётов и предупреждать пользователей о возможном увеличении времени загрузки данных.
  1. Используйте выражения на N3

Вместо формул рекомендуем использовать язык N3. См. [справочник по языку N3][n3_guide].

  1. Используйте альтернативные способы вычисления

    • Замена в процессах: вместо вычисления значения атрибута в процессе его можно устанавливать с помощью сценариев на входе или выходе из элементов процесса.
    • Замена в формах: вместо вычисления значения атрибута на форме его можно устанавливать с помощью правил для формы.
К началу