加载具有相同名称的文件时出错

时间:2013-09-27 11:34:04

标签: rest alfresco cmis opencmis

我使用下面的脚本在alfresco上传文件,但它拒绝创建说明冲突。

     "<?xml version='1.0' encoding='utf-8'?>\n" +
     "<entry xmlns='http://www.w3.org/2005/Atom' xmlns:app=\"http://www.w3.org/2007/app\" xmlns:cmisra=\"http://docs.oasis-open.org/ns/cmis/restatom/200908/\" xmlns:cmis=\"http://docs.oasis-open.org/ns/cmis/core/200908/\" xmlns:alf=\"http://www.alfresco.org\">\n" +
     "<title>" + fileName + "</title>\n" +
     "<summary>" + fileDescrption + "</summary>\n" +
     "<author>" + author + "</author>\n" +
     "<content type='" + mimeType.toString() + "'>" + encoder.encode(bytes) + "</content>\n" +
     "<cmisra:object>\n"+
     "<cmis:properties>\n" +
     "<cmis:propertyId propertyDefinitionId=\"cmis:objectTypeId\">\n"+
     "<cmis:value>D:hs:doc</cmis:value>\n"+
     "</cmis:propertyId>\n" +

     "<cmis:propertyId propertyDefinitionId=\"cmis:versionable\">\n"+
     "<cmis:value>TRUE</cmis:value>\n"+
     "</cmis:propertyId>\n" +

     "</cmis:properties>\n" +
     "</cmisra:object>\n" +
     "</entry>\n";

如何使用cmis rest启用版本控制。

1 个答案:

答案 0 :(得分:1)

我同意Gagravarr的观点,即使用http://chemistry.apache.org或其他来源提供的库之一,您将节省大量时间和挫折。

但是,您的问题的答案是,听起来您正在尝试在与现有对象相同的文件夹中创建具有相同名称的新对象。 Alfresco不允许这样做,因此错误。

相反,您需要做的是更新现有对象。您正在使用AtomPub绑定,因此如果您要更新内容流,则可以对内容流的URL执行PUT。

如果您尝试更新属性,则可以对对象的URL执行PUT。

这将在不创建新版本的情况下更改对象。如果您想要创建新版本,则需要签出对象(将对象POST到签出的集合),这将返回私有工作副本(PWC)。然后,您可以如上所述设置内容流并更新PWC上的属性,然后您可以进行签入。这将创建一个新版本。

请注意,如果Alfresco向您提供更改令牌,则需要在执行这些更新时将其交还给您,否则您将收到更新冲突异常。

如果您需要有关如何执行此操作的详细信息,请阅读规范。如果你想要一个友好的API来做这个而不是处理低级别的AtomPub XML,PUT,POST和DELETE,那么就抓住一个CMIS库。