1. xConnectモデル

カスタムモデルの作成

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

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

このトピックでは、カスタムモデルを定義する方法について説明します。

カスタムファセットとイベントの定義

カスタムファセットとイベントを作成するには:

  1. 新しいプロジェクトを作成します (例: Documentation.Model.

  2. ファセットとイベントを定義します。

    メモ

    すべてのプロパティがxConnectの型制限に準拠していることを確認します。トラッカーで使用される任意のファセットをSerializable属性で装飾します。

    using Sitecore.XConnect;
    using System;
    
    namespace Documentation.Model
    {
        [Serializable]
        [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
            }
        }
    
        public class BoardFlight : Event
        {
            public static readonly Guid EventDefinitionId = new Guid("2A72E131-BCFD-481C-8E15-04496E9586DC");
    
            public BoardFlight(DateTime timestamp) : base(EventDefinitionId, timestamp)
            {
    
            }
    
            public string Seat { get; set; }
            public bool Upgraded { get; set; }
        }
    }

モデルの作成

モデルを作成するには:

  1. CollectionModelという名前のクラス (Documentation.Model.CollectionModelなど) を作成します。次のようにXdbModelBuilderのインスタンスを作成します。

    using Sitecore.XConnect;
    using Sitecore.XConnect.Schema;
    using System;
    
    namespace Documentation.Model
    {
        public class CollectionModel
        {
            public static XdbModel Model { get; } = BuildModel();
    
            private static XdbModel BuildModel()
            {
                XdbModelBuilder modelBuilder = new XdbModelBuilder("DocumentationModel", new XdbModelVersion(1, 0));
    
                // Facets and events here
    
                return modelBuilder.BuildModel();
            }
        }
    }
    手記

    モデルの完全な名前 (XdbModelクラスのFullNameプロパティで表される) には、モデルの名前とバージョンが含まれます。たとえば、DocumentationModel,1.0のようになります。

  2. 必要に応じて、使用する別のモデルを参照します。次の例では、Sitecore.XConnect.Collection.Model.CollectionModel.Modelが参照されています。 FacetEventなどのクラスは自動的に含まれます。

    using Sitecore.XConnect;
    using Sitecore.XConnect.Schema;
    using System;
    
    namespace Documentation.Model
    {
        public class CollectionModel
        {
            public static XdbModel Model { get; } = BuildModel();
    
            private static XdbModel BuildModel()
            {
                XdbModelBuilder modelBuilder = new XdbModelBuilder("DocumentationModel", new XdbModelVersion(1, 0));
    
                modelBuilder.ReferenceModel(Sitecore.XConnect.Collection.Model.CollectionModel.Model);
                // Facets and events here
    
                return modelBuilder.BuildModel();
            }
        }
    }
  3. FrequentFlyerInfoコンタクトファセットとBoardFlightイベントを定義します。

    using Sitecore.XConnect;
    using Sitecore.XConnect.Schema;
    using System;
    
    namespace Documentation
    {
        public class CollectionModel
        {
            public static XdbModel Model { get; } = BuildModel();
    
            private static XdbModel BuildModel()
            {
                XdbModelBuilder modelBuilder = new XdbModelBuilder("DocumentationModel", new XdbModelVersion(1, 0));
    
                modelBuilder.ReferenceModel(Sitecore.XConnect.Collection.Model.CollectionModel.Model);
    
                modelBuilder.DefineFacet<Contact, FrequentFlyerInfo>(FrequentFlyerInfo.DefaultFacetKey);
                modelBuilder.DefineEventType<BoardFlight>(false);
    
                return modelBuilder.BuildModel();
            }
        }
    }
  4. ファセット、イベント、または型が、別のアセンブリにある型を継承する場合は、modelbuilder.RegisterType() メソッドを使用して型を手動で登録します。たとえば、Documentation.Model.FrequentFlyerInfo Common.Model.InheritedBaseを継承する場合があります。

    using Sitecore.XConnect;
    using Sitecore.XConnect.Schema;
    using System;
    
    namespace Documentation
    {
        public class CollectionModel
        {
            public static XdbModel Model { get; } = BuildModel();
    
            private static XdbModel BuildModel()
            {
                XdbModelBuilder modelBuilder = new XdbModelBuilder("DocumentationModel", new XdbModelVersion(1, 0));
    
                modelBuilder.ReferenceModel(Sitecore.XConnect.Collection.Model.CollectionModel.Model);
    
                modelBuilder.RegisterType<Common.Model.InheritedBase>(false);
    
                modelBuilder.DefineFacet<Contact, FrequentFlyerInfo>(FrequentFlyerInfo.DefaultFacetKey);
                modelBuilder.DefineEventType<BoardFlight>(false);
    
                return modelBuilder.BuildModel();
            }
        }
    }
手記

モデルを使用するには、カスタム モデルをxConnect、Marketing Automation Engine、およびすべてのコアSitecoreインスタンスにデプロイする必要があります。

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