使用Apache Chemistry异步更新Alfresco中的文档内容

问题描述 投票:0回答:1

我正在使用OpenCMIS 1.1.0在Alfresco内容存储库上执行CRUD操作。使用here提供的示例,我能够对文件夹和文档执行所有CRUD操作。

现在我想异步执行这些操作(尤其是创建和更新)。使用这个优秀的SO post,我可以异步创建文档。但是,OpenCMIS AsyncSession类不提供updateContentStream方法。

有什么方法可以使用OpenCMIS API异步更新文档内容。

asynchronous alfresco cmis opencmis
1个回答
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);
    }
}

但请记住,不要在同一个文档上运行两个任务!

© www.soinside.com 2019 - 2024. All rights reserved.