3

Liferay 6.1.20 EEで独自のデフォルトのドキュメント タイプとメタデータ セットを作成したいと考えています。

現在、Liferay 実装は独自のデフォルト ドキュメント タイプとメタデータ セット (契約、オンライン トレーニングなど) を作成します。これらは、スタートアップ アクションであるクラス AddDefaultDataAction から呼び出されるクラス AddDefaultDocumentLibraryStructuresAction で作成されます。

Liferay フォーラムの投稿で述べられているように、この作成プロセスをオフにしたい場合は、AddDefaultDataAction の関連する行をコメントアウトするか、application.startup.events にカスタムの AddDefaultDataActionを追加して、デフォルトのものを上書きすることができます。

これは、フックを使用してapplication.startup.events をオーバーライドできますか? はいの場合、AddDefaultDataAction クラスはportal-impl.jarクラスであり、フックからアクセスできないため、どのようにオーバーライドできますか? そうでない場合、この目的のためにext プラグインを使用する必要がありますか? または、独自の既定のドキュメント タイプとメタデータ セットを実装するより簡単な方法はありますか?

4

1 に答える 1

6

にあるデフォルト設定を見るとportal.properties、そこには次のように書かれています

#
# Application startup event that runs once for every web site instance of
# the portal that initializes.
#
application.startup.events=com.liferay.portal.events.AddDefaultDataAction,\
     com.liferay.portal.events.AppStartupAction,\
     com.liferay.portal.events.ChannelHubAppStartupAction

com.liferay.portal.events.AddDefaultDataActionしたがって、次のように他のものを指定するだけで、このリストからデフォルトを削除できますportal-ext.properties

application.startup.events=com.liferay.portal.events.AppStartupAction,\
     com.liferay.portal.events.ChannelHubAppStartupAction

すべての新規インストールでこれを行う場合は、インスタンスを最初に起動する前にこの変更を追加する必要があります。または、これをすぐに実行できる ext プラグインを作成する必要があります。なぜextが必要なのですか?フックは別の StartupAction を追加することしかできず、既存のものを変更することはできません。extは、既存の起動アクションを変更または削除したり、それらのコードをオーバーライドしたりできます。

ext プラグインでは、実装することもできます

application.startup.events=com.mariaioannidou.MyCustomAddDefaultDataAction,\
     com.liferay.portal.events.AppStartupAction,\
     com.liferay.portal.events.ChannelHubAppStartupAction

デフォルトのアクションと同じように実装MyCustomAddDefaultDataActionし、ドキュメント タイプを作成しません。

一方、フックは、不要な標準ドキュメント タイプをすべて見つけて、それらが実際に使用されていないことを確認してから削除することができます。ご覧のとおりAddDefaultDataAction、ドキュメント タイプを追加するだけでなく、アクション内の残りのコードを実行する必要がある場合もあります。

別の代替手段は、実際に の実装を変更する ext プラグインを作成するcom.liferay.portal.events.AddDefaultDataActionことですが、ここでも ext を使用します。最初の起動前にすべてのインストールでこれをデプロイしないと、とにかくデフォルトのコンテンツになってしまいます。自動的に削除するコードが必要になる場合があります。

私の個人的な推奨事項は、フックを使用して、不要なドキュメント タイプを削除することです (使用されていない場合)。理由は次のとおりです。

  1. 展開の容易さ (ホット展開が可能)、
  2. 最初の実行の前にプラグインをデプロイしないと、とにかく不要なドキュメント タイプを削除する必要があります。
  3. 保守性: ext プラグインよりもフックを保守する方が簡単です。
于 2013-05-24T15:38:40.937 に答える