Skip navigation.

対話管理ガイド

  前 次 前と次、目次/インデックス/pdf を分けるコロン 目次  

イベントおよび行動の追跡

ユーザが Web インタフェースと対話する (ログイン、グラフィックのクリックや表示、ボタンのクリック、ポータル内の別のページへの移動、などを行う) と、イベントが生成されます。

WebLogic Portal には、さまざまな方法でイベントを活用できるイベント フレームワークがあります。イベントが発生したときに、キャンペーンのトリガ、イベント データのデータベースへの保存、およびその他のプログラム機能を実行できます。

注意 : 対話管理イベントは、ポートレット イベントとは異なります。ポートレット イベントは、ポートレット間通信のためのフレームワークを提供します。

イベント フレームワークにより提供できる機能の例を次に示します。

各イベントは Event オブジェクトのインスタンスであり、ユニークな名前 (またはタイプ) によって識別されます。各イベント タイプは、その機能に応じて、特定の属性を取得および設定できます。上に挙げた例の場合、イベントが特定の情報を取り込む必要があります。たとえば、ユーザがポータル ページにアクセスした回数を取り込むには、ClickPage イベントが、クリックされたページの名前を取得して設定します。コンテンツのどの部分が表示されたか識別するために、DisplayContent イベントが、表示されたコンテンツ項目の ID とタイプを取得して設定する場合があります。

イベントが各自の属性値を設定した後、それらの値を任意の方法で永続化できます。WebLogic Portal には、イベントの属性を XML としてデータベースに永続化するメカニズムがデフォルトで用意されています。イベント データがデータベースに保存されると、それらのデータを検索して分析したり、レポートを発行したり、アプリケーションにイベント データを供給したりできます。たとえば、データベースに対して SQL クエリを実行し、各ポータル ページの表示回数を返すポートレットを作成できます。独自の永続化機能を開発することもできます。たとえば、イベント データをファイルに保存したり、データを XML で構造化せずにデータベース テーブルに書き込んだりできます。

イベントが属性も永続化も必要としない場合があります。それらのイベントの唯一の目的は、何らかの別の機能をトリガすることです。たとえば、ダウンロード リンクについて、誰がクリックしたかに関係なく、何回クリックされたかを調べる場合は、ClickDownloadLink イベント (および付随するイベント リスナ) によってデータベース フィールドの値を 1 ずつインクリメントすることができます。

キャンペーン定義内でイベントを使用して、キャンペーンをさらに有効にすることもできます。たとえば、ユーザのポータルへの登録によって UserRegistration イベントが生成したときに、定義済みの電子メールを自動的にユーザに送信したり、特定の属性値を持つイベントが生成されたときに、パーソナライズされたコンテンツを表示したりできます。

この章では、イベント フレームワークのコンポーネントについて説明します。フレームワークの各部分の目的と使い方、WebLogic Portal の定義済みイベント、およびアプリケーション内でのイベントの使用に関するガイダンスと手順の説明を参照して、イベントの使用方法を考慮してください。

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

 


イベント フレームワークの概要

イベント フレームワーク (図 6-1) を使用して、イベントをさまざまな方法で柔軟に処理できます。図に続く表は、このフレームワークを部分ごとに説明しています。

図 6-1 イベント フレームワーク


 

1

イベントは、Event または TrackingEvent クラスのいずれかを拡張するオブジェクトです。イベントは、Event Service に対してユニークな名前 (またはタイプ) を使用してそれ自身を識別させ、使用する属性を宣言し、イベント タイプと属性を基本クラス コンストラクタに渡します。

イベントには、取り込みの対象となる任意のタイプの属性を指定できます。たとえば、表示するために選択されたページやポートレットの名前を取り込んだり、ページ フロー内の JSP の名前を取り込んで最もヒット回数の多い JSP はどれかを評価したり、特定の JSP が表示されたときにキャンペーンをトリガしたりできます。さらに、仮想コンテンツ リポジトリから取得されたコンテンツに関する情報を取り込んだり、ユーザがショッピング カートに商品を追加したときに商品情報を取り込んだりできます。

行動追跡イベントでは、Event Service がイベントの属性値を XML としてデータベースに保存するために使用する XML ネームスペースとスキーマ ファイル名も宣言します。作成するカスタム行動追跡イベントごとに、XML スキーマも作成します。

2

アプリケーション内でのイベントの生成場所 (JSP、Java クラス、またはページ フロー) に関係なく、イベントのインスタンスを作成します。イベントに必要な属性値をコードで設定し、イベントが予期している順序で属性値を引数としてイベントに渡します。引数の順序はイベント クラスで定義されます。Event Service に、イベントをディスパッチするように通知します。イベントがディスパッチされると、関連するすべてのイベント リスナにイベントの発生が通知され、イベント リスナが各自のアクションを実行します。

3

行動追跡リスナは、TrackingEvent クラスを拡張し、Behavior Tracking Service によって登録されたすべてのイベントをリスンします。

行動追跡リスナの機能は、イベントと XML スキーマによって作成されたイベント属性の XML ドキュメントをバッファに移動することです。その後、Behavior Tracking Service が、指定された間隔で XML ドキュメントをデータベースの BT_EVENT テーブルに移動します。

レポート作成や分析を目的として、データベースから行動追跡データを取得し、ページやポートレットが受信したトラフィック量を調べたりできます。

デフォルトでは、行動追跡リスナは Event Service に登録されません。行動追跡を有効にするには、「行動追跡の有効化とコンフィグレーション」の説明に従って、行動追跡リスナを登録する必要があります。

4

キャンペーン イベント リスナは、wps.jar ファイルの listeners.properties ファイルに指定されている除外イベント以外のすべてのイベントをリスンして処理します。イベントが発生すると、キャンペーン イベント リスナは、Campaign Service を呼び出します。Campaign Service は、現在の HTTP リクエストのスナップショットを作成し、要求内のデータを作成済みのキャンペーンに突き合わせて評価し、キャンペーン アクションを実行する必要があるかどうかを確認します。

キャンペーンは、イベントに完全に依存しています。イベントが発生しなければ Campaign Service は呼び出されず、キャンペーン アクションは実行されません。

イベントを使用して Campaign Service を呼び出すという基本的な機能に加え、キャンペーン定義内でイベントを使用して、特定のイベントが発生した場合、またはイベントが特定のプロパティを持っている場合にキャンペーン アクションを実行できます。たとえば、次のようにキャンペーンを定義できます。

  • MyEvent が発生した場合は、特定のコンテンツの一部を表示する。

  • MyEvent の "published" プロパティの値が "2004" より大きい場合は、特定のコンテンツの一部を表示する。

キャンペーン定義内でイベントとイベント プロパティを使用するには、キャンペーン内で使用するイベントごとにイベント プロパティ セットを作成する必要があります (WebLogic Workshop で、アプリケーションの /data/events ディレクトリに格納されます)。イベント プロパティ セットには、イベントに設定する属性の正確な名前を指定します。キャンペーン デザイナ インタフェースは、このイベント プロパティ セットを、キャンペーン定義を作成するために使用するドロップダウン フィールドで使用します。

キャンペーンの詳細については、このガイドの「キャンペーン」の章を参照してください。

5

カスタム イベント リスナは、イベントが発生したときにカスタム機能を実行する場合のみ作成します。カスタム リスナは、Event Service にどのイベントをリスンするか (カスタム機能を実行するためにトリガするイベントはどれか) を通知します。たとえば、カスタム イベント リスナを使用して、イベント属性を保存するための独自の永続化メカニズムを実装できます。また、ユーザが商品イメージをクリックしたときにユーザ プロファイルの変更や関連商品の表示を行うことで、イベントにリアルタイムで応答できます。

実装する基本クラス EventListener には、getTypes()handleEvent() という 2 つのメソッドが用意されており、前者はリスンするイベント タイプをリスナが公開できるようにし、後者はカスタム機能の実行を可能にします。

リスナは、イベントの種類 (カスタム イベントまたは WebLogic Portal の定義済みイベント) に関係なく、複数のイベントをリスンできます。

