我正在使用OpenCMIS 1.1.0在Alfresco内容存储库上执行CRUD操作。使用提供的示例here我能够对文件夹和文档执行所有CRUD操作。
现在我想执行这些操作(尤其是创建和更新)异步。使用这个优秀的SO post我可以异步创建文档。但是,OpenCMIS AsyncSession类不提供 updateContentStream 方法。
我是否可以通过某种方式使用OpenCMIS API异步更新文档内容。
答案 0 :(得分:2)
AsyncSession
中无法使用需要更改令牌的所有操作,因为如果将调度同一对象上的两个操作,则无法预测结果。
但是你可以添加自己的Callable。将AsyncSession
对象投射到AbstractExecutorServiceAsyncSession
并使用您自己的Callable对象调用submit
。在这里你可以做任何你想做的事。
这样的Callable类可能如下所示:
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);
}
}
但请记住,不要在同一个文档上运行两个任务!