4

過去 2 年間、Liferay を頻繁に使用してきましたが、大規模なドキュメント管理は必要ありませんでした。

現在、ユーザーがドキュメント (MS Office OLE2 ドキュメント、ODS ドキュメント、PDF など) をアップロードするポートレットがあり、利用可能なすべてのメタデータを保持する必要があります。

Liferay を使用せずにそれを行う方法はわかっています。おそらく、Apache Tika ( UpdateRichDocumentsおよびExtractingRequestHandler ) で Apache solr を使用するか、内部で Apache Tika を使用している Apache Jackrabbit (org.apache.jackrabbit.extractor.*) を使用します。

問題は、Liferay のトランクを見ると、いくつかの重要なクラスがあることです。

Hooks (JCRHook, FileSystemHook, CMISHook, s3Hook)DLLocalServiceImpl社内から直接雇用されている

もう 1 つの方法は、これを使用する DLAppLocalServiceImplことでDLRepositoryLocalServiceImplあり、ファイルはフックを介してリポジトリに保存されますが、そこで多くの追加作業が行われます。

  1. Liferay には jackrabbit-text-extractors ライブラリがないため、PDF、DOC、ODS ドキュメントからメタデータを抽出したい場合、非常に苦労することになると思います... DL サービス レイヤーは追加のプロパティを受け入れないためです。

    1. DL サービスと JCR フックの使用を避け、Jackrabbit に直接アクセスする必要があると思います...しかし、互換性が失われ、リポジトリなどを移行する可能性があります。

誰かこれに協力してくれませんか?ありがとうございました

4

4 に答える 4

2

インデックス作成には SOLR、ドキュメント ストレージには Jackrabbit を使用します。Liferay ドキュメント ライブラリをコードで管理するのはかなり簡単です。DL*LocalServiceUtil クラス、つまりDLFolderLocalServiceUtilと を見てくださいDLFileLocalServiceUtil。デフォルトでは、Liferay はハード ドライブ上に一致するフォルダー/ファイル構造を (名前を変更して) 作成するだけなので、Liferay は箱から出してすぐにアップ/ダウンロードおよび表示できるため、これ以上のものが必要な場合は、コードを記述するか、Jackrabbit を使用するだけで済みます。コントロール パネルとさまざまなポートレットを介して。

私は Liferay で JackRabbit を使用したことはありませんが、設定が完了すると、すべてが内部で管理され、フロントエンドで心配する必要がなくなります。

「すべてのメタデータが利用可能」と言うと、何が保持されるのかわかりませんが、追跡できるようにファイルの名前を変更することを除けば、他の変更はありません。LIFERAY/data/document_library各タイプのファイルをアップロードし、ディレクトリとサブディレクトリのエントリを確認することで、すばやく簡単にテストできます。ここでも、Jackrabbit を使用する場合は異なります。

于 2011-02-28T03:55:13.697 に答える
1

これら 2 つのサービスDLLocalServiceImplDLAppLocalServiceImpl両方が重要であり、今後も重要になると思います。リポジトリに直接アクセスする場合は前者。このサービスを介してファイルを追加する場合、対応する DlFileEntry をデータベースに保持し、その addFile(...., fileEntryId, ...) を参照する必要があることに注意してください。

後者のサービスは、主に資産管理とワークフローなどの追加作業を行っています。

あなたのユースケースに関しては、メタデータが JCR リポジトリに入ることができないため、ドキュメント ライブラリの使用は避けたいと思います。実際には、保存できるメタデータ/カスタム プロパティのみが Liferay ポータルのcustom propertiesAKA機能になります。Expando

最善の方法は、独自の jackrabbit フックを実装してデータをリポジトリに保存し、Liferay ドキュメント ライブラリでそのリポジトリを使用できるようにすることです。

于 2011-03-21T14:18:51.673 に答える
0

エドガーが正しいと思います。http://svn.liferay.com/repos/public/portal/trunk/portal-service/src/com/liferay/documentlibrary/service/DLLocalService.java経由で現在のトランクを確認する場合(パスワードなしでゲストとしてログイン) 、クラス DLFolderLocalServiceUtil が見つかりません。既存の DLFolderLocalServiceUtil クラスも使用しています。ヘッドアップをありがとう。コードをリファクタリングして、6.1 が登場しても DocumentLibrary サービスを引き続き使用できるようにします。

于 2011-03-17T06:50:45.850 に答える