カスタム イベントの処理を行うときは、イベントの getAttribute() メソッドを使用してイベント プロパティにアクセスします。


 

 


イベントの使用方法の計画

WebLogic Portal のイベント フレームワークには、前の節で説明したように、イベントを生成して処理するための複数のオプションが用意されています。この節では、必要な機能を実装するためにイベント フレームワークのどの部分を使用するかを判断するためのガイドラインを示します。

WebLogic Portal の定義済みイベントを使用する場合

WebLogic Portal には、「WebLogic Portal で提供される定義済みイベント」で説明しているように、アプリケーションで使用できる定義済みの行動追跡イベントが多数用意されています。各イベントは、特定の属性を収集し、収集した属性を XML として構造化します。その後、行動追跡リスナが、BT_EVENT データベース テーブルに挿入するためにその XML をバッファに配置します。

ほとんどの定義済みイベントには、WebLogic Workshop に定義済みのイベント プロパティ セットがあり、それらは、ポータル アプリケーションの data/events ディレクトリに格納されています。これらのプロパティ セットをキャンペーン定義内のイベントで使用して、イベントが発生した、またはイベントに特定の属性値があったときにキャンペーン アクションをトリガできます。

WebLogic Portal の定義済みイベントは、次の場合に使用します。

カスタム イベントを作成する場合

必要な属性を取り込む WebLogic Portal の定義済みイベントがない場合は、カスタム イベントを作成します。行動追跡イベントと標準イベントという 2 種類のカスタム イベントを作成できます。

行動追跡イベント

カスタム行動追跡イベントを作成する唯一の理由は、目的のイベント属性を取り込む WebLogic Portal の定義済みイベントがない場合に、WebLogic Portal の行動追跡フレームワークを使用して、イベント データを XML として BT_EVENT テーブルに永続化するためです。これらのイベントをキャンペーンで使用し、イベントに対して特殊な処理を行うカスタム リスナを作成できますが、行動追跡フレームワークを使用してイベント データを XML として保存するのでない限り、カスタム行動追跡イベントを作成する理由はありません。

Behavior Tracking Service を使用しない場合は、カスタム標準イベントを作成します。

標準イベント

カスタム標準イベントは、目的のイベント属性を取り込む WebLogic Portal の定義済みイベントがなく、Behavior Tracking Service を使用してイベント データを XML として BT_EVENT テーブルに永続化しない場合に作成します。

カスタム標準イベントは、次の場合に作成します。

カスタム イベント リスナを作成する場合

WebLogic Portal には、キャンペーン リスナと行動追跡リスナという 2 つのリスナが用意されています。

キャンペーン リスナは、イベントが発生すると、Campaign Service に通知します (wps.jar ファイルの listener.properties ファイル内の無視されるイベントを除く)。Campaign Service は、現在の要求を読み込み、要求されたデータがいずれかのキャンペーンの条件と一致している場合はキャンペーン アクションを実行します。キャンペーン定義に、イベント プロパティ セットによって指定したイベント条件が含まれている場合、Campaign Service は、それらの条件も同様に評価して、キャンペーン アクションを実行する必要があるかどうかを決定します。

行動追跡リスナは、Behavior Tracking Service によって登録された行動追跡イベントだけをリスンします。行動追跡リスナは、リスンすべきイベントを受信すると、そのイベントの XML ドキュメントをバッファに移動します。XML ドキュメントは、その後、指定された間隔で BT_EVENT テーブルに永続化されます。

カスタム イベント リスナは、キャンペーン リスナまたは行動追跡リスナでは提供されない機能を実行する場合に作成します。たとえば、イベント データの独自の永続化やユーザ プロファイルの変更、ページ フローの別の部分へのユーザのリダイレクト、イベントに対するその他のリアルタイム応答を実行する場合は、目的の機能を提供するカスタム イベント リスナを作成します。

カスタム イベント、リスナ、およびプロパティ セットのデプロイ

カスタム イベント、リスナ、およびイベント プロパティ セットの作成には、アプリケーションへのファイルの追加とアプリケーションのクラスパスの更新が関係します。デプロイ済みのアプリケーションにイベントとプロパティ セットを追加する場合は、アプリケーションを再デプロイメントしてイベントとクラスパスを更新し、Datasync Web Application を実行してデータベース内のイベント プロパティを更新する必要があります。デプロイメントと Datasync Web アプリケーションの詳細については、『プロダクション業務ユーザーズ ガイド』を参照してください。

 


WebLogic Portal で提供される定義済みイベント

この節では、WebLogic Portal で提供される定義済みの行動追跡イベントの使用方法について詳しく説明します。イベントが生成またはディスパッチされると、イベントは、異なる属性を取り込み、行動追跡リスナと Behavior Tracking Service を使用して、属性を XML として BT_EVENT テーブルに永続化します。イベント属性を永続化するには、行動追跡を有効にする必要があります (「行動追跡の有効化とコンフィグレーション」を参照してください)。イベントを使用してキャンペーンをトリガすることもできます。

従来の WebLogic Portal コマース アプリケーションと互換性がある定義済みイベントは、AddToCartEvent、PurchaseCartEvent、および RemoveFromCartEvent だけです。これらのイベントは、コマース アプリケーションのフローの一部であったパイプライン コンポーネントによってディスパッチされていました。WebLogic Portal の旧バージョンでは、アプリケーション フローとカタログ管理は、別々のフレームワークを使用して、イベント プロパティ値の取得とイベントのディスパッチを行っていました。これらのイベントを新しいコマース アプリケーションでディスパッチする場合は、イベント プロパティ値の設定と取得を行うための独自のコードとコンテンツ管理プロパティを作成し、アプリケーション コード (ページ フローや JSP など) からこれらのイベントをディスパッチする必要があります。

定義済みイベントがディスパッチされたときにカスタムイベント処理を実行する場合は、「カスタム イベント リスナの作成 」の説明に従って、カスタム イベント リスナを作成します。

SessionLoginEvent

ユーザがポータルにログインした (認証された) ときにイベントをディスパッチするには、SessionLoginEvent を使用します。

行動追跡が有効になっている場合は、イベントが生成され、図 6-3 に示すように、Behavior Tracking Service によって永続化イベントとして登録されたときに、イベント プロパティ値がデータベースの BT_EVENT テーブルに書き込まれます。

プロパティ

session-id

user-id

プロパティの設定方法については、表 6-1 を参照。

ディスパッチ方法

以下のいずれかを使用する。

ページ フロー : セッション ログイン イベント コントロール

API : コード内にイベントのインスタンスを作成し、com.bea.p13n.tracking.TrackingEventHelper.dispatchSessionLoginEvent() でディスパッチする。

または

PortalServletFilter でユーザのログインをチェックする (com.bea.p13n.servlets.PortalServletFilter はポータル Web プロジェクト ファイル web.xml の登録済みフィルタであり、fireSessionLoginEvent パラメータがデフォルトで true に設定されている)。

Javadoc

com.bea.p13n.tracking.events.SessionLoginEvent

com.bea.p13n.servlets.PortalServletFilter


 

SessionBeginEvent と SessionEndEvent

SessionBeginEvent と SessionEndEvent は、自動的に生成されます。SessionBeginEvent は、WebLogic Portal で実行中の Web サイトにユーザがアクセスしたときに生成されます。SessionEndEvent は、ユーザがブラウザを閉じるかセッションがタイムアウトしたときのように、セッションが終了したときに生成されます。

行動追跡が有効になっている場合は、イベントが生成され、図 6-3 に示すように、Behavior Tracking Service によって永続化イベントとして登録されたときに、イベント プロパティ値がデータベースの BT_EVENT テーブルに書き込まれます。

SessionBeginEvent と SessionEndEvent には、ポータル アプリケーションに対応するプロパティ セットがありません。デフォルトでは、キャンペーン リスナはこれらのイベントをリスンしないので、これらのイベントを使用してキャンペーンをトリガすることはできません。詳細については、このガイドの「キャンペーン」の章の「キャンペーンをトリガする方法」を参照してください。


 

