2016-09-13 2 views
0

야외에서 CMIS를 사용하여 대량 업데이트를 수행 할 수 있습니까?CMIS를 사용하여 Alfresco에서 대량 업데이트하는 방법

나는 다른 문서 유형을 가지고 있고 모든 문서 유형은 야외 저장소에 여러 문서를 가지고 있습니다.

내 요구 사항은 다음과 같습니다. 모든 문서의 단일 속성을 업데이트하는 경우 동일한 유형의 모든 문서를 반영해야합니다.

CMIS를 사용하여이 작업을 수행 할 수 있습니까?

예인 경우 해당 단계와 샘플 코드를 제공해주십시오. 사전에

감사

+1

당신이 말할 때 더 자세한 내용이 필요합니다. 문서 유형 무엇을 의미합니까? 몇 가지 예를 든다. –

+0

문서 유형은 내 사용자 지정 콘텐츠 형식을 의미합니다. 또한 다른 문서 유형에 대해 다른 속성 페이지를 만들었습니다. –

답변

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

하지만, 물론 당신은 그런 식으로뿐만 아니라 목록을 쿼리를 실행하고 구축 할 수 있습니다.

Alfresco와 함께 사용하려면 CMIS 1.1과 브라우저 바인딩을 사용해야하므로 서비스 URL이 http://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/browser인지 확인하십시오.

+0

당신의 솔루션과 제 사이에 큰 차이가 없다고 말할 때 나는 틀 렸습니다. –

+1

@ YagamiLight이 솔루션은 대량 업데이트로 "대량"부분을 처리합니다. 너 아니야. – Akah

+2

내 솔루션과 귀하의 차이점 (검색 집합의 결과 반복 및 각 검색 결과의 속성 설정)은 개별 문서의 속성을 설정할 때마다 서버로 이동한다는 것입니다.내 솔루션에서는 클라이언트가 서버에 "이러한 모든 문서에서 이러한 변경 작업을 수행하십시오"라고 말하면 서버는 서버로의 단일 이동만을 포함하기 때문에보다 효율적으로 모든 변경 작업을 수행합니다. –

1
나는 업데이트를 많이 수행의 목적을 수행하는 것이 좋습니다 솔루션이 좀 더 배울 수있는 동일한 유형 ( document, folder ...)로 개체를 선택하는 CMIS 쿼리를 사용하는 것입니다

그것에 대해 Cmis Query

첫 번째 단계로

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

및 목적 테스트를 위해 내가이 쿼리에

둘째 특정 폴더 지금 단계

for (QueryResult qr : resultList) { 

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

} 

내부에있는 모든 문서를 선택하는 모든 어린이들에게

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

주를 얻을 수 있습니다 내 쿼리를 사용하여 속성을 업데이트하려는 모든 문서를 가져옵니다.

희망은 당신을 도왔습니다.

+0

@deeps 작동합니까?!? –

관련 문제