対話管理ガイド

     前  次    目次     
ここから内容

プレースホルダの作成

プレースホルダとは JSP 内で定義された場所で、BEA 仮想コンテンツ リポジトリから動的に取得した Web コンテンツを一度に 1 つずつ表示します。1 つ以上のコンテンツ クエリがプレースホルダに登録されている場合、プレースホルダは定義されているクエリおよびロジックを使用して、実行するクエリおよび表示するコンテンツ項目を指定します。コンテンツ クエリがデータを返さず、他に登録されているクエリがある場合、プレースホルダはそのクエリを実行します。それぞれのクエリに優先度、つまり重みがあり、表示する具体的なコンテンツを指定します。

たとえば、ペット ショップに対するプレースホルダでは、ユーザが鳥の愛好家かどうかを判断するキャンペーン クエリを使用して、鳥に関する特別なオファーを表示することができます (図 7-1 を参照)。

図 7-1 デフォルト コンテンツとキャンペーン コンテンツを表示できるプレースホルダ

デフォルト コンテンツとキャンペーン コンテンツを表示できるプレースホルダ

プレースホルダは次の 2 つの部分で構成されます。

  1. Workshop for WebLogic で作成するプレースホルダ ファイル
  2. 処理を実行する JSP タグ

プレースホルダを作成する際には、表示するコンテンツを選択し、プレースホルダのクエリを選択してから、プレースホルダそのものを作成します。

この章の内容は以下のとおりです。

 


プレースホルダ用コンテンツの選択

プレースホルダは、ドキュメントの MIME タイプ属性を使用してブラウザに必要な HTML タグを生成します。デフォルトでは、プレースホルダは次の MIME タイプについてのみ、適切な HTML タグを生成します。

この節では、次のトピックについて説明します。

プレースホルダでのその他の MIME タイプの表示

コンテンツを表示する場合、プレースホルダはドキュメントの MIME タイプを参照して、特定のドキュメント タイプに必要となる HTML タグを生成します。たとえば、画像タイプ ドキュメントを表示する場合、広告プレースホルダは、画像の表示に必要な <img> タグを生成する必要があります。デフォルトでは、広告プレースホルダはイメージやその他の種類のファイルを表示するための MIME タイプ (「プレースホルダ用コンテンツの選択」を参照) についてのみ、適切な HTML タグを生成します。

警告 : <EMBED> タグは、すべてのブラウザで常に正常に動作するわけではありません。この動作は、コンフィグレーションしたプラグインによって異なります。

基本的な Java プログラミングに精通していれば、プレースホルダでその他の MIME タイプ用の HTML を生成できるようにするクラスを書くことも可能です。ビデオ クリップはその他の MIME タイプの一例です。

その他の MIME タイプをプレースフォルダに表示するには、次のタスクを実施する必要があります。

  1. ユーティリティまたは EJB プロジェクト を作成し、ポータル Web アプリケーション サービスのファセットをプロジェクトに追加します。詳細については、「標準イベント クラスの作成」を参照してください。
  2. HTML を生成する Java クラスを作成し、コンパイルします。
  3. 新しいクラスを登録します。

Java クラスの作成とコンパイルによる HTML の生成

MIME タイプを表示するためにブラウザで必要とされる HTML を生成するには、ユーティリティまたは EJB プロジェクトを作成するのに Workshop for WebLogic を使用し、ポータル Web アプリケーション サービスのファセットを Web プロジェクトの プロジェクト プロパティ ダイアログとともに追加します。(このファセットは EAR ファイルの一部である既存のユーティリティまたは EJB プロジェクトに追加することもできます。) 次の手順で、com.bea.p13n.ad.AdContentProvider インタフェースを実行する Java クラスを作成します。このインタフェースの詳細については、Javadoc を参照してください。

新しいクラスの登録

クラスを CLASSPATH にあるディレクトリに保存した後は、WebLogic Portal にその存在を知らせる必要があります。これは手動または Administration Console で行うことができます。CLASSPATH にクラスを追加するには、方法 1 または方法 2 を選択します。

方法 1

