カスタム ファセットの作成
このトピックでは FrequentFlyerInfo
という名前のファセット モデルを作成し、それを使用して同じキーでコンタクト ファセットを定義する方法について解説します。
ファセット キーの大文字と小文字は区別されます。
ファセット モデル クラスの作成
-
Sitecore.XConnect.Facet
を継承するクラスを作成します。 -
xConnect のタイプ制限に準拠する 1 つ以上のプロパティを追加します。
重要トラッカーのコンテキストでファセットを使用する場合は、ファセットを
[Serializable]
とマークする必要があります。RequestResponseshellnamespace Documentation { [Serializable] public class FrequentFlyerInfo : Sitecore.XConnect.Facet { public FrequentFlyerStatus Status { get; set; } public string FrequentFlyerID { get; set; } // Example: ABC12345 public enum FrequentFlyerStatus { Unknown = 0, Bronze, Silver, Gold } } }
-
必要に応じて、コンストラクターを使用して必須プロパティを指定します。次の例で、
FrequentFlyerID
は必須であり、プライベート セッターがあります。つまり、一度設定すると更新できません。重要すべてのファセットは空のコンストラクターを宣言する必要があります。これは oData の制限です。コンストラクターはプライベートにすることができます。
RequestResponseshellnamespace Documentation { [Serializable] public class FrequentFlyerInfo : Sitecore.XConnect.Facet { public FrequentFlyerInfo(string frequentFlyerId) { FrequentFlyerID = frequentFlyerId; } private FrequentFlyerInfo() { } public FrequentFlyerStatus Status { get; set; } public string FrequentFlyerID { get; private set; } // Example: ABC12345 public enum FrequentFlyerStatus { Unknown = 0, Bronze, Silver, Gold } } }
-
ファセットまたはファセット プロパティを、必要に応じて
[PIISensitive]
属性または[DoNotIndex]
属性で装飾します。たとえば、コンタクトのパスポート番号は PII データです。RequestResponseshellnamespace Documentation { [Serializable] public class FrequentFlyerInfo : Sitecore.XConnect.Facet { public FrequentFlyerInfo(string frequentFlyerId) { FrequentFlyerID = frequentFlyerId; } private FrequentFlyerInfo() { } public FrequentFlyerStatus Status { get; set; } public string FrequentFlyerID { get; private set; } // Example: ABC12345 [PIISensitive] public string PassportNumber { get; set; } public enum FrequentFlyerStatus { Unknown = 0, Bronze, Silver, Gold } } }
-
必要に応じて、
[FacetKey]
属性を使用してデフォルトのファセット キーを定義します。デフォルトのファセット キーは xConnect クライアント API の使用を簡素化します。RequestResponsec#using Sitecore.XConnect; namespace Documentation { [FacetKey(DefaultFacetKey)] public class FrequentFlyerInfo : Sitecore.XConnect.Facet { public const string DefaultFacetKey = "FrequentFlyerInfo"; public FrequentFlyerInfo(string frequentFlyerId) { FrequentFlyerID = frequentFlyerId; } public FrequentFlyerStatus Status { get; set; } public string FrequentFlyerID { get; set; } // Example: ABC12345 public enum FrequentFlyerStatus { Unknown = 0, Bronze, Silver, Gold } } }
Sitecore のデフォルトのファセット キーは、core コレクション モデルと共に、Sitecore.XConnect.Collection.Model.CollectionModel.FacetKeys
という名前の静的クラスにあります。
カスタム ファセットでのモデルの定義
.DefineFacet()
メソッドを使用して、新しいファセットをコレクション モデルで定義します。次の例では、ファセットを SampleModel
という名前のモデルに追加しています。Sitecore コンテキストでモデルを使用する場合は、モデル クラスをクライアントの設定ファイルに追加する必要があります。
using Sitecore.XConnect;
using Sitecore.XConnect.Schema;
namespace Documentation
{
public class SampleModel
{
public static XdbModel Model { get; } = SampleModel.BuildModel();
private static XdbModel BuildModel()
{
XdbModelBuilder modelBuilder = new XdbModelBuilder("SampleModel", new XdbModelVersion(0, 1));
modelBuilder.ReferenceModel(Sitecore.XConnect.Collection.Model.CollectionModel.Model);
modelBuilder.DefineFacet<Contact, FrequentFlyerInfo>(FrequentFlyerInfo.DefaultFacetKey);
return modelBuilder.BuildModel();
}
}
}
ファセットを使用するには登録する必要があります。登録しないと、「このインスタンスのタイプはスキーマのどのタイプにも対応しません」などのエラーが発生します。
カスタム ファセットの使用
xConnect クライアント API を使用してファセットを操作します。
Sitecore には複数の組み込みファセットが付属しています。