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

http://chemistry.apache.orgまたはその他のソースで入手可能なライブラリの 1 つを使用することで、多くの時間とフラストレーションを節約できるという Gagravarr の意見に同意します。

ただし、質問に対する答えは、既存のオブジェクトと同じフォルダーに同じ名前の新しいオブジェクトを作成しようとしているように聞こえるということです。Alfresco ではこれが許可されていないため、エラーが発生します。

代わりに、既存のオブジェクトを更新する必要があります。AtomPub Binding を使用しているため、コンテンツ ストリームを更新する場合は、コンテンツ ストリームの URL で PUT を実行できます。

代わりにプロパティを更新しようとしている場合は、オブジェクトの URL で PUT を実行できます。

これにより、新しいバージョンを作成せずにオブジェクトが変更されます。代わりに新しいバージョンを作成する場合は、プライベート ワーキング コピー (PWC) を返すオブジェクトをチェックアウトする (チェックアウトされたコレクションにオブジェクトを POST する) 必要があります。その後、コンテンツ ストリームを設定し、上記のように PWC のプロパティを更新してから、チェックインを実行できます。これにより、新しいバージョンが作成されます。

Alfresco から変更トークンが渡された場合は、これらの種類の更新を実行するときにそれを返す必要があることに注意してください。そうしないと、更新競合の例外が発生します。

これを行う方法の詳細が必要な場合は、仕様を読んでください。低レベルの AtomPub XML、PUT、POST、および DELETE を処理するのではなく、使いやすい API でこれを行う場合は、CMIS ライブラリを入手してください。

于 2013-09-30T22:33:26.857 に答える