CLASSPATH に手動でクラスを追加するには、以下の手順を実行します。

  1. クラスを手動で追加するには、WebLogic Server を停止します。
  2. アプリケーションの META-INF\wps-config.xml ファイルのバックアップを作成します。
  3. テキスト エディタで wps-config.xml ファイルを開き、<AdService> 要素を検索します。
  4. 以下を、<AdService> のサブ要素として追加します。
  5. <AdContentProvider
    Name="MIME-type"
    Provider="YourClass.class"
    Properties="optional-properties-for-your-class"
    >
    </AdContentProvider>

    AdContentProvider 要素に次の値を指定します。

    • Name - サポートする MIME タイプ。
    • Provider - コンパイルされた Java ファイルの名前。CLASSPATH 環境変数で指定されるディレクトリより下の階層のファイルを保存した場合は、CLASSPATH ディレクトリより 1 レベル下げたディレクトリから開始するファイルのパス名を含める必要があります。
    • Properties - オブジェクトに渡す追加のプロパティまたはパラメータ。
    • たとえば、システムの CLASSPATH<PORTAL_APP>/classes を追加した場合、AVI ファイルをサポートするため、クラスを <PORTAL_APP>/classes/myclasses/MimeAvi.class として保存します。以下のコード例は、サンプル属性値を示しています。

      <AdContentProvider 
      Name="video/x-msvideo"
      Provider="myclasses.MimeAvi"
      Properties=""
      >
      </AdContentProvider>
  6. 変更を wps-config.xml ファイルに保存します。
  7. WebLogic Server を再起動します。

CLASSPATH へのクラスの追加は、方法 2 の手順を使用しても行えます。

方法 2

CLASSPATH に手動でクラスを追加する代わりに、コンテンツ プロバイダをアクティブ化すると、Administration Console を使用して以下の手順を実行できます。

  1. Workshop for WebLogic で、[実行|Portal Administration Console を開く] を選択して、Administration Console を起動します。
  2. Administration Console で、[コンフィグレーションとモニタ|サービス管理] を選択します。
  3. リソース ツリーで [対話管理] を選択し、[参照] タブの [広告サービス] を選択します。
  4. [広告コンテンツ プロバイダ] セクションで [広告コンテンツ プロバイダの追加] をクリックします。
  5. 新しいコンテンツ プロバイダに [説明] と [名前] を入力します。[コンテンツ プロバイダ] フィールドに、この MIME タイプの広告をブラウザに表示するのに必要な HTML 要素を生成するクラスの名前を指定します。独自のクラスを記述する場合は、com.bea.p13n.ad.adContentProvider インタフェースを実装する必要がある。
  6. 警告 : コマース API は、WebLogic Portal 10.0 では推奨されていません。この API は、WebLogic Portal とは別の製品として用意された AquaLogic Commerce Services に置き換えられています。
  7. [更新] をクリックします。
  8. コンテンツ プロバイダを追加したら、追加のプロパティを加えることができます。

プレースホルダへのコンテンツの追加

コンテンツをプレースホルダで使用する場合、コンテンツ項目に特定のプロパティを追加できます。「コンテンツの設定」を参照してください。

 


プレースホルダの作成

プレースホルダを作成する際には、次の 2 つの手順を実行します。

  1. Workshop for WebLogic でプレースホルダ ファイルを作成する
  2. それに対応する <ph:placeholder> JSP タグを、関連するすべての JSP で使用する。Java クラスの詳細については、「JSP Tag Javadoc」を参照してください。

<ph:placeholder> JSP タグに「name」属性を指定して、Workshop for WebLogic で作成したプレースホルダを参照する必要があります。

この節では、次のトピックについて説明します。

プレースホルダ ファイルの作成

プレースホルダとは、JSP 内にあらかじめ定義された場所です。プレースホルダには、BEA 仮想コンテンツ リポジトリから取得した 1 つの Web コンテンツが表示されます。プレースホルダは、コンテンツの取得と表示にクエリを使用します。

デフォルトでは、プレースホルダでサポートしている MIME タイプは HTML、XML、プレーン テキスト、および画像です。プレースホルダでその他の MIME タイプを表示するには、「プレースホルダでのその他の MIME タイプの表示」を参照してください。

プレースホルダから返されるコンテンツは、ポートレットに表示されます。ユーザが、プレースホルダを含むポートレットまたはポータル デスクトップを参照すると、プレースホルダのルールおよびバックエンド ロジックがクエリを実行し、そのクエリに合致する 0 以上のコンテンツを取得し、返された項目の 1 つを表示します。取得されたコンテンツがなければ、何も表示されません。

プレースホルダのクエリは、2 つの異なった場所から実行されます。

プレースホルダには複数のクエリを含めることができるため、プレースホルダでは、ユーザがプレースホルダを含む JSP にアクセスするたびに異なったコンテンツを表示できます。以下の手順には、あるクエリの優先順位を設定して、プレースホルダ内にある他のクエリと比べてそのクエリが実行される機会を増やしたり減らしたりできる手順が含まれます。

