データハンドラーについて

データハンドラーについて

ファストトラック記事は、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、こちらまでご連絡ください。

多くのデータ駆動型アプリケーションの一般的な要件は、データのインポートとエクスポートです。 この 可能性が 直接データベースにアクセスし、エクスポート/インポートデータへのSQLクエリを実行することによって達成すること。ただし、これにはいくつかの欠点があります。

  • さまざまなデータベースベンダーと連携するには、カスタマイズされたSQLスクリプトが必要になる場合があります。
  • データベースへのアクセスは厳しく制御され、オンデマンドでエクスポート/インポートする機能が制限される場合があります。
  • データを保存および解析する独自の手段を考え出す必要があります。

Liferayは、データベースにアクセスせずにデータをエクスポート/インポートする、より便利で信頼性の高い方法を提供します。

Liferay Archive(LAR)ファイル

アプリケーションのデータをエクスポート/インポートする簡単な方法は、Liferay ARchive(LAR)ファイルを使用することです。 Liferayは、データベースに依存しない方法でデータをエクスポート/インポートする必要性に対処するLAR機能を提供します。 では、LARファイルとは正確には何ですか?

LARファイルは、Liferay DXPがデータのエクスポート/インポートに使用する圧縮ファイル(ZIPアーカイブ)です。 LARファイルは、単一のポートレット、ページ、またはページセットに対して作成できます。 LAR対応のポートレットは、データのインポート/エクスポート方法を制御できるインターフェイスを提供します。 LARファイルの使用を必要とするLiferay DXPの使用例がいくつかあります。

  • データベース全体のバックアップを必要とせずに、ポートレット固有のデータをバックアップおよび復元します。
  • サイトのクローニング。
  • ユーザーのパブリックまたはプライベートページに使用するテンプレートを指定します。
  • ローカルライブまたはリモートライブのステージングを使用します。

データハンドラフレームワークを利用できるため、開発者はLARファイルを手動で作成/変更する必要がありません。 LARファイルを変更しないことを強くお勧めします。 Liferayが提供するデータハンドラAPIを常に使用して構築する必要があります。

ただし、LARファイルの作成方法を知ることは、アプリケーションのデータハンドラーの全体的な目的を理解するのに役立ちます。 次に、LARファイルの構造を調べます。

LARファイルの構造

LARファイルとは何ですか? 使用する理由の一般的な概念は知っていますが、エクスポート/インポートプロセスを機能させるために内部に存在するものを知りたい場合があります。 LARファイルの構築方法に関する基本的な理解があれば、データハンドラーがバックグラウンドで生成するものをよりよく理解できます。

以下は、単純なLARファイルの構造です。 単一のブックマークエントリのエクスポートとポートレットの構成を示しています。

  • Bookmarks_Admin-201701091904.portlet.lar
    • group
      • 20143
        • com.liferay.bookmarks.model.BookmarksEntry
          • 35005.xml
        • portlet
          • com_liferay_bookmarks_web_portlet_BookmarksAdminPortlet
            • 20137
              • portlet.xml
            • 20143
              • portlet-data.xml
    • manifest.xml

LARに生成された名前から、LARに含まれている情報(ブックマーク管理アプリのデータ)を確認できます。 マニフェスト.xml ファイルは、LARファイルのルートにあります。 エクスポートプロセスに関する重要な情報を提供します。 サンプルブックマークLARの manifest.xml は、あまり多くのコンテンツをエクスポートしないため、かなりむき出しですが、コンテンツのページをエクスポートすると、このファイルが大きくなる可能性があります。 manifest.xml ファイルには4つの主要部分(タグ)があります。

  • ヘッダー:LARファイル、現在のプロセス、およびエクスポートするサイトに関する情報が含まれています(必要な場合)。 たとえば、ロケール、ビルド情報、エクスポート日、会社ID、グループID、レイアウト、テーマなどを含めることができます。
  • missing-references:インポート中に検証する必要があるエンティティをリストします。 たとえば、画像(たとえば、ドキュメントライブラリにある埋め込み画像)を参照するWebコンテンツ記事をエクスポートするとします。 画像がエクスポート用に選択されていない場合、画像は記事がインポートされるサイトに既に存在している必要があります。 そのため、LARファイル内で参照されていない画像としてフラグが立てられます。 LARのインポート時に、欠落した参照がサイトに存在しない場合、インポートプロセスは失敗します。 インポートが失敗した場合、インポートUIには検証されなかった欠落している参照が表示されます。
  • ポートレット:LARにエクスポートされたポートレット(つまり、ポートレットデータ)を定義します。 各ポートレット定義には、エクスポートされたポートレットに関する基本情報があり、生成された portlet.xml をポイントして、より専門的なポートレット情報を取得します。
  • manifest-summary:エクスポートされたものに関する情報が含まれます。 ステージングおよびエクスポートフレームワークは、プロセスがデータの整合性を尊重するため、マークされていなくても、一部のエンティティをエクスポートまたは公開します。 このセクションには、処理されたすべてのエンティティの情報が保持されます。 以外の追加カウント 属性を定義するエンティティは、エクスポート/インポートUIに表示されます。

manifest.xml ファイルは、LARでページをエクスポートした場合のレイアウト情報も定義します。 たとえば、あなたのマニフェストはしている可能性が LayoutSetレイアウト、および LayoutFriendlyURL 指定のタグがエクスポートされたページ内のモデルとその様々な参照を上演しました。