UserRegistrationEvent

ユーザがポータルに登録した (ユーザが登録ポートレットなどを使用してプログラム的にユーザ ストアに追加された) ときにイベントをディスパッチするには、UserRegistrationEvent を使用します。

行動追跡が有効になっている場合は、イベントが生成され、図 6-3 に示すように、Behavior Tracking Service によって永続化イベントとして登録されたときに、イベント プロパティ値 (特にユーザ ID の) がデータベースの BT_EVENT テーブルに書き込まれます。

プロパティ

session-id

user-id

プロパティの設定方法については、表 6-1 を参照。

ディスパッチ方法

ページ フロー : ユーザ登録イベント コントロール

API : コード内にイベントのインスタンスを作成し、 com.bea.p13n.tracking.TrackingEventHelper.dispatchUserRegistrationEvent() でディスパッチする。

Javadoc

com.bea.p13n.tracking.events.UserRegistrationEvent


 

AddToCartEvent

ユーザがショッピング カートに商品を追加したときにイベントをディスパッチするには、AddToCartEvent を使用します。このイベントを使用すると、通貨の種類、追加された商品の数量、単価、sku などの情報を取り込むことができます。このイベントを使用するには、これらのプロパティを何らかの形でショッピング カートとコンテンツ タイプ内に表現する必要があります。

行動追跡が有効になっている場合は、イベントが生成され、図 6-3 に示すように、Behavior Tracking Service によって永続化イベントとして登録されたときに、イベント プロパティ値がデータベースの BT_EVENT テーブルに書き込まれます。

プロパティ

application-name

currency

quantity

session-id

sku

unit-list-price

user-id

プロパティの設定方法については、表 6-1 を参照。

ディスパッチ方法

イベントのディスパッチ」を参照。

Javadoc

com.bea.commerce.ebusiness.tracking.events.AddToCartEvent


 

RemoveFromCartEvent

ユーザがショッピング カートから商品を削除したときにイベントを生成するには、RemoveFromCartEvent を使用します。このイベントを使用すると、通貨の種類、追加された商品の数量、単価、sku などの情報を取り込むことができます。このイベントを使用するには、これらのプロパティを何らかの形でショッピング カートとコンテンツ タイプ内に表現する必要があります。

行動追跡が有効になっている場合は、イベントが生成され、図 6-3 に示すように、Behavior Tracking Service によって永続化イベントとして登録されたときに、イベント プロパティ値がデータベースの BT_EVENT テーブルに書き込まれます。

プロパティ

application-name

currency

quantity

session-id

sku

unit-price

user-id

プロパティの設定方法については、表 6-1 を参照。

ディスパッチ方法

イベントのディスパッチ」を参照。

Javadoc

com.bea.commerce.ebusiness.tracking.events.RemoveFromCartEvent


 

PurchaseCartEvent

ユーザが商品を購入したときにイベントをディスパッチするには、PurchaseCartEvent を使用します。このイベントを使用すると、通貨の種類、注文番号、購入金額の合計などの情報を取り込むことができます。このイベントを使用するには、これらのプロパティを何らかの形でショッピング カート内に表現する必要があります。

行動追跡が有効になっている場合は、イベントが生成され、図 6-3 に示すように、Behavior Tracking Service によって永続化イベントとして登録されたときに、イベント プロパティ値がデータベースの BT_EVENT テーブルに書き込まれます。

プロパティ

application-name

currency

order-id

session-id

total-price

user-id

プロパティの設定方法については、表 6-1 を参照。

ディスパッチ方法

イベントのディスパッチ」を参照。

Javadoc

com.bea.commerce.ebusiness.tracking.events.PurchaseCartEvent


 

ルール イベント

WebLogic Portal には、Rules Executor コントロールを使用してページ フロー内でルールが適用されたときに常に行動追跡イベントを生成できるルール イベント コントロールが用意されています。ルール イベント コントロールは、必要なすべてのプロパティを取得します。プロパティには、ルール セットの名前と適用されたルールが含まれます。

行動追跡が有効になっている場合は、イベントが生成され、図 6-3 に示すように、Behavior Tracking Service によって永続化イベントとして登録されたときに、イベント プロパティ値がデータベースの BT_EVENT テーブルに書き込まれます。

ルール イベントには、ポータル アプリケーション内に対応するプロパティ セットがありません。ルールのほうが柔軟性が高く強力なので、ルールは、しばしばキャンペーンの代わりに使用されます。したがって、ルールが適用されたときにキャンペーンをトリガするためにルール イベント プロパティ セットを作成するのは、現実的なシナリオではありません。それでもルールが適用されたときにキャンペーンをトリガするルール プロパティ セットを作成する場合は、RuleEvent.evt という名前のイベント プロパティ セットを作成し、ruleset-namerule-name という制限のない単一の String プロパティを追加します。プロパティ セットの作成手順については、WebLogic Workshop ヘルプ システムの 「カスタム イベントを登録する」を参照してください。

ルールの使用手順については、「ルール イベント コントロール」と「ポータル アプリケーションでのルールの使用」を参照してください。

DisplayCampaignEvent

行動追跡が有効になっている場合、DisplayCampaignEvent は、キャンペーンによってコンテンツ項目がプレースホルダに配置されたときに自動的に生成されます。イベント プロパティ値は、イベントが生成され、図 6-3 に示すように Behavior Tracking Service によって永続化イベントとして登録されたときに、データベースの BT_EVENT テーブルに書き込まれます。

プロパティ

application-name

campaign-id

document-id

document-type

placeholder-id

scenario-id

session-id

user-id

ディスパッチ方法

このイベントは、キャンペーンによってコンテンツ項目がプレースホルダに配置されたときに自動的に生成される。

Javadoc

com.bea.campaign.tracking.events.DisplayCampaignEvent


 

コンテンツ表示イベント

WebLogic Portal には、JSP でコンテンツの一部を表示したときに行動追跡イベントを生成できるコンテンツ表示イベントと <BehaviorTracking:displayContentEvent/> JSP タグが用意されています。

document-id プロパティと document-type プロパティの取得方法については、表 6-1 を参照してください。

行動追跡が有効になっている場合は、イベントが生成され、図 6-3 に示すように、Behavior Tracking Service によって永続化イベントとして登録されたときに、イベント プロパティ値がデータベースの BT_EVENT テーブルに書き込まれます。

コンテンツ表示イベントには、ポータル アプリケーション内に対応するプロパティ セットがありません。デフォルトでは、Campaign Service はこれらのイベントをリスンしないので、これらのイベントを使用してキャンペーンをトリガすることはできません。詳細については、このガイドの「キャンペーン」の章の「キャンペーンをトリガする方法」を参照してください。

商品表示イベント

WebLogic Portal には、カタログから商品を表示したときに行動追跡イベントを生成できる <productTracking:displayProductEvent/> JSP タグが用意されています。

application-name、category-id、document-id、document-type、および sku の各プロパティの取得方法については、表 6-1 を参照してください。

行動追跡が有効になっている場合は、イベントが生成され、図 6-3 に示すように、Behavior Tracking Service によって永続化イベントとして登録されたときに、イベント プロパティ値がデータベースの BT_EVENT テーブルに書き込まれます。

商品表示イベントには、ポータル アプリケーション内に対応するプロパティ セットがありません。デフォルトでは、Campaign Service はこれらのイベントをリスンしないので、これらのイベントを使用してキャンペーンをトリガすることはできません。詳細については、このガイドの「キャンペーン」の章の「キャンペーンをトリガする方法」を参照してください。

ClickCampaignEvent

キャンペーンによって表示されたコンテンツ項目をユーザがクリックしたときにイベントを生成するには、ClickCampaignEvent を ClickThroughEventFilter と組み合わせて使用します。

コンテンツのクリックを有効にするには、次の操作を行う必要があります。

