CoreReportBuilder.BeginCreateReportEvent¶
- public interface BeginCreateReportEvent extends CoreEvent¶
Added in version 1.23.0-rc11.
Интерфейс объекта-события начала построения печатной формы.
Methods¶
computeCacheVersion¶
- long computeCacheVersion(Function<Long, Long> computeFunction)¶
Метод выполняет вычисление новой версии кэша шаблонов печатных форм с помощью анонимной функции.
Изменение (увеличение) версии кэша влечёт немедленную очистку кэша для всех отчётов текущего решения.
Предполагаемый алгоритм проверки и обновления версии кэша:
Получаем ожидаемую версию кэша, например и БД.
Сравниваем текущую и ожидаемую версии.
Если текущая и ожидаемая версии не равны, вызываем синхронизированный метод
computeCacheVersion)для изменения версии кэша.
long expectedVersion = getExpectedVersion(); long currentVersion = event.getCacheVersion(); if (currentVersion != expectedVersion) { event.computeCacheVersion((version) -> { // За время между вызовами event.getCacheVersion() и event.computeCacheVersion() поток другого // рабочего сеанса мог изменить версию. if (version == currentVersion) { return expectedVersion; } else { return version; } }); }- Parameters:
computeFunction –
функция вычисления версии кэша
Function<Long, Long>.В аргумент функции передаётся текущая версия кэша.
Функция должна вернуть значение равное или большее текущему.
Функция выполняется внутри synchronize-блока. Потоки других пользовательских сеансов, при попытке обновить версию кэша, будут ожидать завершения текущего выполняющегося метода. По этой причине метод не должен содержать длительных вычислений или обращений к БД.
- Returns:
вычисленная версия
getCacheVersion¶
- long getCacheVersion()¶
Возвращает текущую версию кэша подготовленных шаблонов печатных форм.
После запуска сервера приложений, эта версия всегда равна “0”.
Метод синхронизирован между потоками, а так же с
computeCacheVersion(Function).- Returns:
версия