UI Recovery
Дополнение UI Recovery защищает пользователей от потери несохраненных изменений в экранах. Пользователи могут долго заполнять большую форму, и все введенные данные будут потеряны, если узел сервера перезапустится или выйдет из строя, истечет HTTP-сессия или браузер закроется до того, как пользователь нажмет OK.
Дополнение сохраняет несохраненные изменения экрана в базу данных во время работы пользователя. Такое сохраненное состояние называется черновиком. Когда пользователь снова открывает тот же экран, дополнение предлагает восстановить черновик. Черновики хранятся в основном хранилище данных, поэтому они доступны в кластере и после полного перезапуска приложения.
Разработчик выбирает, в каких экранах хранить черновики, добавляя фасет drafts в их дескрипторы. Код на Java писать не требуется.
Установка
|
Для этого дополнения требуется Enterprise подписка. Если у вас нет подписки, ознакомьтесь с разделом Пробная Enterprise+BPM подписка, чтобы получить пробную версию. |
Для автоматической установки через Jmix Marketplace следуйте инструкциям в разделе Дополнения.
Для ручной установки выполните следующие шаги.
-
Настройте доступ к премиум-репозиторию.
-
Добавьте премиум-репозиторий в свой
build.gradle:repositories { // ... maven { url = 'https://nexus.jmix.io/repository/premium' credentials { username = rootProject['premiumRepoUser'] password = rootProject['premiumRepoPass'] } } } -
Добавьте учетные данные премиум-репозитория в
~/.gradle/gradle.properties:premiumRepoUser=123456123456 premiumRepoPass=abcdefabcdefПолучите учетные данные репозитория из вашего лицензионного ключа: первая часть ключа перед тире – это имя пользователя репозитория, часть после тире – пароль. Например, если ваш ключ выглядит как
123456-abcdef abcdef, имя пользователя –123456, а пароль –abcdef abcdef.
-
-
Добавьте зависимости в ваш
build.gradle:implementation 'io.jmix.uirecovery:jmix-uirecovery-flowui-starter'
Дополнение добавляет таблицу UIREC_VIEW_DRAFT в основное хранилище данных.
Как это работает
Когда открывается экран с фасетом drafts и пользователь изменяет в нем данные, фасет сохраняет изменения в базу данных. Он делает это регулярно, но не чаще одного раза за настроенный интервал. Когда пользователь сохраняет изменения или закрывает экран и отменяет их, фасет удаляет черновик.
Если работа прервалась, например из-за перезапуска сервера, черновик остается в базе данных. Когда пользователь снова открывает экран для той же записи, фасет находит черновик и показывает диалог с предложением восстановить его:
Пользователь может восстановить изменения, отменить их или отложить решение до следующего открытия экрана. Экран также можно настроить так, чтобы черновики восстанавливались без вопроса.
Кроме того, дополнение предоставляет экран Unsaved drafts, который показывает все черновики текущего пользователя. Его можно открывать автоматически после входа в систему.
Черновики
Черновик относится к пользователю, экрану и редактируемой записи:
-
Хранится только последнее состояние. Каждое сохранение заменяет предыдущий черновик того же пользователя, экрана и записи. Истории черновиков нет.
-
Экран деталей существующей записи имеет отдельный черновик для каждой записи. Экран деталей новой записи имеет один черновик одновременно.
-
Черновик виден только пользователю, который его создал.
-
Черновик содержит только те атрибуты, которые изменил пользователь. При восстановлении черновика атрибуты, которые пользователь не изменял, сохраняют текущие значения, даже если другой пользователь изменил их после сохранения черновика.
-
Черновик устаревает по истечении срока хранения, который по умолчанию составляет 30 дней. Устаревший черновик не предлагается пользователю и удаляется. См. Удаление устаревших черновиков.
Ограничения
Дополнение сохраняет только те изменения, которые дошли до сервера и были зарегистрированы в DataContext экрана. Учитывайте следующее:
-
По умолчанию текстовое поле отправляет значение на сервер, когда поле теряет фокус или пользователь нажимает Enter. Значение, которое пользователь еще вводит, не сохраняется. Отправлять значение чаще можно с помощью атрибута valueChangeMode. См. Сохранение вводимых значений.
-
Значения компонентов, не связанных с данными, не сохраняются.
-
Изменение порядка элементов в коллекции не сохраняется, если в коллекции больше ничего не изменилось.
-
Изменение атрибута встроенной (embedded) сущности, вложенной в другую встроенную сущность, не сохраняется.
-
Дополнение не объединяет изменения, сделанные разными пользователями. Если запись была изменена другим пользователем после сохранения черновика, диалог восстановления предупреждает об этом. Если пользователь восстанавливает черновик, измененные атрибуты перезаписываются значениями из черновика. То же относится к списку элементов коллекции: восстановление черновика заменяет его.