プレースホルダはエンタープライズ アプリケーションを有効範囲としているため、プレースホルダはエンタープライズ アプリケーション内の任意の JSP に含めることができます。

注意 : この章で示す手順は、[パッケージ・エクスプローラー] ビューの data\src フォルダに関係します。data ディレクトリおよび src ディレクトリは、名前が変更されている可能性があります。

プレースホルダを作成するには、以下の手順を実行します。

  1. Workshop for WebLogic で [実行|サーバーで実行] を選択して、WebLogic Server を起動します。WebLogic Server をコンフィグレーションする手順については、『ポータル開発ガイド』を参照してください。
  2. ポータル パースペクティブで、[パッケージ・エクスプローラー] ビューの <data>\src\placeholders フォルダを右クリックし、[新規コンテンツ プレースホルダ] を選択します。
  3. [新しいプレースホルダ ファイル] ウィンドウで、[ファイル名] フィールドにプレースホルダの名前を入力します。ファイル拡張子の .pla は、そのまま使用します。
  4. [終了] をクリックします。プレースホルダ エディタが表示されます。
  5. [パレット] タブで [新しいクエリ] をプレースホルダ エディタにドラッグし、デフォルトのクエリを定義します (図 7-2 を参照)。
  6. 図 7-2 新しいクエリをプレースホルダ エディタにドラッグしてデフォルト クエリを定義


    新しいクエリをプレースホルダ エディタにドラッグしてデフォルト クエリを定義

    この方法でプレースホルダに追加するクエリはすべて、デフォルトのクエリです (キャンペーン以外)。キャンペーンではこのプレースホルダにクエリを追加することができます。ただし、プレースホルダ自体にキャンペーン クエリを定義することはできません。キャンペーン クエリはキャンペーンで定義されます。

    注意 : [パレット] タブが表示されていない場合には、[リストの表示] をクリックして、非表示になっているその他のタブを確認します (図 7-3)。
    図 7-3 [リストの表示] をクリックして非表示タブを表示
    新しいクエリをプレースホルダ エディタにドラッグしてデフォルト クエリを定義
  7. プロパティ エディタ ウィンドウで、以下の値を設定します。
    • [名前] - クエリの名前を入力します。このクエリ名は表示のためだけに使用されます。
    • [優先度] - 他のクエリに対するクエリの優先度を選択します。優先度が高いクエリの方が、実行される可能性が高くなります。
  8. クエリを定義するには、追加した [新しいクエリ] 項目内の [空のコンテンツ検索] リンクをクリックします。クエリは、WebLogic Portal の式構文を使用するか ([詳細] タブ)、グラフィカル モード ([クエリ] タブ) で定義できます。
    • 詳細モード - [コンテンツ検索] ウィンドウで [詳細] タブをクリックし、「条件式を使用するコンテンツ クエリの構築」の手順に従ってクエリを作成します。
    • グラフィカル モード – 次の手順に従ってコンテンツ項目を取得するためのコンテンツ プロパティ、比較演算子、および値を選択して、コンテンツ クエリを構築します。
    1. [コンテンツ検索] ウィンドウで、[クエリ] タブを選択します。
    2. [プロパティ セット] フィールドでコンテンツ タイプを選択し、[プロパティー] フィールドでコンテンツ プロパティを選択して、[追加] をクリックします (図 7-4 を参照)。この例では、コンテンツ タイプが ad で、プロパティが adTargetUrl です。adTargetUrl プロパティを使用すると、画像がクリッカブルになり、クリックスルーのターゲットが URL で指定されます。詳細については、『コンテンツ管理ガイド』を参照してください。
    3. 図 7-4 コンテンツ タイプおよびコンテンツ プロパティの選択


      コンテンツ タイプおよびコンテンツ プロパティの選択

      注意 : 選択するプロパティは、ユーザ プロファイル プロパティやセッション プロパティのようなプロパティ セット プロパティではなく、コンテンツ プロパティ (タイプ) です。
    4. 表示される [コンテンツ検索値] ウィンドウで、次のタブのいずれかを選択します。
    • [] タブ – 入力した値との比較に基づいてクエリを定義します。たとえば、investorRiskLevel プロパティが [] にマークされているコンテンツを取得するようにクエリを設定できます。図 7-5 の例では、BEA Web サイトの adTargetUrl を取得するようにクエリが設定されます。
    • [プロパティー] タブ – ユーザ プロファイル プロパティなど、別のタイプのプロパティから動的に与えられるプロパティ値に基づいてコンテンツ クエリを定義します。たとえば、静的なコンテンツ プロパティに基づいてクエリを作成するのではなく、クエリに挿入される現在のユーザの investorRiskLevel の値を読み込むクエリを作成できます。クエリはユーザごとに異なります。
    • 図 7-5 [比較演算子] フィールドの項目を選択して、値を入力


      [比較演算子] フィールドの項目を選択して、値を入力

    1. [追加] をクリックします。[値条件句] セクションにクエリ記述子を追加します。
    2. クエリに値条件句をさらに追加し、ウィンドウの下部にある [値条件句が複数の場合] セクションで、適切なオプションを設定できます。
  9. [コンテンツ検索値] ウィンドウで [OK] をクリックします。
  10. [コンテンツ検索] ウィンドウで必要に応じてその他のクエリを作成します。[コンテンツ検索] ウィンドウでクエリに値条件句をさらに追加し、ウィンドウの下部にある [記述子が複数の場合] セクションで、適切なオプションを設定できます。完了したら [OK] をクリックします。
  11. [コンテンツ検索] ダイアログの [OK] をクリックします。
  12. エディタの下の [コンテンツ プレビュー] タブを選択すると、クエリで取得されるコンテンツをプレビューできます。ユーザ プロファイル プロパティの値を使用するためのクエリを定義した場合は、取得されるコンテンツはユーザごとに異なりなります。そのため、どのコンテンツが取得されたかを確認するには、[プレビュー ユーザ] フィールドに「weblogic」などの既存ユーザのユーザ名を入力する必要があります。

    [コンテンツ プレビュー] ウィンドウには、取得するクエリのコンテンツが表示されます。ただし、プレースホルダには同時に 1 つのコンテンツしか表示されないため、表示される 1 つのコンテンツは実行されるクエリ (クエリに設定した優先度と、キャンペーン クエリの設定によって決定) と、コンテンツに設定された adWeight プロパティによって異なります。

    adWeight プロパティを単値の整数としてコンテンツ タイプに追加する必要があります。adWeight の値が大きいコンテンツほど、プレースホルダで表示するために選択される可能性が高くなります。
  13. プレースホルダ ファイルを保存します。
  14. プレースホルダを使用するには、関連する JSP に <ph:placeholder> タグを追加します。プレースホルダ ファイル名をプレースホルダ タグに追加し、JSP を実行して結果を確認する必要があります。
