Найти в Дзене
Logonok

Вперёд в прошлое

Оглавление

В многопользовательских приложениях часто возникает необходимость отслеживать изменения в данных. Причем не только дату и автора последней правки, но и прежние значения. В декларативном фреймворке Evado, который служит для быстрой разработки веб-приложений, это решается просто - с помощью установки флажка «История» у атрибута.

Сохранение истории изменение значений атрибута
Сохранение истории изменение значений атрибута

История данных во многом относится к служебному функционалу. И, например, пользователю, которому доступно чтение или редактирование объекта, может быть запрещено просматривать прежние значения. Для этого в разрешение безопасности метаданных имеется специальное действие - «Просмотр истории».

Безопасность доступа к истории данных
Безопасность доступа к истории данных

Если просмотр истории разрешен и имеются атрибуты, у которых отслеживаются изменения, то на форме объекта в модуле «Офис» появится кнопка перехода к записям истории.

Кнопка истории появляется при наличии атрибутов с историей и разрешении безопасности
Кнопка истории появляется при наличии атрибутов с историей и разрешении безопасности

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

Записи истории доступны только для просмотра
Записи истории доступны только для просмотра

Для пользовательского интерфейса список записей истории может быть получен через AJAX API /api/base/data-history/list с параметрами:

  • class - кодовое имя класса;
  • id - идентификатор объекта;
  • length - количество записей на странице (необязательный);
  • start - смещение от начала списка (необязательный).

Дополнительные параметры

При интенсивной эксплуатации история изменений быстро наполнится данными, которые займут много места в хранилище. Чтобы избежать переполнения, старые записи истории автоматически удаляются в момент добавления новых.

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

  • dataHistoryTruncationThreshold - минимальное количество записей истории для объекта, после превышения которого произойдет удаление старых записей (по умолчанию равно 20) .
  • dataHistoryTruncationOffset - остаток после удаления старых записей (по умолчанию равен 10).

Эти два параметра имеют значительную разницу для того, чтобы исключить частые удаления при достижении порога.

Заключение

Зачастую важны не только сами данные, но и то, когда и кем они изменялись в течении времени. Сохраненные прежние значения позволяют проанализировать, как происходили изменения или вернуть прошлое в настоящее.

На сайте фреймворка Evado можно посмотреть онлайн демонстрацию приложения.