アナリティクスデータクラス

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

カスタムAnalytics Dataクラスは、データがインタラクションにシリアライズされる際に2つのメソッドを公開し、1つのコンテンツリハイドレートメソッドを公開します。

An example of Initialize and Serialize methods in the BaseAnalyticsData class diagram.
An example of the Deserialize method in the BaseAnalyticsData class diagram.

名称

概要

初期化

ページイベントの文脈では、このメソッドを呼び出し、呼び出し中に受け取った引数をサービス層に渡します。シリアライズしたいデータを抽出するためにRequestオブジェクトとResultオブジェクトを解析する方法を知るのは、特定の AnalyticsEntity オブジェクトの責任です。

> [!注]
> 一部の実装では、明示的な順序がECSから引き戻されないなど、異なる入力パラメータに対応するためにオーバーロード初期化が作成されています。

連載

このメソッドを呼び出して、内容を指定された辞書にシリアライズし、そのインタラクションのページイベントや目標のカスタム値に書き込まれます。

デシリアライズ

このメソッドを呼び出してデータクラスの内容を再水和化します。現在、Connect Experience ProfileおよびExperience Analyticsのレポートコンポーネントで使用されています

データをシリアライズする際には、以下のユーティリティ手法が利用可能です:

An example of the AddEntityToEventDictionary method in the BaseAnalyticsData class diagram.
  • 名称
  • AddEntityToEventDictionary
    、カスタム値辞書にConnectエンティティを追加する際に使用されます。注意
    、このメソッドを使用することが重要です。このメソッドはいくつかのことをします。まず、ECSによって追加された拡張機能を除去したベースエンティティの値のみを保存します。これは分散環境では、ECS固有のデータ型が利用できない可能性があり、デシリアル化フェーズ中にレポーティングや処理サーバーに問題を引き起こす可能性があるためです。これら両方のサーバーが自分のドメインと制御内にある場合、元の「カスタム」ECSエンティティを持つことが望ましい場合があります。この場合、Sitecoreで以下の設定が利用可能です。Commerce.configファイル:有効な値は以下の通りです
    - ベースエンティティのみを保存します。Custom - 元のエンティティを保存します。Both - ベースエンティティと元のバージョンを保存します。デフォルトではBaseが設定されています。詳細については、Experience Profile Commerce タブのトピックをご覧ください。

データをリハイドレートする際は、以下のユーティリティ手法を使用します。

A BaseAnalyticsData class diagram showing utility methods.

上記のメソッドは、必要な型のシリアライズ済みリストから値を取得できます。 GetMandatory* メソッドは、必須パラメータが見つからない場合に備え、適切なnullチェックやエラーログの追加など、追加のエラー処理コードを追加します。

Get Optional*メソッドはGetMandatory*メソッドと同じですが、キーが存在しない場合はエラーログが発生します。

以下は、新しいビジターオーダーが作成された際に登録される注文目標のConnect実装を示しています:

public class OrderGoalAnalyticsData : BaseAnalyticsData { public string ExternalId { get; set; } public string ShopName { get; set; } public Total Total { get; set; } public Order Order { get; set; } public bool? IsOfflineOrder { get; set; } public override void Initialize(Pipelines.ServicePipelineArgs args) { base.Initialize(args); this.Order = this.GetOrderFromArgs();

this.ExternalId = this.Order.ExternalId; this.ShopName = this.Order.ShopName; this.Total = this.Order.Total.ToBaseType(); this.IsOfflineOrder = this.Order.IsOfflineOrder; } public virtual void Initialize(Order order) { this.ServicePipelineArgs = null; this.Order = order; this.ExternalId = this.Order.ExternalId; this.ShopName = this.Order.ShopName; this.Total = this.Order.Total.ToBaseType(); this.IsOfflineOrder = this.Order.IsOfflineOrder; } public override void Serialize(IDictionary<string, object> customValues) { customValues.Add(Constants.KnownPageEventDataNames.ExternalId, this.ExternalId); customValues.Add(Constants.KnownPageEventDataNames.ShopName, this.ShopName); customValues.Add(Constants.KnownPageEventDataNames.Total, this.Total); customValues.Add(Constants.KnownPageEventDataNames.IsOfflineOrder, this.IsOfflineOrder); this.AddEntityToEventDictionary(this.Order, customValues, Constants.KnownPageEventDataNames.Order); } public override void Deserialize(IDictionary<string, object> customValues) { this.ExternalId = this.GetMandatoryCustomValueAsObject(Constants.KnownPageEventDataNames.ExternalId, customValues); this.ShopName = this.GetMandatoryCustomValueAsObject(Constants.KnownPageEventDataNames.ShopName, customValues); this.Total = this.GetMandatoryCustomValueAsObject(Constants.KnownPageEventDataNames.Total, customValues); this.Order = this.GetOptionalCustomValueAsObject(Constants.KnownPageEventDataNames.Order, customValues); var isOfflineOrder = this.GetOptionalCustomValueAsObject<bool?>(Constants.KnownPageEventDataNames.IsOfflineOrder, customValues); this.IsOfflineOrder = isOfflineOrder ?? false; base.Deserialize(customValues); } protected virtual Order GetOrderFromArgs() { Assert.IsTrue(this.ServicePipelineArgs.Result is SubmitVisitorOrderResult, "args.Result is SubmitVisitorOrderResult"); return ((SubmitVisitorOrderResult)this.ServicePipelineArgs.Result).Order; } }

いくつか言及すべきことがあります:

  • 2つの Initialize メソッドがあります。1つ目はトリガーページイベント機構によって呼び出される際にその ServicePipelineArgs を受け取ります。2つ目はオフライン命令の登録プロセス中に使われるOrderを受け取ります。
  • Totalプロパティを設定する際には、ToBaseType()が使用されます。これは、カスタム拡張がページイベントに保存されるようにしたくないため重要です。これらのデータ型はレポーティングや処理サーバー(マルチサーバー展開)で利用できない可能性があるためです。
  • SerializeメソッドはAddEntityToEventDictionary()テンプレートメソッドを利用してページイベントに順序を追加します。

以下のコードスニペットは、分析データの利用方法を示しています:

var customData = AnalyticsDataInitializerFactory.Create(); customData.Deserialize(pageEventData.CustomValues);

上記は、Sitecoreインタラクションからのページイベントデータがあると仮定しています。 Deserializeメソッドを呼び出すと、SearchAnalyticsDataオブジェクトプロパティに情報が入力されます。

この記事を改善するための提案がある場合は、 お知らせください!