行動追跡が有効になっている場合は、イベントが生成され、図 6-3 に示すように、Behavior Tracking Service によって永続化イベントとして登録されたときに、イベント プロパティ値がデータベースの BT_EVENT テーブルに書き込まれます。

プロパティ

application-name

campaign-id

document-id

document-type

placeholder-id

scenario-id

session-id

user-id

プロパティの設定方法については、表 6-1 を参照。

ディスパッチ方法

コンテンツのクリックに対応したイベントの生成」の手順に従って ClickThroughEventFilter を使用し、このガイドの「コンテンツの設定」の説明に従って仮想コンテンツ リポジトリに適切なコンテンツ プロパティをコンフィグレーションする。

Javadoc

com.bea.campaign.tracking.events.ClickCampaignEvent


 

ClickProductEvent

ユーザが「商品」コンテンツ項目をクリックしたときにイベントを生成するには、ClickProductEvent を ClickThroughEventFilter と組み合わせて使用します。商品コンテンツ項目は、通常は、カタログまたはショッピング カート内の商品です。ClickProductEvent を使用して、商品カテゴリや sku などの情報を取り込むことができます。このイベントを使用するには、これらのプロパティを何らかの形でコンテンツ タイプ内に表現する必要があります。

コンテンツのクリックを有効にするには、「コンテンツのクリックに対応したイベントの生成」の説明に従って、ポータル Web プロジェクトの web.xml ファイルと weblogic.xml ファイルに適切なエントリを入力します。

行動追跡が有効になっている場合は、イベントが生成されるとイベント プロパティ値がデータベースの BT_EVENT テーブルに書き込まれ、イベントは Behavior Tracking Service に永続化イベントとして登録されます。図 6-3 を参照してください。

プロパティ

application-name

category-id

document-id

document-type

session-id

sku

user-id

プロパティの設定方法については、表 6-1 を参照。

ディスパッチ方法

コンテンツのクリックに対応したイベントの生成」の手順に従って ClickThroughEventFilter を使用する。<productTracking:clickProductEvent> JSP タグを使用して、ClickThroughEventFilter にパラメータとして渡されるイベント属性を設定し、JSP に適切な <a href> を設定する。サンプル コードについては、「ClickThroughEventFilter の使用」を参照。

Javadoc

com.bea.commerce.ebusiness.tracking.events.ClickProductEvent


 

ClickContentEvent

ユーザがポータルでキャンペーンの結果としてではなく仮想コンテンツ リポジトリから取得されたコンテンツ項目をクリックしたときにイベントを生成するには、ClickContentEvent を ClickThroughEventFilter と組み合わせて使用します。

コンテンツのクリックに対応したイベントの生成を有効にするには、「コンテンツのクリックに対応したイベントの生成」の説明に従って、ポータル Web プロジェクトの web.xml ファイルと weblogic.xml ファイルに適切なエントリを入力します。

行動追跡が有効になっている場合は、イベントが生成されるとイベント プロパティ値がデータベースの BT_EVENT テーブルに書き込まれ、イベントは Behavior Tracking Service に永続化イベントとして登録されます。図 6-3 を参照してください。

プロパティ

document-id

document-type

session-id

user-id

プロパティの設定方法については、表 6-1 を参照。

ディスパッチ方法

コンテンツのクリックに対応したイベントの生成」の手順に従って ClickThroughEventFilter を使用する。<BehaviorTracking:clickContentEvent> JSP タグを使用するか、またはページ フロー内でコンテンツ クリック イベント コントロールを使用して、ClickThroughEventFilter にパラメータとして渡されるイベント属性を設定する。JSP に適切な <a href> を設定する。サンプル コードについては、「ClickThroughEventFilter の使用」を参照。

Javadoc

com.bea.p13n.tracking.events.ClickContentEvent


 

コンテンツのクリックに対応したイベントの生成

WebLogic Portal には、ユーザがポータルのコンテンツ項目をクリックしたときに生成することが可能な定義済みイベントが用意されています。たとえば、コンテンツ クリック イベントは、<BehaviorTracking:clickContentEvent> と <productTracking:clickProductEvent> という JSP タグによって有効になります。ClickCampaignEvent も、コンテンツ クリック イベントを生成します。コンテンツがクリックされたときに Event Service にイベントがディスパッチされるようにするには、以降の節の手順に従います。

ClickThroughEventFilter の使用

URL で /ShowBinary を使用するときは、常に ClickThroughEventFilter を使用します。ShowBinary (ShowPropertyServlet にマップされる) は、グラフィックなどのバイナリ Web コンテンツを表示します。/ShowBinary は、JSP のコンテンツ URL で使用します。ClickThroughEventFilter を /ShowBinary の URL パターンにマップした後、JSP で /ShowBinary をクリック イベント JSP タグと組み合わせ、URL の一部として使用します。これで、ユーザがコンテンツをクリックしたときに、ClickThroughEventFilter によってコンテンツ クリック イベントが生成されます。

注意 : バイナリ コンテンツを表示する場合、最も妥当な選択は、/ShowBinary を URL パターンとして使用することです。ただし、/ShowBinary を必ず使用しなければならないというわけではありません。

この機能を有効にするには、次のフィルタとフィルタ マッピングをポータル Web プロジェクトの web.xml ファイルに追加します。

