2017-04-19 9 views
2

CMISクエリを使用すると、1000個のドキュメントしか取得できません。しかし、私はリポジトリで利用可能なすべてのドキュメントを取得したい。CMISクエリを使用して1000以上のドキュメントを取得する方法

私はrepository.propertiesファイルで何らかの設定をしてドキュメントを入手することができるいくつかの解決方法を読んだ。

しかし私の質問は、私が生産リポジトリにアクセスしているので、私たちはCMISのコードを通じてそれを行うことができます。 repository.propertiesファイルを変更するには、ビジネスユーザーからのダウンタイムが必要です。それは私の場合は不可能です。

私はいくつかのプログラム的な解決策を探しています。

誰でもお手伝いできますか?

ありがとうございました..

+2

なぜページングを使用せず、1000のブロック単位でフェッチするのですか?リポジトリへの負荷が非常に少なくなる – Gagravarr

+1

@Gagravarr私はページングについてあまり知らない。それは私にリポジトリからすべての結果を与えるでしょう。可能であれば、サンプルコードとCMISで使用するためのいくつかのステップを用意してください。ありがとう –

+2

CMISをどのように使用しているかわからなくても、私たちができることはあまりありません。私たちはいくつかのコードを見る必要があります!あなたがPortCMISで.Netのためにやっているやり方は、Pythonやcmislibとは少し異なります。たとえば、 – Gagravarr

答えて

3

これはあなたのリポジトリの設定によるものだと思います。 /shared/classes/alfresco-global.propertiesでこれを追加して再起動する

試してみてください。

  • system.acl.maxPermissionCheckTimeMillis = 25000
  • system.acl.maxPermissionChecks = 3500

solrを使用している場合は、これも追加できます。

  • solr.querymaximumResultsFromUnlimitedQuery = 3500

あなたはここに役立つかもしれません:

+0

実際に私はこの回答を複数の場所で見つけましたが、私は同じことをalfrescoに触れることなくcmisコードでやりたかったのです。出来ますか??? –

+0

いいえ、不可能です。値を変更するか、何らかの種類のページング、バッチ処理などを調べることができます。 – Lista

+0

あなたが追加しなければならないsolrの新しいプロパティがあります: solr.query.maximumResultsFromUnlimitedQuery = 3500 そして、Listaはあなたがcmis qryでこれを制御することはできません。これらの設定をJMX経由で変更することはできますが、データベースに設定され、設定ファイルより優先されます – prignony

2

私はあなたに与えるソリューションがクエリにリンクされていませんか、ページサイズ、この手順に従うことができます(私は同じ問題に直面し、この1つのwo

)私のため

をrkedセーバークラスは、リポジトリについての最も重要な情報を保持するJavaクラス(私はリポジトリについて話すとき、私は+ファイルをフォルダ平均)

ある

セーバークラスを作成します。

あなたはセーバークラスで

1を使用する必要があります情報 - (あなたをbになる道 -

2に名前を付け

3)それをuild - AlfrescoはID

は、すべてのツリーparcour

この関数を再帰関数を使用して、クラスセーバーあなたにすべての要素を保存し、それがこの

のようになります。
public void getTree(Tree<FileableCmisObject> tree, SaverClass father, String serverURL, String login, String password) { 

    SaverClass enr = new SaverClass(); 
    enr.setName(tree.getItem().getName()); 

    if ((father.getPath()).equals("/")) /// IN CASE IT'S THE ROOT 
    { 
     enr.setPath("/" + tree.getItem().getName()); 

    } else { 
     enr.setPath(father.getPath() + "/" + tree.getItem().getName()); 
    }   
    enr.setFather(father.getNom()); 
    for (Tree<FileableCmisObject> t : tree.getChildren()) { 
     getTree(t, enr, serverURL, login, password); 
    } 

} 

リストにすべての要素を保存したら、リストのすべての要素に対してマイグレーション方法を使用するだけで済みます(Alfrescあなたがパスを使用したい場合は、それはOKです)ID:

あなたを助けた希望。

+0

この解決方法は少し難しいですが、時間がかかりすぎることはありませんそれを作ることができる –

関連する問題