CoreReportBuilder.BeginCreateReportEvent

public interface BeginCreateReportEvent extends CoreEvent

Added in version 1.23.0-rc11.

Интерфейс объекта-события начала построения печатной формы.

Methods

computeCacheVersion

long computeCacheVersion(Function<Long, Long> computeFunction)

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

Изменение (увеличение) версии кэша влечёт немедленную очистку кэша для всех отчётов текущего решения.

Предполагаемый алгоритм проверки и обновления версии кэша:

  1. Получаем ожидаемую версию кэша, например и БД.

  2. Сравниваем текущую и ожидаемую версии.

  3. Если текущая и ожидаемая версии не равны, вызываем синхронизированный метод 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:

версия

getParameterMap

Map<String, Object> getParameterMap()

Возвращает карту значений параметров, переданных в метод формирования отчёта.

Карта модифицируемая, изменения будут учтены при формировании отчёта.

Returns:

карта значений параметров.