<filter>
<filter-name>ClickThroughEventFilter</filter-name>
<filter-class>
com.bea.p13n.tracking.clickthrough.ClickThroughEventFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>ClickThroughEventFilter</filter-name>
<url-pattern>/ShowBinary/*</url-pattern>
</filter-mapping>

JSP の例

web.xml ファイルにフィルタ マッピングを追加していることを前提として、次の JSP コードは、ここには示されていないイテレータから取得した仮想コンテンツ リポジトリのコンテンツ項目を表示し、コンテンツ クリック イベントを生成するためのメカニズムを提供します。

<!-- JSP タグでコンテンツ項目の documentId を取得する。
documentId はイベント生成に必要なパラメータを
ClickThroughEventFilter に提供する。タグによって取得したデータを id 属性に
格納する。この JSP タグだけでは、イベントは生成されない。-->
<BehaviorTracking:clickContentEvent documentId="<%= node.getName() %>" id="eventInfo" />
<!-- URL 変数で /ShowBinary を使用して、クリッカブルなリンクを提供する。
そのリンクは ClickThroughEventFilter にマップされている。ユーザがリンクをクリックしたとき、
eventInfo 変数によって、必要なイベント パラメータが
ClickThroughEventFilter に提供される。-->
<% String url = request.getContextPath() + "/ShowBinary"+node.getPath() + "?"+ eventInfo;%>
<!-- これで、ユーザがリンクをクリックすると、ClickThroughEventFilter によって
ClickContentEvent が生成される。ShowBinary サーブレットにより、仮想コンテンツ リポジトリの
バイナリ形式のコンテンツ (グラフィックなど) を
表示する。-->
<a href="<%= url %>"><img src="<%=request.getContextPath() + "/ShowBinary" + node.getPath()%>" ></a>

web.xml および weblogic.xml に Event Service が登録されていることの確認

前の節で説明した ClickThroughEventFilter は Event Service を参照するので、ポータル Web プロジェクトの web.xml ファイルと weblogic.xml ファイルに Event Service が挿入されていることを確認する必要があります。

新しいポータル Web プロジェクトを作成すると、web.xmlweblogic.xml に次のエントリがデフォルトで入力されます。ただし、これらのエントリがファイルに含まれているか、必ず確認してください。

web.xml

<ejb-ref>
<description>Event Service</description>
<ejb-ref-name>ejb/EventService</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home>com.bea.p13n.events.EventServiceHome</home>
<remote>com.bea.p13n.events.EventService</remote>
</ejb-ref>

weblogic.xml

<ejb-reference-description>
<ejb-ref-name>ejb/EventService</ejb-ref-name>
<jndi-name>${APP_NAME}.BEA_personalization.EventService</jndi-name>
</ejb-reference-description>

注意 : ${APPNAME} は変数です。ハードコード化されたアプリケーション名に変更しないでください。

キャンペーンのクリックスルー

定義済みのClickCampaignEvent をトリガするキャンペーンのクリックスルーを有効にするには、このガイドの「コンテンツの設定」の説明に従って、コンテンツ項目に特定のプロパティをコンフィグレーションする必要があります。

イベントの属性値の指定

WebLogic Portal の定義済みイベントでは、属性値の多くは自動的に設定されます。ただし、コード内に手動で設定する必要がある属性があります。表 6-1 で、定義済みイベントに必要な属性について説明し、コード内に属性を設定するために使用できるメソッドを示します。これらのメソッドを使用して、カスタム イベントに属性を設定することもできます。

一部の属性は、生成された他のイベントから取得できます。たとえば、キャンペーンによってコンテンツの一部が表示されたときは、常に DisplayCampaignEvent が生成されます。DisplayCampaignEvent は、placeholder-id とその他の属性を設定します。カスタム イベントのために placeholder-id を設定する場合は、そのイベントに対して getAttribute() メソッドを使用することで、DisplayCampaignEvent から属性を取得できます。例 : DisplayCampaignEvent.getAttribute( "aPlaceholderId" );

表 6-1 定義済みイベントの属性の取得

イベント属性

属性の取得方法

application-name

エンタープライズ アプリケーションの名前。この属性を使用するすべての定義済みイベントでは自動的に設定される。

この属性をカスタム イベントに手動で設定するには、次のメソッドを使用する。

com.bea.p13n.events.Event.getApplication()

campaign-id

キャンペーンのユニークな ID。この属性を使用するすべての定義済みイベントでは自動的に設定される。

この属性をカスタム イベントに自動的に設定するには、次のメソッドを使用する。

com.bea.campaign.CampaignInfo.getUniqueId()

category-id

カタログの商品が属するカテゴリ。この属性は手動で設定する必要がある。次の方法で category-id を取得するには、WebLogic Portal カタログ API でカタログを構築する必要がある。

com.beasys.commerce.ebusiness.catalog.service.category.CategoryManager.getItemCategories()

カタログがそれ以外の方法で構築されている場合は、適切な方法で category-id を取得する。

currency

商品の通貨の種類を取得する。この属性は手動で設定する必要がある。次の方法で currency を取得するには、WebLogic Portal コマース API でコマース アプリケーションを構築する必要がある。

com.beasys.commerce.axiom.units.Money.getCurrency()

通貨がそれ以外の方法で設定されている場合は、適切な方法で currency を取得する。

document-id

取得したコンテンツ項目のユニークな仮想コンテンツ リポジトリ ID。ユニークなドキュメント名も取得できる。この属性は、キャンペーン イベントには自動的に設定される。それ以外のすべてのイベントでは、手動で設定する必要がある。タグ属性は、対応する JSP タグがあるコンテンツ イベントによって提供される。コンテンツ セレクタ、キャンペーン、プレースホルダ、またはその他の手段を使用して仮想コンテンツ リポジトリからコンテンツ項目を取得した後、次のいずれかの方法で document-id を取得する。

com.bea.content.Node.getId() or getName()

または

cm_uid または cm_nodeName プロパティを取得するには、<cm:getProperty> JSP タグを使用する。

document-type

タイプは、MIME タイプではなく仮想コンテンツ リポジトリ タイプの名前を表す。この属性は、キャンペーン イベントには自動的に設定される。それ以外のすべてのイベントでは、手動で設定する必要がある。タグ属性は、対応する JSP タグがあるコンテンツ イベントによって提供される。コンテンツ セレクタ、キャンペーン、プレースホルダ、またはその他の手段を使用して仮想コンテンツ リポジトリからコンテンツ項目を取得した後、com.bea.content.Node.getType() を使用してコンテンツのタイプを取得する。

order-id

顧客の注文のユニークな ID。order-id を次の方法で取得するには、コマース アプリケーションで WebLogic Portal 注文フレームワークを使用する必要がある。次のメソッドを使用する。

com.beasys.commerce.ebusiness.order.Order.getIdentifier()

コマース アプリケーションがそれ以外の方法で構築されている場合は、適切な方法で order-id を取得する。

placeholder-id

コンテンツを表示するコンテンツ プレースホルダのユニークな ID。この属性を使用するすべての定義済みイベントでは、自動的に設定される。

quantity

ショッピング カート内の商品の数量。quantity を次の方法で取得するには、コマース アプリケーションで WebLogic Portal ショッピング カート フレームワークを使用する必要がある。次のメソッドを使用する。

com.beasys.commerce.ebusiness.shoppingcart.ShoppingCartLine.getQuantity()

ショッピング カートがそれ以外の方法で構築されている場合は、適切な方法で数量を取得する。

scenario-id

実行されたアクションを含むキャンペーン シナリオのユニークな ID。この属性を使用するすべての定義済みイベントでは、自動的に設定される。この属性をカスタム イベントに自動的に設定するには、次のメソッドを使用する。

com.bea.campaign.action.Action.getScenarioId()

session-id

現在のセッションのユニークな ID。これは、TrackingEvent クラスを拡張した定義済みイベントによって自動的に取得され、javax.servlet.http.HttpSession.getId() を使用し、戻り値を session-id プロパティに割り当てる。

sku

カタログ商品の sku 番号。sku を次の方法で取得するには、コマース フレームワークを使用して sku 数を設定する必要がある。次のメソッドを使用する。

com.bea.commerce.ebusiness.tracking.tags.ProductEventTag.getSku()

カタログがそれ以外の方法で構築されている場合は、適切な方法で sku を取得する。

total-price

ショッピング カート内の注文の合計価格。total-price を次の方法で取得するには、コマース アプリケーションで WebLogic Portal ショッピング カート フレームワークを使用する必要がある。次のメソッドを使用する。

com.beasys.commerce.ebusiness.shoppingcart.ShoppingCart.getTotalPrice()

ショッピング カートがそれ以外の方法で構築されている場合は、適切な方法で total-price を取得する。

unit-price

unit-list-price

ショッピング カート内の商品の単価。次の方法で unit-price または unit-list-price を取得するには、コマース アプリケーションで WebLogic Portal ショッピング カート フレームワークを使用する必要がある。次のメソッドを使用する。

com.beasys.commerce.ebusiness.shoppingcart.ShoppingCartLine.getUnitPrice()

ショッピング カートがそれ以外の方法で構築されている場合は、適切な方法で unit-price または unit-list-price を取得する。

user-id

認証されたユーザの ID。TrackingEvent クラスを拡張する定義済みイベントによって自動的に取得され、戻り値が user-id プロパティに割り当てられる。

次のメソッドを使用して、要求から user-id を取得することもできる。

com.bea.p13n.usermgmt.SessionHelper.getUserId(request)


 

 


行動追跡の有効化とコンフィグレーション

WebLogic Portal ドメインのデフォルトである PointBase データベース (および他のデータベース タイプのポータル データベースを構築するために使用される SQL スクリプト) には、行動追跡データを保存するために使用できる行動追跡テーブルが含まれています。ただし、行動追跡イベントを使用するには、行動追跡を手動でアクティブにする必要があります。

行動追跡をアクティブにするには、次の手順に従って、BehaviorTrackingListener クラスを Event Service に登録します。

注意 : この手順は、開発環境またはテスト環境で、展開されたアプリケーションを使用していることを前提とします。EAR ファイルのアプリケーションに対して行動追跡を有効にしても、コンフィグレーションはメモリのみに保存され、サーバを再起動したときに行動追跡は有効になりません。コンフィグレーションは META-INF/application-config.xml ファイルに書き込む必要があるためです。このファイルは、EAR 内では読み取り専用です。

  1. WebLogic Administration Portal を起動し、システム管理者としてログインし、[サービス管理イベント サービス] を選択します。
  2. 図 6-2 のように、[同期型リスナ] の [追加] フィールドに次のクラスを入力します。
  3. com.bea.p13n.tracking.listeners.BehaviorTrackingListener

    注意 : 同期リスナは、イベントを直ちに受信します。非同期リスナは、スレッド スケジューラを使用してイベントを受信します。

  4. [更新] をクリックします。クラスが [クラス名] リストに表示され、application-config.xml ファイルが更新されます。これで、行動追跡がアクティブになりました。サーバの再起動や再デプロイメントの必要はありません。
  5. 図 6-2 行動追跡のアクティブ化


     

行動追跡のコンフィグレーション

デフォルトでは、行動追跡データは行動追跡イベントが発生した瞬間にデータベースに書き込まれるのではありません。イベントはバッファに格納されます。行動追跡データをバッファからデータベースに移動する頻度を決定できます。

行動追跡をコンフィグレーションするには、WebLogic Administration Portal で [サービス管理行動追跡サービス] を選択し、表 6-2 の説明に従って、図 6-3 のように設定を変更します。

この変更を有効にするには、サーバを再起動する必要があります。

図 6-3 行動追跡のコンフィグレーション


 

次のフィールド情報をガイダンスとして使用できます。

表 6-2 行動追跡の設定

[最大バッファ サイズ]

イベント データがデータベースに書き込まれる前にバッファに格納されるイベントの最大数を決定する。デフォルト値 : 100 イベント。

すべてのイベントがバッファに格納されるが、[永続化イベント タイプ] フィールドにリストされているイベントだけがデータベースに書き込まれる。それ以外は、すべてバッファからフラッシュされる。

[バッファ スイープ間隔]

バッファ内のイベントをデータベースで保持するかどうかを決定するために、イベントのバッファを確認する頻度を確定する。バッファからデータベースへのイベントの移動は、次の 2 つの条件によってトリガされる。1) 最大バッファサイズに達した。または、2) バッファに許可された最大時間 (バッファ スイープ 最長時間) を超過した。デフォルト値 : 10 秒。

バッファ スイープ最長時間

バッファ内のイベントがデータベースに書き込まれ (非永続化イベント タイプのイベントがバッファからフラッシュされ) るまでの最長時間を秒数で設定する。デフォルト値 : 120 秒。


 

データソースの JNDI 名 (p13n.trackingDataSource) と永続化クラス名 (null) はデフォルトのままにします。これらは、イベント データをバッファからデータベース内の BT_EVENT テーブルに移動するためのデフォルトの動作を指定します。他の永続化については、「他の方法での行動追跡データの保存」を参照してください。

[永続化イベント タイプ] フィールドの詳細については、「行動追跡イベント クラスの作成」を参照してください。

パフォーマンス チューニング

開発環境またはテスト環境で、[最大バッファ サイズ]、[バッファ スイープ間隔]、および [バッファ スイープ最長時間] に基準値を設定します。その後、値を変更しながら Web アプリケーションによるサイトのピーク時の使用量でテストを行い、データベース操作の回数と保存されるデータ量のバランスが最適になる値を見つけます。

他の方法での行動追跡データの保存

デフォルトでは、行動追跡イベント データは BT_EVENT テーブルのデータベースに保存されます。イベント データを別の場所や別の方法で (別のデータベース テーブルやファイルに) 永続化する場合は、異なる永続化ロジックを提供するカスタム イベント リスナを作成します。カスタム リスナの作成については、「カスタム イベント リスナの作成」を参照してください。

行動追跡イベント用の別個のデータベースの作成

行動追跡の使用頻度が高い場合は、パフォーマンス向上のために行動追跡データを別のデータベースに保存できます。『WebLogic Portal データベース管理ガイド』では、行動追跡データベースの作成手順をデータベース タイプごとに説明しています。

 


カスタム イベントの作成

必要を満たす WebLogic Portal の定義済みイベントがない場合は、独自のカスタム イベントを作成できます。どのような場合にどのようなタイプのカスタム イベントを作成するかについては、「イベントの使用方法の計画」を参照してください。

カスタム イベントを作成するには、次の手順を実行する必要があります。

イベント クラスの作成

WebLogic Portal には、Event Service で動作する EventTrackingEvent という基本イベント オブジェクトが用意されています。これらの基本クラスは、Event Service によって要求されるメソッドを提供します。

イベント クラスを作成するときは、いずれかの基本クラスを拡張し、必要なイベント属性を宣言し、イベント データ (イベント タイプなど) を基本クラス コンストラクタに渡します。

この節では、カスタム標準イベントとカスタム行動追跡イベントを作成するときの手順について説明します。

標準イベント クラスの作成

カスタム標準イベントは、WebLogic Portal の定義済みイベントに目的のイベント属性を取り込むイベントがなく、さらに Behavior Tracking Service を使用してイベント データを XML として BT_EVENT テーブルに永続化しない場合に作成します。カスタム イベント リスナを作成すると、カスタム標準イベントを使用してキャンペーンをトリガし、独自のイベント処理を実行できます。

次の手順は、カスタム イベント クラスの作成方法を示しています。

注意 : http://edocs.bea.com/wlp/docs81/interm/src/sample_events.zip ファイルのサンプル イベント クラス ResourceDisplayedEvent.java を参照することもできます。

  1. カスタム イベントを作成します。
  2. イベント クラスをコンパイルします。javac を実行してコンパイルするときは、-classpath オプションを使用して p13n_ejb.jar をクラスパスに配置します。次に例を示します。
  3. javac -classpath D:\bea\weblogic\<portalApp>\p13n_ejb.jar MyEvent.java
  4. コンパイルされたクラスをサーバのクラスパスに配置します (または JAR に配置し、JAR をクラスパスに配置します)。
  5. WebLogic Workshop でエンタープライズ アプリケーションを開き、[ツールアプリケーション プロパティ] を選択します。[アプリケーション プロパティ] ウィンドウで、[WebLogic Server] を選択し、ウィンドウを最下部までスクロールし、[サーバ クラスパスの追加] リストにパスを追加します。

これで、「イベントのディスパッチ」の説明に従って、JSP、Java コード、またはページ フローからイベントをディスパッチできます。

キャンペーン定義でイベントを使用する場合は、「キャンペーン用のイベントの登録」の説明に従って、イベントのイベント プロパティ セットを作成します。

イベントが生成されたときにカスタム機能を実行する場合は、「カスタム イベント リスナの作成」の説明に従って、イベントをリスンするカスタム イベント リスナを作成します。

行動追跡イベント クラスの作成

カスタム行動追跡イベントを作成する唯一の理由は、目的のイベント属性を取り込む WebLogic Portal の定義済みイベントがない場合に、WebLogic Portal の行動追跡フレームワークを使用して、イベント データを XML として BT_EVENT テーブルに永続化するためです。これらのイベントをキャンペーンで使用し、イベントに対して特殊な処理を行うカスタム リスナを作成できますが、行動追跡フレームワークを使用してイベント データを XML として保存するのでない限り、カスタム行動追跡イベントを作成する理由はありません。Behavior Tracking Service を使用しない場合は、カスタム標準イベントを作成します。

行動追跡イベントは独自の XML スキーマと連携して動作し、イベント データを XML として BT_EVENT データベース テーブルに保存します。次の手順に従って、スキーマに関する情報をイベント クラスに含める必要があります。

次の手順は、カスタム行動追跡イベント クラスの作成方法を示しています。

注意 : http://edocs.bea.com/wlp/docs81/interm/src/sample_events.zip ファイルのサンプル イベント クラス ResourceDisplayedEventBT.java を参照することもできます。

  1. カスタム行動追跡イベントを作成します。
  2. イベント クラスをコンパイルします。javac を実行してイベント クラスをコンパイルするときは、-classpath オプションを使用して p13n_ejb.jar をクラスパスに配置します。次に例を示します。
  3. javac -classpath D:\bea\weblogic\<portalApp>\p13n_ejb.jar MyEventBT.java
  4. コンパイルされたクラスをサーバのクラスパスに配置します (または JAR に配置し、JAR をクラスパスに配置します)。
  5. WebLogic Workshop でエンタープライズ アプリケーションを開き、[ツールアプリケーション プロパティ] を選択します。[アプリケーション プロパティ] ウィンドウで、[WebLogic Server] を選択し、ウィンドウを最下部までスクロールし、[サーバ クラスパスの追加] リストにパスを追加します。

  6. WebLogic Administration Portal で、行動追跡イベントを Behavior Tracking Service に登録します。これにより、このタイプのイベントを処理するように行動追跡リスナに通知されます。
    1. WebLogic Administration Portal で、[サービス管理行動追跡サービス] を選択します。
    2. [行動追跡サービス] ウィンドウ (図 6-3) で、[永続化イベント タイプ] リストに行動追跡クラスの名前 (MyEventBT) を入力し、[更新] をクリックします。
  7. 行動追跡イベントによって生成される XML ドキュメントの構造を決定する XML スキーマを作成します。「XML スキーマの作成 (行動追跡のみ)」を参照してください。

キャンペーン定義でイベントを使用する場合は、「キャンペーン用のイベントの登録」の説明に従って、イベントのイベント プロパティ セットを作成します。

イベントが生成されたときにカスタム機能を実行する場合は、「カスタム イベント リスナの作成」の説明に従って、イベントをリスンするカスタム イベント リスナを作成します。

スクリプトレットを使用したイベントの作成

JSP 内でスクリプトレットを使用することにより、イベント クラスを記述せずにイベントを作成できます。このテクニックは、キャンペーンをトリガするために使用される行動追跡以外の単純なイベントに最も適しています。このテクニックを複雑なイベントで使用すると、JSP が混乱します。このテクニックは、たとえばイベント プロパティに値を提供できるフォームがある JSP で使用します。

スクリプトレットを使用してイベントを作成するには、次の手順に従います。

  1. WebLogic Workshop でイベント プロパティ セットを作成します。「キャンペーン用のイベントの登録」を参照してください。
  2. イベント プロパティ セットを作成した後、イベントを作成する JSP を開き、[ソース ビュー] タブを選択します。
  3. WebLogic Workshop アプリケーション ウィンドウで、イベント プロパティ セット ファイルを JSP のイベントを発生させる場所 (フォームの [送信] ボタンの後など) にドラッグします。スクリプトレットが自動的に生成されます。
  4. たとえば、fooAttribute と呼ばれる制限のない属性が 1 つだけ含まれる MyEvent.evt という名前のイベント プロパティを作成し、プロパティ セットファイルを JSP にドラッグした場合は、次のスクリプトレットが生成されます。

    <%
    // ここに Event オブジェクトを生成する。
    // イベント タイプ用のカスタム Event サブクラスがある場合は、
    // 代わりにそれを使用するようにこのコードを変更する。
    com.bea.p13n.events.Event event = new com.bea.p13n.events.Event("MyEvent");
    // fooProperty は String にする。
    event.setAttribute("fooProperty", "");
    // 次の属性はすべてのイベントで標準である。
    event.setAttribute("request", new com.bea.p13n.http.Request(request, true));
    event.setAttribute("user-id", com.bea.p13n.usermgmt.SessionHelper.getUserId(request));
    // イベントを EventService にディスパッチする。
    com.bea.p13n.tracking.TrackingEventHelper.dispatchEvent(request, event);
    %>

    このスクリプトレットは、キャンペーンをトリガするために必要な requestuser-id を取得し、イベントをディスパッチするためのコードであることに注意してください。ディスパッチ コードは行動追跡 API を使用しますが、標準イベントもディスパッチします。

    フォーム フィールドの値などから、fooProperty に値を供給する必要があります。

イベントが生成されたときにカスタム機能を実行する場合は、「カスタム イベント リスナの作成」の説明に従って、イベントをリスンするカスタム イベント リスナを作成します。

XML スキーマの作成 (行動追跡のみ)

デフォルトでは、行動追跡イベントのプロパティ値は XML としてデータベースに保存されます。Event Service は、行動追跡イベントのタイプごとに特定の XML スキーマを使用して XML を作成します。カスタム行動追跡イベントを作成するときは、Behavior Tracking Service が使用する XML スキーマも作成する必要があります。

カスタム行動追跡イベントの XML スキーマを作成するときは、スキーマとイベント クラス間の次の接続ポイントを考慮します。

http://edocs.bea.com/wlp/docs81/interm/src/sample_events.zip ファイルのサンプル XSD ファイル ResourceDisplayedEventBT.xsd を参照することもできます。

XSD の大部分は定型表現です。単に targetNamespacexmlns= 属性の値を目的のネームスペースに変更し、カスタム イベント属性に順に追加します。

weblogic81\p13n\lib\p13n_ejb.jar に定義されている WebLogic Portal 用の XSD を参照できます。

イベントにユーザが関係しない場合があります。このような場合は、XSD ファイルの user-id 属性に対して atminOccurs="0" を使用します。次に例を示します。

<xsd:element ref="user-id" minOccurs="0"/>

スキーマのパッケージ化

スキーマを作成した後、次の手順に従って、ポータル アプリケーションの p13n_ejb.jar ファイルに追加します。

  1. p13n_ejb.jar ファイルをコピーしてバックアップを作成し、p13n_ejb.orig などの名前を付けます。
  2. アプリケーション ディレクトリで、lib/schema/<yourschema>.xsd directory/file を一時的に追加します。
  3. スキーマを p13n_ejb.jar に追加します。環境に JAR ユーティリティがあるコマンド ウィンドウで、アプリケーション ディレクトリに切り替え、次のコマンドを実行します。
  4. jar uvf p13n_ejb.jar lib\schema\<yourschema>.xsd

スキーマが JAR ファイルに追加されます。p13n_ejb.jar を再デプロイします。

 


カスタム イベント リスナの作成

イベント リスナの目的は 1 つしかありません。それは、リスンしているイベントが発生したときに、何らかのプログラム機能を実行することです。WebLogic Portal には、イベントを特別な方法で処理する次の 2 つのリスナが用意されています。

カスタム行動追跡イベントを作成して登録した場合、そのイベントは BehaviorTrackingListener と CampaignEventListener によって処理されます。カスタム標準イベントを作成した場合、そのイベントは CampaignEventListener によって処理されます。

ただし、イベントのタイプがカスタム イベントか WebLogic Portal の定義済みイベントかにかかわらず、イベントが発生したときに、よりプログラム的な機能を実行したい場合があります。たとえば、イベント データをファイルや別のデータベース テーブルに永続化したり、ユーザが商品イメージをクリックしたときに関連情報を表示したり、ユーザがフォームを送信したときにユーザのプロファイルを変更したりする場合です。このような種類の機能を追加するには、カスタム イベント リスナを作成する必要があります。

WebLogic Portal には、EventListener と呼ばれる基本イベント リスナ オブジェクトが用意されています。カスタム リスナで実装する必要があるこの基本クラスは、イベントをリスンし、それに対応するために次の 2 つのメソッドを提供します。

この節では、1 つまたは複数のイベントをリスンするカスタム リスナを記述する方法について説明します。リスナは、標準イベントまたは行動追跡イベント、あるいはその両方をリスンできます。

注意 : http://edocs.bea.com/wlp/docs81/interm/src/sample_events.zip ファイルのサンプル イベント リスナ customEventListener.java を参照することもできます。

  1. カスタム イベント リスナで EventListener を実装します。次に例を示します。
  2. public class MyEventListener
    implements EventListener
    {
  3. リスナがリスンするイベントを定義します。次に例を示します。
  4. private String[] eventTypes = {"MyEvent", "ClickContentEvent"};
  5. リスナを作成します。
  6. public MyEventListener()
    {
    }
  7. リスンされるイベントのタイプを基本コンストラクタに渡します。イベントが発生したときにこのリスナに送信するイベントを Event Service に通知します。
  8.     public String[] getTypes()
    {
    return eventTypes;
    }
  9. handleEvent() メソッドをオーバーライドして、リスンすべきイベントが発生したときにリスナが実行するプログラム機能を用意します。
  10.     public void handleEvent( Event ev )
    {
    //ここにカスタム コードを入力する。
    //イベントが発生すると、このコードが実行される。
    }
    }
  11. イベント クラスをコンパイルします。javac を実行してコンパイルするときは、-classpath オプションを指定して p13n_ejb.jar をクラスパスに配置します。次に例を示します。
  12. javac -classpath D:\bea\weblogic\<portalApp>\p13n_ejb.jar MyEventListener.java
  13. コンパイルされたクラスをサーバのクラスパスに配置します (または JAR に配置し、JAR をクラスパスに配置します)。
  14. WebLogic Workshop でエンタープライズ アプリケーションを開き、[ツールアプリケーション プロパティ] を選択します。[アプリケーション プロパティ] ウィンドウで、[WebLogic Server] を選択し、ウィンドウを最下部までスクロールし、[サーバ クラスパスの追加] リストにパスを追加します。

  15. リスナを Event Service に登録します。
    1. WebLogic Administration Portal で、[サービス管理イベント サービス] を選択してください。
    2. [イベント サービス] ウィンドウで、[同期] または [非同期] フィールドのいずれかにクラスの完全修飾名を入力します。次に例を示します。
    3. com.bea.p13n.events.custom.listeners.MyEventListener

      注意 : 同期リスナは、イベントを直ちに受信します。非同期リスナは、スレッド スケジューラを使用してイベントを受信します。

    4. [更新] をクリックします。リスナが Event Service に登録されます。サーバを再起動する必要はありません。

 


イベントのディスパッチ

イベントとリスナの準備ができたら、JSP、Java コード、およびページ フロー内でイベントを生成またはディスパッチできます。イベントのディスパッチとは、イベント オブジェクトが Event Service からイベントをリスンしているリスナに送信されることです。イベント オブジェクトを受信したリスナは、独自の方法でイベントを処理します。

http://edocs.bea.com/wlp/docs81/interm/src/sample_events.zip に用意されているサンプル イベントの ResourceDisplayedEventBT は、book.jsppage.jsp という 2 つのポータル フレームワーク スケルトン JSP ファイルからディスパッチされます。book.jsp スケルトンは、ポータル ブックの表示とページのナビゲーション (タブなど) を処理し、page.jsp スケルトンは、ポートレットが表示される領域を提供します。

これらのファイルには、コード リスト 6-1 に示すコードが挿入されています。このサンプルでは、page.jsp のコードを使用しています。このコードは、ポートレットがページに表示されたときに ResourceDisplayEventBT イベントをディスパッチします。

コード リスト 6-1 page.jsp からのイベントのディスパッチ

<%@ page import="com.bea.p13n.tracking.TrackingEventHelper,
examples.events.ResourceDisplayedEventBT" %>
...
ResourceDisplayedEventBT rde;
...
rde = new ResourceDisplayedEventBT( ppc.getLabel(), // resourceId,
portletTitle, // resourceLabel
"portlet", // resourceType
sessionId,
userId,
"true", // ポートレットを表示する
request,
session );
...
TrackingEventHelper.dispatchEvent( rde );

イベントは、そのイベントを受信するように登録されたリスナに送信され、リスナがイベントを独自の方法で処理します。図 6-1 に、イベントのライフサイクルを示します。スケルトン JSP は、この図の項目 2 に該当します。

スクリプトレットを使用したイベントの作成」では、イベント クラスを作成していないイベントをディスパッチする方法についても説明しています。

コンテンツがクリックされたときにイベントをディスパッチする場合は、「コンテンツのクリックに対応したイベントの生成」で説明している特別な手順に従う必要があります。

定義済みイベントの一部には、独自のディスパッチ メソッドがあります。「WebLogic Portal で提供される定義済みイベント」を参照してください。

 


キャンペーンでのイベントの使用

イベントを使用して Campaign Service をアクティブ化し、イベントとイベントの属性値に基づいてキャンペーン アクションをトリガすると、より強力なキャンペーンを実装できます。

キャンペーンでイベントを使用するために、Campaign Service に対してイベントを明示的に通知する必要はありません。キャンペーン リスナは、wps.jarlisteners.properties ファイルで明示的に除外されたイベント以外のすべてのイベントをリスンします。

キャンペーン リスナがリスンしているイベントが発生した場合、リスナは Campaign Service を呼び出します。Campaign Service は、現在の要求のスナップショットを作成し、ユーザが定義したすべてのキャンペーン ルールに照らして要求データを評価し、アクションを実行する必要があるかどうかを確認します。

さらに、別の方法でイベントをキャンペーンに使用できます。キャンペーン アクションの一部として使用する方法です。たとえば、ユーザがポータルでホーム ページをクリックしたときにのみパーソナライズされたコンテンツを表示するキャンペーン アクション (何らかのページ クリック イベントによってトリガされる) を定義できます。イベントをキャンペーン定義の一部として使用するには、「キャンペーン用のイベントの登録」の説明に従って、イベント プロパティ セットを作成する必要があります。

図 6-4 に、キャンペーン定義でのイベントの使用例を示します。この例では、イベントが特定のプロパティ値 (特性) を持つ場合に、キャンペーン シナリオがトリガされます。キャンペーン シナリオに [イベントが特定の特性を備えている] を追加し、キャンペーン エディタで [特性] リンクをクリックすることで、イベント プロパティを選択し、キャンペーン アクションの発生をトリガするプロパティ値を決定できます。作成されたイベント プロパティ セットによって、プロパティの選択が可能になります。

図 6-4 イベントを使用したキャンペーン シナリオのトリガ


 

キャンペーンに最大限の制御を行う場合、たとえば表示されるパーソナライズされたコンテンツを厳密に制御する場合は、厳密な制御を実施するアプリケーションの主要な場所に、キャンペーン アクションをトリガするイベントを作成します。パーソナライズされたコンテンツの制御の詳細については、このガイドの「プレースホルダ」の章の「プレースホルダでのデフォルト クエリとキャンペーン クエリの併用」を参照してください。

キャンペーンの作成の詳細については、このガイドの「キャンペーン」の章を参照してください。

キャンペーン用のイベントの登録

キャンペーンをトリガするカスタム イベントを使用する場合は、イベント プロパティ セットを作成する必要があります。イベントに対して作成するプロパティは、イベント クラスで定義した属性名と一致します。

たとえば、サンプルの ResourceDisplayedEvent クラスでは、resourceId、resourceLabel、resourceType、session-id、user-id、および resourceSelected の各プロパティを使用します。作成するイベント プロパティ セットには、これらの属性のいずれか、またはすべてのプロパティを定義できますが、プロパティ名はイベントの属性名と正確に一致している必要があります。

イベント プロパティ セットの作成に関する手順については、WebLogic Workshop ヘルプ システムの「カスタム イベントを登録する」を参照してください。

イベント プロパティの変更

アプリケーションをデプロイした後にイベント プロパティ セットを作成、変更、または削除した場合は、WebLogic Portal Datasync Web アプリケーションを使用してデータベース内のプロパティ セット定義を更新する必要があります。Datasync Web アプリケーションの詳細については、『プロダクション業務ユーザーズ ガイド』を参照してください。

 


Event Service のデバッグ

Event Service をデバッグするには、weblogic81\portal\debug.properties ファイルを作成します。

次のエントリをファイルに追加し、設定を変更します。これらの設定により、サーバ コンソールへの出力が行われ、出力を確認できます。

usePackageNames: on
com.bea.p13n.cache: on
# イベントのすべてのクラスのデバッグをオンにする
com.bea.p13n.events: on
# com.bea.p13n.events.internal.EventServiceBean: on
# すべてのクラスのデバッグをオンにする
# com.bea.p13n.tracking: on
com.bea.p13n.tracking.internal persistence: on
# クラスを選択的にオンにする
com.bea.p13n.mbeans.BehaviorTrackingListerner: on
com.bea.p13n.tracking.listeners.BehaviorTrackingListerner: on
com.bea.p13n.tracking.SessionEventListerner: on

 

ページの先頭 前 次