删除过期的草稿
草稿的保存时间超过 jmix.uirecovery.drafts.retention 属性所设置的期限后就会过期。扩展组件在找到过期草稿时会将其删除,也就是在用户打开草稿对应的视图或 未保存的草稿 视图时删除。如果用户一直不打开某个视图,其草稿会一直保留在数据库中。如需删除这些草稿,请设置一个定时任务。
该任务调用 ViewDraftService bean 的 deleteExpired() 方法。该方法会删除所有用户的过期草稿,且不需要用户认证,因此可以在任何定时任务中调用。
例如,以下 bean 使用 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 扩展组件的作业中调用该方法。
本页是否有帮助?
感谢您的反馈