如何使用CMIS在Alfresco中进行批量更新

Dee*_*ape 0 java alfresco cmis alfresco-share alfresco-webscripts

是否可以在露天使用CMIS进行批量更新.

我有不同的文档类型,每种文档类型在露天存储库中都有多个文档.

现在我的要求是,如果我将更新任何文档的任何单个属性,那么它应该反映所有相同类型的文档.

我可以使用CMIS吗?

如果是,请提供相应的步骤和示例代码.

提前致谢

Jef*_*tts 5

艰难的方式(和繁琐的方式)是查询您的文档,然后在每个文档上设置属性.但CMIS规范实际上提供了一种更好的方式:批量更新.

这是代码的样子:

ArrayList<CmisObject> docList = new ArrayList<CmisObject>();
Document doc1 = (Document) getSession().getObjectByPath("/bulk/bulktest1.txt");
docList.add(doc1);
Document doc2 = (Document) getSession().getObjectByPath("/bulk/bulktest2.txt");
docList.add(doc2);
Document doc3 = (Document) getSession().getObjectByPath("/bulk/bulktest3.txt");
docList.add(doc3);

HashMap<String, Object> props = new HashMap<String, Object>();
props.put("cmis:description", "description set in bulk");
List<BulkUpdateObjectIdAndChangeToken> updatedIds = getSession().bulkUpdateProperties(docList, props, null, null);

System.out.println("Updated " + updatedIds.size() + " docs.");
Run Code Online (Sandbox Code Playgroud)

在我的示例中,我按路径抓取每个文档,但当然您也可以运行查询并以此方式构建列表.

要在Alfresco中使用它,您必须使用CMIS 1.1和浏览器绑定,因此请确保您的服务URL为http:// localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/browser.

  • 我的解决方案与您的解决方案之间的区别(在搜索集中迭代结果并在每个搜索结果上设置属性)是每次在单个文档上设置属性时,这都是到服务器的行程.在我的解决方案中,客户端告诉服务器"对所有这些文档进行这些更改",然后服务器执行所有更有效的更改,部分原因是它只涉及到服务器的一次访问. (2认同)