LARの manifest.xml と、それがエクスポートプロセスに関する高レベルのデータを格納するためにどのように使用されるかについて学習したので、LARファイルの グループ フォルダーをさらに深く掘り下げることができます。 グループ フォルダーには2つの主要部分があります。

  • エンティティ
  • ポートレット

サンプルブックマークLARの構造を見ると、 group /[groupId] フォルダーに、エクスポートするエンティティにちなんで名付けられたフォルダーが含まれていることがわかります(例: com.liferay.bookmarks.model.BookmarksEntry)。エクスポート元のポートレットにちなんで名付けられたフォルダーを保持する ポートレット フォルダー(例: com_liferay_bookmarks_web_portlet_BookmarksAdminPortlet)。 エクスポートするエンティティ/ポートレットごとに、それらに関するデータを保持する後続のフォルダーがあります。 エンティティとポートレットは、 company フォルダーに保存することもできます。 エンティティの大部分はグループに属しますが、一部はグループスコープ外に存在します(ユーザーなど)。

/group/20143/com.liferay.bookmarks.model.BookmarksEntry/35005.xml ファイルを開くと、データベースに保存されているものと同様の、エンティティに関するシリアル化されたデータが見つかります。

ポートレット フォルダーには、エクスポートしたすべてのポートレットが含まれます。 各ポートレットには、エクスポートされたコンテンツを説明するデータを含むさまざまなXMLファイルを保持する独自のフォルダーがあります。 単一のポートレット用に生成できる3つの主要なXMLファイルがあります。

  • portlet.xml:マニフェストファイルと同様に、ポートレットに関する重要な情報を提供します。 たとえば、これには、ポートレットID、ポートレットに格納されている高レベルのエンティティ情報(たとえば、WebコンテンツポートレットのWebコンテンツ記事)、許可などが含まれます。
  • portlet-data.xml:ポートレットに保存されている特定のエンティティデータを記述します。 たとえば、Webコンテンツポートレットの場合、ポートレットに保存されている記事は ステージモデル タグで定義され、シリアル化されたエンティティXMLファイルにリンクされます。
  • portlet-preferences.xml:ポートレットの設定を定義します。 たとえば、これには、ポートレット所有者、デフォルトユーザー、記事IDなどのポートレットプリファレンスが含まれます。

LARをインポートすると、ポートレットデータのみが含まれることに注意してください。 使用するには、ポートレットをデプロイする必要があります。

これで、エクスポートされたエンティティ、ポートレット、およびページがLARファイルでどのように定義されているかがわかりました。 LARファイルの構築について学んだことの概要については、下の図を参照してください。

図1:エンティティ、ポートレット、およびページは、さまざまな場所のLARで定義されます。

優れた\! これで、LARファイルがどのように生成され、どのように構成されているかについての基本的な理解ができました。

次に、データハンドラの基本と、それらを実装するために必要な前提条件について学習します。

データハンドラの基礎

LARファイルをエクスポート/インポートするエクスポート/インポートフレームワークの機能を活用するために、アプリケーションにデータハンドラーを実装できます。 データハンドラには2つのタイプがあります ポートレットデータハンドラ および ステージングモデルデータハンドラです。

ポートレットデータハンドラは、ポートレット固有のデータをLARファイルにインポート/エクスポートします。 これらのクラスには、ステージングされたモデルデータハンドラー間のクエリと調整の役割のみがあります。 たとえば、ブックマークアプリケーションのポートレットデータハンドラは、ブックマークエンティティを処理するシステムイベントを追跡します。 また、ブックマークアプリケーションのエクスポート/インポートUIオプションも構成します。

ステージングのためにアプリケーションの各エンティティを追跡するには、 StagedModel インターフェイスを実装してステージングモデルを作成する必要があります。 ステージングモデルは、ステージングフレームワークのエンティティの親インターフェイスです。 段階的モデルの詳細については、「 段階的モデルについて チュートリアル」を参照してください。

ステージングモデルデータハンドラーは、ステージングモデル(エンティティ)に関する情報をエクスポート/インポートフレームワークに提供し、UIの表示名を定義し、エンティティを削除します。 参照コンテンツのエクスポートも担当します。 たとえば、BookmarksエントリがBookmarksフォルダーにある場合、 BookmarksEntry ステージングモデルデータハンドラーは BookmarksFolderエクスポートを呼び出します。

図2:データハンドラフレームワークは、ポートレットデータハンドラとステージングモデルデータハンドラを使用して、それぞれポートレットとステージングモデル情報を追跡およびエクスポート/インポートします。

アプリケーションのすべてのエンティティにステージングモデルデータハンドラーを実装する必要はありませんが、エクスポート/インポートするエンティティやステージングフレームワークを追跡させるエンティティには必要です。

データハンドラーを実装する前に、アプリケーションでService Builderを実行して、アプリケーションがエクスポート/インポートおよびステージングフレームワークの準備ができていることを確認してください。 Service Builderを使用してステージングモデルを作成する必要はありませんが、多くの要件が生成されるため、お勧めします。 Service Builderでエンティティがステージングモデルとして認識されるようにするには、 service.xml ファイルで uuid 属性を true に設定し、次の列を宣言する必要があります。

  • companyId
  • groupId
  • userId
  • userName
  • createDate
  • modifiedDate

アプリケーション用の service.xml ファイルを作成する方法については、「 Service Builder でオブジェクトリレーショナルマップを定義する」チュートリアルをご覧ください。

アプリのデータハンドラーを開発する方法については、「 ポートレットデータハンドラーの開発 および ステージングモデルデータハンドラーの開発 チュートリアルをご覧ください。

« ステージングモデルの手動作成ポートレットデータハンドラーの開発 »
この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています