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プロパティで表される)には、モデル名とバージョンが含まれます。例えば

    ,1.0。

  2. 必要に応じて、使いたい別のモデルを参照することもできます。以下の例では、Sitecore.XConnect.Collection.Model.CollectionModel.Modelを参照されます。 FacetやEventなどのクラスは自動的に含まれています。

    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(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(false);

    return modelBuilder.BuildModel(); } } }

!注モデルを使用するには、カスタムモデル をxConnect、マーケティングオートメーションエンジン、そしてすべてのコアSitecoreインスタンスに展開する必要があります。

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