1

私のオープンソース アプリは、 Alfrescoフォルダーのファイルをダウンロードします ( CMISによる)。
アルゴリズムは非常に単純です。

  1. Folder.getChildren()を使用してフォルダーの内容を一覧表示する
  2. Document.getContentStream()でそれぞれをダウンロードします

ファイルの作業コピーを含むフォルダーを除いて、正常に動作します。その場合、Alfresco は次のように述べています。

org.apache.chemistry.opencmis.commons.exceptions.CmisInvalidArgumentException: Stream id is invalid: workspace://SpacesStore/8b9a58ba-652f-4a18-8d26-aba06df98d25;pwc
    at org.alfresco.opencmis.CMISConnector.getContentStream(CMISConnector.java:1199)
    at org.alfresco.opencmis.AlfrescoCmisServiceImpl.getContentStream(AlfrescoCmisServiceImpl.java:1795)
    at sun.reflect.GeneratedMethodAccessor700.invoke(Unknown Source)

おそらく、CMIS プロトコルの;pwc特殊なケースである「プライベートワーキングコピー」を意味します。ワーキング コピーは、Alfresco Share ユーザーがドキュメントの [オフラインで編集] をクリックすると作成されます (別名、チェックアウト/チェックイン)。

アルゴリズムに欠陥がありますか? それとも、Alfresco/OpenCMIS のバグでしょうか?

4

1 に答える 1

1

例外をトリガーするコードをここに貼り付けず、使用しているChemistryのバージョンについて言及していないため、詳細はわかりません。とにかく、CMISワークベンチv0.8.0内で次のGroovyコードを実行すると、すべてのファイルの内容が正常に出力されます。

def obj = session.getObjectByPath("/cc");
def children = obj.getChildren();
for (doc in children) {
  def s = doc.getContentStream();
  def i = s.getStream();
  println(i.text);
}

上記ccで使用したフォルダーは、Alfresco CMISインスタンスで作成したフォルダーで、ファイルを配置してチェックアウトし、PWCを作成しました。上記のコードはまったく同じAPIを使用しているため、コードに問題があると思います。

于 2013-03-13T15:48:08.550 に答える