如何使用 CMIS 查询获取超过 1000 个文档

How to get more than 1000 Documents By Using CMIS Query

通过使用 CMIS 查询,我只能获取 1000 个文档。但是我想获取存储库中所有可用的文档。

我阅读了一些关于此的解决方案,我们可以在 repository.properties 文件中进行一些配置并获取文档。

但我的问题是,我们可以通过 CMIS 中的代码来完成吗,因为我正在访问生产存储库。并在 repository.properties 文件中进行更改,我需要业务用户的一些停机时间。这对我来说是不可能的。

所以我正在寻找一些程序化的解决方案。

谁能帮帮我?

提前致谢..

我认为这是由于您的存储库配置所致。

尝试在 /shared/classes/alfresco-global.properties 中添加此内容并重新启动:

  • system.acl.maxPermissionCheckTimeMillis=25000
  • system.acl.maxPermissionChecks=3500

如果您使用的是 solr,您也可以添加这个:

  • solr.query.maximumResultsFromUnlimitedQuery=3500

您可能会在这里找到帮助:

我给你的解决方案与查询或页面大小无关,你可以按照以下步骤操作(我曾经遇到过同样的问题,这个对我有用)

创建一个保护程序class

保存程序 class 是一个 Java class,它保存了关于您的存储库的最重要信息(当我谈到存储库时,我指的是文件夹 + 文件)

你必须在你的 saver 中使用的信息 class

1 - 姓名

2 - 路径(您将构建它)

3 - Alfresco ID

使用递归函数

这个函数 parcour 所有树并将每个元素保存在你的 saver class,它看起来像这样

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 就可以)

希望对您有所帮助。