2

私はこれを理解しようとしています.Liferayのフォーラムでこの質問をしていました-最後のエントリ.

そして、私が思いつくことができるのは、FileEntry のExpandoを作成することだけですが、これは非常に複雑に思えます。それが理にかなっているのかどうかは誰にもわかりません。休止状態を介して適切にクエリを実行できなかったため、expando 機能は好きではありません。

そのLiferayフォーラムでの私の質問に対する答えを知っている人はいますか?

問題はそれです、

DLAppLocalServiceUtil.addFileEntry(...);
DLLocalServiceUtil.addFile(....);

ファイルに関する追加情報/プロパティを保存することはできません。その結果、Liferay の JCRHook を使用する代わりに、JackRabbit を直接使用する必要があります。しかし、ドキュメント ライブラリがもたらす利点をすべて失うことになります。

4

1 に答える 1

3

はい、唯一のオプションは、Expando AKA カスタム プロパティ/フィールドを使用することです。fileEntry の場合、テーブルと列をプログラムで作成する必要はありませんが、[コントロール パネル] > [カスタム フィールド] で設定できます。

その後、expando 値を入力する方法がいくつかあります。

fileEntry.getExpandoBridge().setAttribute("propName", "propValue")

またはビューレイヤーからプロパティを取得する場合

<liferay-ui:custom-attributes-available className="<%= DLFileEntry.class.getName() %>">
    <liferay-ui:custom-attribute-list
        className="<%= DLFileEntry.class.getName() %>"
        classPK="<%= (fileVersion != null) ? fileVersion.getFileVersionId() : 0 %>"
        editable="<%= true %>"
        label="<%= true %>"
        />
</liferay-ui:custom-attributes-available>

その後

ServiceContext serviceContext = ServiceContextFactory.getInstance(
            DLFileEntry.class.getName(), actionRequest);

serviceContext は actionRequest のパラメーターによって設定され、呼び出します

fileEntry.getExpandoBridge().setAttributes(serviceContext)

最後に、特定のプロパティを持つ fileEntries を照会する必要がある場合があります

public Hits search() {
     Map<String, Serializable> attributes = new HashMap<String, Serializable>();
     attributes.put("propertyName", "propertyValue");

     SearchContext searchContext = new SearchContext();
     searchContext.setAttributes(attributes);
     Indexer indexer = IndexerRegistryUtil.getIndexer(FileEntry.class);
     return indexer.search(searchContext);
}

もちろん、Liferay ドキュメント ライブラリは JCR コンテンツ リポジトリではないため、このソリューションは少し複雑に見えるかもしれませんが、文字通り、JCRHook (ファイルが jackrabbit リポジトリに格納される場所) などのフックを介して具体的なリポジトリ実装の抽象化レイヤーを提供するドキュメント ライブラリです。 )、CMIS サポート、移行サポートなど。また、permissionChecking、fileVersioning、ドキュメント ワークフロー、アセット管理も処理します。

したがって、より複雑なことを行うつもりで、プロパティ/メタデータを照会し、それらを変更して展開する必要がある場合。JCRリポジトリを直接使用することを検討する必要があります...

于 2011-03-19T22:03:30.480 に答える