1. ファセット

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

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

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

メモ

Sitecore XP 10.2以降を使用している場合は、Codeless Schema Extensionsモジュールを使用してファセットを作成することもできます。

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

大事な

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

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

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

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

    大事な

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

    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の制限です。コンストラクタはプライベートにすることができます。

    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データであるとします。

    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 Client APIの使用が簡素化されます。

    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のデフォルトのファセットキーは、コアコレクションモデルと並んで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には、多数の 組み込みファセットが付属しています。

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