注意 : プレースホルダの代わりに <ad:adTarget> JSP タグを使用して、タグ内のコンテンツ クエリをハードコード化できます。詳細については、「プレースホルダに代わる <ad:adTarget> の使用」を参照してください。

実行するプレースホルダ クエリ タイプの選択

プレースホルダは、デフォルト クエリとキャンペーン クエリの 2 つのタイプのクエリを実行できます。

どちらのタイプのクエリも構造は同じですが、別の場所から実行されます。

図 7-6 は、プレースホルダがデフォルト クエリまたはキャンペーン クエリから取得した画像をページ上のどこに表示するかを示しています。これは、クエリによって BEA の仮想コンテンツ リポジトリから取得された画像です。プレースホルダはさまざまな係数を使用して、実行するクエリを決定し、次に表示する取得済みのコンテンツ項目を決定します。

図 7-6 デフォルト コンテンツまたはキャンペーン コンテンツを表示できるプレースホルダ

デフォルト コンテンツまたはキャンペーン コンテンツを表示できるプレースホルダ

コンテンツ クエリの構築

コンテンツ クエリを構築する場合には、Workshop for WebLogic で WebLogic Portal Expression 言語を使用できます。詳細なクエリ構築ウィンドウは、プレースホルダ、キャンペーン、およびコンテンツ セレクタのクエリを構築する際に、コンテンツに関連する JSP タグから利用できます。

複数のコンテンツ クエリがプレースホルダに登録されている場合、プレースホルダは定義されているクエリおよびロジックを使用して、実行するクエリおよび表示するコンテンツ項目を指定します。コンテンツ クエリがデータを返さず、他に登録されているクエリがある場合、プレースホルダはそのクエリを実行します。それぞれのクエリに優先度、つまり重みがあり、表示する具体的なコンテンツを指定します。

クエリには、<property> <comparator> <value> の 3 つの部分が含まれます。

条件式の使用

コンテンツでは、次の 2 つのタイプのプロパティが利用できます。クエリでは両方のプロパティを使用できます。

詳細および明示的なコンテンツ プロパティ一覧については、「条件式を使用するコンテンツ クエリの構築」を参照してください。

比較演算子の使用

