使用Filenet JAVA API修改保留期后仍无法删除文档问题咨询
报错信息:Content Engine cannot delete or move content because the retention period for the item has not yet expired. Current time: 9/16/21 8:43 AM; Storage period: 20-12-99 1:00.
问题根源及排查方案
1. 保留策略优先级覆盖
Filenet的保留规则存在层级优先级,类/文件夹/全局保留策略的优先级高于单文档自定义的RetentionDate属性。你修改的仅为文档级的保留日期,如果文档绑定了更高层级的强制保留策略,修改单文档属性不会生效,且策略的到期时间不会直接展示在单文档的属性列表中。
- 排查方式:调用
get_RetentionPolicy()方法查看文档是否存在绑定的保留策略,有绑定的话需要先解除策略绑定或调整策略的保留周期。
2. 记录管理(RM)模块的独立保留规则
如果你的环境启用了IBM Records Manager组件,当文档被标记为正式记录后,会触发记录库独立的保留规则,该规则完全隔离于Content Engine的文档属性,修改普通文档的RetentionDate不会产生任何作用。
- 排查方式:检查文档的
IsRecord属性值是否为true,是的话需要先走官方的记录销毁流程解除记录标记后,才能执行删除操作。
3. 存储区域WORM强制保留
报错中提到的「存储周期」属于存储区域的配置属性,不会同步到单文档属性列表。如果文档所在的存储区域开启了WORM(一次写入多次读取)特性,且配置了全局强制保留周期,所有写入该区域的内容都会强制遵守该规则,不受文档级属性影响。
- 排查方式:联系Filenet管理员核对文档对应存储区域的保留周期配置,确认是否存在存储级的强制保留限制。
4. 属性修改未生效
旧版本Filenet Content Engine存在属性缓存机制,如果修改RetentionDate后没有执行正确的保存刷新操作,CE会读取缓存中的旧保留日期进行校验,导致修改不生效。
正确的修改保存代码示例:
// 设置新的保留日期 document.getProperties().putValue("RetentionDate", 你的新日期对象); // 保存并触发刷新 document.save(RefreshMode.REFRESH); // 删除前显式拉取最新属性,避免缓存影响 document.refresh(new String[]{"RetentionDate", "RetentionPolicyBinding"});
内容的提问来源于stack exchange,提问作者Metaladdict
相关产品推荐
相关产品推荐

