Оптимизация работы вычисляемых атрибутов
Одной из возможных причин снижения производительности работы Comindware Business Application Platform является использование вычисляемых атрибутов. По имеющемуся свойству, значение в вычисляемом атрибуте не является хранимым, а высчитывается каждый раз при обращении к нему. В зависимости от сложности и корректности написания выражения, например, циклической формулы, пересчет может занять значительное время, а вычисляемый атрибут может в значительной степени повлиять на производительность работы некоторых разделов продукта:
- Список записей — при отображении вычисляемого атрибута на списке записей в момент открытия списка пересчитываются все значения по заданной формуле;
- Форма записи — при отображении вычисляемого атрибута на форме записи значение пересчитывается не только в момент открытия формы, но и при любом клике по атрибуту, изменении значения любого другого атрибута, добавлении записи в коллекцию и т.д.;
- API, C# скрипты — при обращении к данным через API, например, получении информации по конкретной записи или массиву записей, для вычисляемого атрибута будет пересчитано значение перед отправкой, что может увеличить время получение ответа на запрос.
Решение
- По мере возможности рекомендуем не выносить вычисляемые атрибуты на часто используемые сотрудниками списки для получения оперативной информации. Выносить их только для отчетов с предупреждением пользователей о возможном увеличении времени загрузки данных.
- При написании выражения на языке Comindware Expression Language рекомендуем переписать его на языке N3 (примеры выражений на N3 вы можете найти в категории Язык N3).
- Альтернативные варианты получения аналогичного результата вместо использования вычисляемых полей:
- При использовании вычисляемого атрибута в процессе возможно заменить его на установку значения в правилах для данных на входе или выходе из элемента процесса.
- При использовании вычисляемого атрибута на форме записи возможно заменить его на установку значения в правилах для конкретной формы.