java - 无法使用 cmis 中的版本更新文档

标签 java alfresco cmis

我正在尝试更新 cmis-alfresco 中的文档(具有版本支持)。正常文档更新成功。但是,当我尝试更新具有关系的文档时,出现错误。

            newFileProps = new HashMap<String, String>();
            newFileProps.put(PropertyIds.OBJECT_TYPE_ID,
                    "D:cmiscustom:document");
            newFileProps.put(PropertyIds.NAME, "ADGFileSource1");
            Document sourceDoc = folderAssociations.createDocument(
                    newFileProps, null, VersioningState.MAJOR);

            newFileProps.put(PropertyIds.OBJECT_TYPE_ID, "cmis:document");
            newFileProps.put(PropertyIds.NAME, "ADGFileTarget1");
            newFileProps.put(PropertyIds.OBJECT_TYPE_ID,
                    "D:cmiscustom:document");
            Document targetDoc = folderAssociations.createDocument(
                    newFileProps, null, VersioningState.MAJOR);


            Map<String, String> relProps = new HashMap<String, String>();
            relProps.put("cmis:sourceId", sourceDoc.getId());
            relProps.put("cmis:targetId", targetDoc.getId());
            relProps.put("cmis:objectTypeId", "R:cmiscustom:assoc");
            ObjectId relId = session.createRelationship(relProps, null,
                    null, null);


             if (sourceDoc.getAllowableActions().getAllowableActions().contains(org.apache.chemistry.opencmis.commons.enums.Action.CAN_CHECK_OUT)) {
                 sourceDoc.refresh();
                String testName = sourceDoc.getContentStream().getFileName();
                ObjectId idOfCheckedOutDocument = sourceDoc.checkOut();
                Document pwc = (Document) session.getObject(idOfCheckedOutDocument);

                String docText = "This is a sample document with an UPDATE";
                byte[] content = docText.getBytes();

                ByteArrayInputStream stream = new ByteArrayInputStream(content);         
                String filename=sourceDoc.getName();
                ContentStream contentStream = session.getObjectFactory().createContentStream(filename, Long.valueOf(content.length), "text/plain", stream);          
                ObjectId objectId = pwc.checkIn(false, null, contentStream, "just a minor change");
             }  

错误:

Constraint violation: 00190010 Found 1 integrity violations:
The association source multiplicity has been violated: 

最佳答案

我也遇到了同样的问题,而且非常绝望,因为它在 Alfresco 5.x 之前就可以工作。另外更新化学和导入 org.alfresco.cmis.client.AlfrescoDocument 包也没有帮助。

但我找到了以下解决方法。我们的 Alfresco 安装始终配置为自动版本,因此我只需为文档设置新内容即可绕过 checkout /更新/ checkin 过程:

theDoc.setContentStream(contentStream, true);

请注意,这将在我们的配置中添加新版本,因此从现在开始“theDoc”指向文档的旧版本。因此,您可能需要再次获取文档以使其指向最新版本,以避免“文档不是最新版本”错误。

关于java - 无法使用 cmis 中的版本更新文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28037558/

相关文章:

Java ID3 音频标签库

java - Selenium : Enter the text in div using xpath

java - 将 CMIS 结果限制从 100 增加到 1000

java - 使用 Apache Chemistry 在 Alfresco 中创建站点

oracle - Alfresco Community Edition,ManifoldCF和Elasticsearch可优化全文搜索

java - ANTLR:通过stringtemplate将修改后的AST翻译成java源码

java - 使用 Java 阅读 MS Word 2007

java - 为什么我收到以下异常

java - 如何使用 Java API 在 Alfresco 中创建文档链接?

java - 版本控制文件错误,在 java 中使用 Magnolia 与 apache Chemistry 和标准 CMIS