通过使用CMIS查询,我只能获取1000个文档。但我想获取存储库中可用的所有文档。
我阅读了一些有关此问题的解决方案,我们可以在repository.properties文件中进行一些配置并获取文档。
但我的问题是,我们可以通过CMIS中的代码来实现,因为我正在访问生产存储库。并且要在repository.properties文件中进行更改,我需要一些业务用户的停机时间。这在我的情况下是不可能的。
所以我正在寻找一些程序化的解决方案。
有人可以帮助我吗?
先谢谢..
答案 0 :(得分:3)
我认为这是由于您的存储库的配置。
尝试在/shared/classes/alfresco-global.properties中添加它并重新启动:
如果您使用的是solr,也可以添加这个:
您可以在这里找到帮助:
答案 1 :(得分:2)
我给你的解决方案没有与查询或页面大小相关联,你可以按照这个步骤(我遇到同样的问题一次,这个问题对我有用)
创建保护程序类
saver类是一个Java类,它包含有关存储库的最重要信息(当我谈到存储库时,我的意思是文件夹+文件)
您必须在保护程序类中使用的信息
1 - 姓名
2 - 路径(您将构建它)
3 - Alfresco ID
使用递归函数
这个函数parcour所有树并保存你的saver类中的每个元素,它看起来像这样
public void getTree(Tree<FileableCmisObject> tree, SaverClass father, String serverURL, String login, String password) {
SaverClass enr = new SaverClass ();
enr.setName(tree.getItem().getName());
if ((father.getPath()).equals("/")) /// IN CASE IT'S THE ROOT
{
enr.setPath("/" + tree.getItem().getName());
} else {
enr.setPath(father.getPath() + "/" + tree.getItem().getName());
}
enr.setFather(father.getNom());
for (Tree<FileableCmisObject> t : tree.getChildren()) {
getTree(t, enr, serverURL, login, password);
}
}
保存列表中的所有元素后,您只需对列表中的每个元素使用迁移方法(如果您想使用Alfresco ID,则可以,如果您想使用Path,那就可以了)
希望能帮到你。