0

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

     "<?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 启用版本控制。

4

1 回答 1

1

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

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

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

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

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

请注意,如果 Alfresco 将更改令牌交给您,您需要在执行此类更新时将其交回,否则您将收到更新冲突异常。

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

于 2013-09-30T22:33:26.857 回答