比較演算子は、クエリのプロパティと入力した値を比較するロジックを持っています。コンテンツ項目がクエリの条件と一致する場合には、そのコンテンツ項目が返されます。詳細については、「比較演算子の使用」を参照してください。

値の使用

値は、クエリが返す必要のあるコンテンツを表します。クエリに値を指定することにより、コンテンツ項目に格納されている値に基づいて取得または無視するコンテンツをクエリに指示します。詳細については、「値の入力」を参照してください。

複合クエリのガイドライン

クエリ句を and (&&) ロジックおよび or (||) ロジックによって結合し、数式と同様に括弧を使用して評価の順番を制御することにより、複数の独立したクエリ句を組み合わせることができます。これにより、複雑なクエリを作成することができます。詳細およびサンプル クエリについては、『コンテンツ管理ガイド』を参照してください。

表示するクエリおよびコンテンツの特定

プレースホルダが表示するコンテンツを選択するときは 2 つの処理が行われます。この節では、次のタスクについて説明します。

  1. プレースホルダが実行するクエリを選択する方法
  2. クエリの実行後、プレースホルダがそのクエリ結果から表示するコンテンツ項目を選択する方法

実行するクエリの選択

プレースホルダにデフォルト クエリを追加するか、Workshop for WebLogic でキャンペーン クエリを作成した場合、各クエリに優先度 (highesthighnormallow、または lowest) を割り当てることができます。優先度が高いクエリほど、実行される可能性が他のクエリより高くなります。

クエリがドキュメントを検出しなかった場合、プレースホルダは別のクエリを選択して実行します。

キャンペーン クエリがある場合はデフォルト クエリを実行しないように定義することもできます。詳細については、「プレースホルダの変更」を参照してください。

表示するコンテンツ項目の選択

クエリの対象範囲、およびコンテンツ管理システム内のドキュメントの数によっては、クエリが複数のコンテンツ項目を返す場合があります。デフォルトでは、プレースホルダは表示するコンテンツ項目をランダムに選択します。この選択を制御するために、adWeight というプロパティをコンテンツ項目に追加できます (「コンテンツの優先度の決定」を参照)。

コンテンツ項目に割り当てる adWeight の数値が大きいほど、そのコンテンツ項目がクエリで取得されたときにプレースホルダで表示される可能性が高くなります。

JSP へのプレースホルダの追加

Workshop for WebLogicでプレースホルダ ファイルを作成した後で、以下のいずれかの方法を使用して、Workshop for WebLogic でプレースホルダを JSP に追加することができます。

 


プレースホルダの変更

プレースホルダは、次のいずれかの方法を使って変更できます。

プレースホルダを変更してパフォーマンスを向上させるには、「パフォーマンスを最適化するためのプレースホルダの管理」を参照してください。

 


プレースホルダに代わる <ad:adTarget> の使用

JSP にコンテンツ項目を表示するには <ad:adTarget> JSP タグを使用することもできます。このタグは、プレースホルダのように定義ファイルには依存しません。タグの query 属性を使用してクエリを追加するだけです。クエリは 1 つまたは複数のコンテンツ項目 (プレースホルダが表示できるコンテンツ項目と同じタイプ) を取得し、タグは <ph:placeholder> タグと同じ方法で表示するコンテンツ項目を選択します。キャンペーンはクエリを <ad:adTarget> タグに入れないため、タグはパーソナライズされたコンテンツを表示できません。また、<pz:contentQuery> および <cm:search> を使用して、ランタイム クエリを実行して表示可能なコンテンツを返すこともできます。

ヒント : 1 つのコンテンツ項目を選んで、それ以降のリクエストで一致する項目を循環表示すると、バナースタイルのコンテンツを循環表示することができます。<ad:adTarget> JSP タグを使用できます。このタグは、表示するコンテンツを選択するために AdConflictResolver を使用します。各ノードの adWeight プロパティ (数値に変換されます) を、各ノードの相対的な重みとして取得し、次に、乱数を使用して使用するノードを選択します。重みが大きいほど、そのノードが表示される確率が高くなります。項目に adWeight プロパティがない場合、値は 1 であると見なされます。

<ad:adTarget> JSP タグのクラスの詳細については、「JSP Tag Javadoc」を参照してください。

次のコード例は、循環バナースタイル コンテンツの設定手順を示しています。

<%@ taglib uri="http://www.bea.com/servers/portal/tags/ad" prefix="ad"%>
<ad:adTarget query=" color == userProperty('GeneralInfo', 'FavoriteColor') "/>

ページの先頭       前  次