2017-12-22 18 views
0

Alfresco Content Repository에서 CRUD 작업을 실행하기 위해 OpenCMIS 1.1.0을 사용하고 있습니다. 제공된 예제를 사용하여 here 나는 폴더와 문서 모두에 대한 모든 CRUD 작업을 실행할 수 있습니다.Apache 화학을 비동기 적으로 사용하여 Alfresco에서 문서 컨텐츠를 업데이트하십시오.

이제는 이러한 작업 (특히 생성 및 업데이트) 비동기로을 실행하고 싶습니다. 이 우수한 SO post을 사용하면 문서를 비동기 적으로 만들 수 있습니다. 그러나 OpenCMIS AsyncSession 클래스는 updateContentStream 메서드를 제공하지 않습니다.

OpenCMIS API를 사용하여 문서 내용을 비동기 적으로 업데이트 할 수있는 방법이 있습니까?

답변

2

변경 토큰이 필요한 모든 작업은 동일한 개체에 대한 두 작업을 예약 할 경우 결과를 예측할 수 없으므로 AsyncSession에서 사용할 수 없습니다. 하지만 자신 만의 Callable을 추가 할 수 있습니다. AsyncSession 개체를 AbstractExecutorServiceAsyncSession으로 전송하고 사용자 고유의 Callable 개체로 submit을 호출하십시오. 여기서 원하는대로 할 수 있습니다.

public class SetContentStreamCallable extends SessionCallable<ObjectId> { 
    private Document doc; 
    private ContentStream contentStream; 
    private boolean overwrite; 

    public SetContentStreamCallable(Session session, Document doc, ContentStream contentStream, boolean overwrite) { 
     super(session); 
     this.doc = doc; 
     this.contentStream = contentStream; 
     this.overwrite = overwrite; 
    } 

    @Override 
    public ObjectId call() throws Exception { 
     return doc.setContentStream(contentStream, overwrite, false); 
    } 
} 

을 그러나 같은 문서에이 작업을 실행하지 명심 :

이러한 호출 가능 클래스는 다음과 같이 볼 수 있었다!