メトリックのビューの定義/ライフサイクルの保存
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、こちらまでご連絡ください。
このセクションでは、メトリックのビュー/保存ライフサイクルを定義します。ユーザーがレポートエディターを使用してレポートにメトリックを適用するとどうなるかを定義します。
ニュースレターメトリックのJavaクラスの定義を開始します。 これは、前の記事の手順に従って NewsletterTrackingAction
クラスを作成し、 com.liferay.content.targeting.api.model.BaseJSPTrackingAction
を拡張することを前提としています。 content-targeting-tracking-action
Blade CLIテンプレートを使用した場合、プロジェクトはすでに BaseJSPTrackingAction
を拡張しており、デフォルトの view.jsp
ファイルがすでに作成されています。
-
クラスにアクティブ化および非アクティブ化メソッドを追加します。
@Activate @Override public void activate() { super.activate(); } @Deactivate @Override public void deActivate() { super.deActivate(); }
これらのメソッドは、スーパークラス
com.liferay.content.targeting.api.model.BaseTrackingAction
を呼び出して、メトリックが開始および停止するときに必要なログと処理を実装します。 必ず、 @Activate および @Deactivate アノテーションを含めてください。これらは必須です。 -
次のメソッドを追加します。
@Override protected void populateContext( TrackingActionInstance trackingActionInstance, Map<String, Object> context, Map<String, String> values) { String alias = StringPool.BLANK; String elementId = StringPool.BLANK; String eventType = StringPool.BLANK; if (!values.isEmpty()) { alias = values.get("alias"); elementId = values.get("elementId"); eventType = values.get("eventType"); } else if (trackingActionInstance != null) { alias = trackingActionInstance.getAlias(); elementId = trackingActionInstance.getElementId(); eventType = trackingActionInstance.getEventType(); } context.put("alias", alias); context.put("elementId", elementId); context.put("eventType", eventType); context.put("eventTypes", getEventTypes()); }
この方法で何が行われるかを理解するには、メトリックの構成ライフサイクルを確認する必要があります。
ユーザーがレポートエディターを開くと、メトリックのレンダリングフェーズが開始されます。
getFormHTML(...)
メソッドは、表示するHTMLを取得します。 このメソッドは、拡張しているBaseJSPTrackingAction
クラスにすでに実装されているため、このメソッドの実装について心配する必要はありません。getFormHTML
メソッドは、populateContext(...)
メソッドを呼び出します。PopupContext
メソッドがTrackingAction
インターフェースで使用できないことに気づくでしょう。 これは、すべてのケースで必要なわけではないためです。 これは、BaseJSPTrackingAction
クラスを拡張することで利用でき、ニュースレターメトリックのロジックをさらに追加する必要があります。PopulateContext
メソッドは、JSPビューがメトリックのHTMLをレンダリングするために必要なすべてのパラメーターを含むマップを生成します。 このマップはコンテキスト
変数に格納されます。これは、ポートレットロジックの基本的な値が事前に入力されており、各メトリックが特定のパラメーターを提供します。populateContext
を移入上記方法エイリアス
、ELEMENTID
、のeventType
、及びイベントタイプ
から隣接する値を有するコンテキスト変数の値
、次にJSPに渡されるマップパラメータ。ニュースレターのメトリックでは、
PopulateContext
メソッドが3つの使用例を説明します。a。 指標が追加されましたが、まだ設定値はありません。 この場合、開発者が定義したデフォルト値が挿入されます(例:
alias = ""
)。b。 メトリックが追加され、値が設定されましたが、リクエストが完了できませんでした(たとえば、エラーが原因で)。 この場合、
PopupContext
メソッドの値
パラメーターには、保存することを意図した値が含まれており、エラーメッセージとともにメトリックのビューに表示されるように、それらの値が挿入されます。c。 メトリックが追加され、値が正常に設定されました。 この場合、
値
パラメーターは空であり、フォームが表示する値をストレージから取得して、それらをコンテキストに挿入して、メトリックのHTMLに表示する必要があります。 ニュースレターのメトリックは、メトリックのインスタンスに値を格納しますが、複雑なメトリックは、サービスを使用して値を格納できます。populateContext
メソッドは、JSPとバックエンドコードの間の仲介者と考えることができます。 メトリックのUIの定義 セクションにスキップすることにより、JSPを使用してニュースレターメトリックのUIを作成する方法を確認できます。 HTMLが正常に取得され、ユーザーがニュースレターの値を設定して Saveをクリックすると、アクションフェーズが開始します。 -
アクションフェーズが始まると、オーディエンスターゲティングは追跡アクション(メトリック)を処理します。
processTrackingAction(...)
メソッドは、 メトリックのUIフォーム から値を取得し、それらをtrackingActionInstance
対応するフィールドに格納します。BaseTrackingAction
クラスはnull
を返すこのメソッドのデフォルト実装を提供するため、NewsletterTrackingAction
クラスはそれを実装する必要はありません。メトリックのカスタムフィールドを処理する必要がある場合は、このメソッドをオーバーライドする必要があります。 カスタム値を
TrackingActionInstance
のtypeSettings
フィールドに格納する場合は、nullの代わりにそれらの値を返します
。メトリック処理が終了すると、フォームが再ロードされ、ライフサイクルが再び再開されます。 メトリックで指定された値は保存され、レポートの生成が始まるとすぐにアクセスできます。 次に、ニュースレターの指標で評価する必要があるイベントタイプを設定する必要があります。
-
次のメソッドとプライベートフィールドを追加します。
@Override public List<String> getEventTypes() { return ListUtil.fromArray(_EVENT_TYPES); } private static final String[] _EVENT_TYPES = {"view"};
これは、ニュースレターのメトリックがニュースレターを閲覧した人のみを追跡することを指定します。
-
メトリックのローカライズされた概要を取得する方法を定義します。 多くの場合、これは、メトリックのリソースバンドル内のキーを、メトリック用に保存されている情報と組み合わせることで実現できます。 ニュースレターメトリックの場合、追跡されているニュースレターのIDに関する情報を提供できます。これは、
trackingActionInstance
オブジェクトのエイリアス
フィールドに格納されます。@Override public String getSummary( TrackingActionInstance trackingActionInstance, Locale locale) { return LanguageUtil.get( locale, trackingActionInstance.getTypeSettings()); }
-
メトリックのサーブレットコンテキストを設定します。
@Override @Reference( target = "(osgi.web.symbolicname=newsletter)", unbind = "-" ) public void setServletContext(ServletContext servletContext) { super.setServletContext(servletContext); }
これは、
BaseJSPTrackingAction
クラスを拡張するメトリックにのみ必要です。 メトリックが独自のJSPファイルをレンダリングするには、サーブレットコンテキストを設定する必要があります。setServletContext
メソッドは、メトリックモジュールがLiferayにインストールされて解決されるときに自動的に呼び出されます。@Reference
アノテーションのtarget
プロパティのosgi.web.symbolicname
が、モジュールのbnd.bnd
ファイルで定義されているBundle-SymbolicName
と同じ値に設定されていることを確認します。
次に、メトリックが使用する追跡メカニズムを定義します。