Удаление устаревших черновиков
Черновик устаревает, когда он становится старше срока, заданного в свойстве jmix.uirecovery.drafts.retention. Дополнение удаляет устаревший черновик, когда находит его, то есть когда пользователь открывает экран черновика или экран Unsaved drafts. Черновики экранов, которые пользователи больше не открывают, остаются в базе данных. Чтобы удалять их, настройте регулярное задание.
Задание вызывает метод deleteExpired() бина ViewDraftService. Метод удаляет устаревшие черновики всех пользователей и не требует аутентифицированного пользователя, поэтому его можно вызывать из любой задачи по расписанию.
Например, следующий бин использует аннотацию Spring @Scheduled:
@Component
public class DraftsCleanupJob {
private static final Logger log = LoggerFactory.getLogger(DraftsCleanupJob.class);
private final ViewDraftService viewDraftService;
public DraftsCleanupJob(ViewDraftService viewDraftService) {
this.viewDraftService = viewDraftService;
}
@Scheduled(cron = "0 0 3 * * *") (1)
public void deleteExpiredDrafts() {
int count = viewDraftService.deleteExpired(); (2)
log.info("Deleted {} expired drafts", count);
}
}
| 1 | Запускает метод каждый день в 3 часа ночи. |
| 2 | Удаляет устаревшие черновики и возвращает их количество. |
Выполнение по расписанию с помощью @Scheduled должно быть включено в конфигурационном классе:
@Configuration
@EnableScheduling
public class SchedulingConfiguration {
}
Также метод можно вызывать из задания дополнения Quartz.