How to Do Mass Update in Alfresco Using CMIS

天大地大妈咪最大 提交于 2019-12-01 01:42:35

The hard way (and chatty way) is to query for your documents and then set the properties on each one. But the CMIS spec actually provides a better way: Bulk updates.

Here is what the code looks like:

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.");

In my example I am grabbing each document by path, but of course you could run a query and build your list that way as well.

To use this with Alfresco you must use CMIS 1.1 and the browser binding so make sure your service URL is http://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/browser.

the solution that i suggest to do in purpose of doing a lot of updates is to use CMIS query to select object with the same type (document,folder ...) you can learn more about it with Cmis Query

First Step

String query;
query = "SELECT * FROM cmis:document WHERE IN_FOLDER('" + objectId + "')";

and to get all the children

ItemIterable<QueryResult> resultList = session.query(query, false);

Note that for a purpose testing i selected in this query all the document that is inside a particular folder

Second Step

for (QueryResult qr : resultList) {

String idDocument = qr.getPropertyByQueryName("cmis:objectId").getFirstValue().toString();
Document doc = (Document) session.getObject(idDocument);

}

Now i use my query to get all the document that i want to update the properties.

Hope that helped you.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!