カスタム ファセットの作成

Current version: 10.1

このトピックでは FrequentFlyerInfo という名前のファセット モデルを作成し、それを使用して同じキーでコンタクト ファセットを定義する方法について解説します。

重要

ファセット キーの大文字と小文字は区別されます。

ファセット モデル クラスの作成

  1. Sitecore.XConnect.Facet を継承するクラスを作成します。

  2. xConnect のタイプ制限に準拠する 1 つ以上のプロパティを追加します。

    重要

    トラッカーのコンテキストでファセットを使用する場合は、ファセットを [Serializable] とマークする必要があります。

    RequestResponse
    namespace 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
            }
        }
    }
  3. 必要に応じて、コンストラクターを使用して必須プロパティを指定します。次の例で、FrequentFlyerID は必須であり、プライベート セッターがあります。つまり、一度設定すると更新できません。

    重要

    すべてのファセットは空のコンストラクターを宣言する必要があります。これは oData の制限です。コンストラクターはプライベートにすることができます。

    RequestResponse
    namespace 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
            }
        }
    }
  4. ファセットまたはファセット プロパティを、必要に応じて [PIISensitive] 属性または [DoNotIndex] 属性で装飾します。たとえば、コンタクトのパスポート番号は PII データです。

    RequestResponse
    namespace 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
            }
        }
    }
  5. 必要に応じて、[FacetKey] 属性を使用してデフォルトのファセット キーを定義します。デフォルトのファセット キーは xConnect クライアント API の使用を簡素化します。

    RequestResponse
    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 コンテキストでモデルを使用する場合は、モデル クラスをクライアントの設定ファイルに追加する必要があります。

RequestResponse
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 には複数の組み込みファセットが付属しています。

Do you have some feedback for us?

If you have suggestions for improving this article,