Удаление устаревших черновиков

Черновик устаревает, когда он становится старше срока, заданного в свойстве 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.