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

标签 java alfresco alfresco-share cmis alfresco-webscripts

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

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

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

我可以使用 CMIS 执行此操作吗?

如果是,请提供执行此操作的步骤和示例代码。

提前致谢

最佳答案

困难的方法(也是啰嗦的方法)是查询文档,然后设置每个文档的属性。但 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.");

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

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

关于java - 如何使用 CMIS 在 Alfresco 中进行批量更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39468515/

相关文章:

java - HashMap 足够快吗?

java - 如何从 Alfresco 创建的自定义规则中检索文档 ID

java - 如何使用Alfresco OperationContext过滤掉文档?

java - WebMethods8.2 中的 Axis2 WS 使用者

java - 重新部署后无效的 Jboss 数据源

java - 从 alfresco 存储库加载 FTL 模板文件

alfresco - 有没有办法确定任务是否被重新分配?

javascript - 删除 Alfresco Share 中的文件夹

java - 如何从存储库 Web 脚本以编程方式创建 Alfresco 站点?

java - WSDL4J 无法使用 Basichttpbinding 解析 wcf .net 服务响应