1. xConnectとxDB

xConnectモデル

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

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

xConnectモデルは、xConnectによって収集されるデータの構造とタイプを表します。xConnectモデルでは、以下を定義します。

  • コンタクトとインタラクションのファセット ( PersonalInformationIpInfo

  • イベントの種類 ( GoalOutcome

  • ファセットやイベントで使用されるSystem.String CLRクラスやカスタム クラスなど、すべてのCLR型

xConnectモデルは、より小さなパーシャル モデルで構成されています。xConnectサービスはモデル全体を認識します。CRMシステムなどのクライアントは、使用する部分モデルのみを認識する必要があります。xConnectにデプロイされていないモデルを使用することはできません。

xConnectモデルはコードで定義されています

xConnectモデルはコードで定義され、複数のDLLに分散できます。たとえば、SitecoreのデフォルトのファセットとイベントはSitecore.XConnect.Collection.Model DLLに保存されますが、エクスペリエンス最適化機能に必要なファセットはSitecore.ContentTesting.Model.xConnect.Models DLLに保存されます。

モデルの作成の詳細については、以下を参照してください。

xConnectは、すべてのパーシャル モデルのJSONバージョンをホストします

xConnect内では、\App_data\ModelsフォルダーにすべてのモデルのJSON表現が含まれている必要があります。新しいモデルを作成したら、使用する前にxConnectにデプロイする必要があります。モデルのxConnectバージョンは、権限のあるバージョンと見なされます。すべてのクライアント側モデルは、xConnectクライアントAPIが初期化されるときにxConnectバージョンに対して検証されます。クライアントのモデルの次のプロパティは、xConnectモデルと一致する必要があります。

  • モデル名

  • モデルバージョン

  • ファセット、イベント、およびタイプ

クライアントが必要なモデルを参照します

クライアントは、使用するモデルDLLのコピーを持っている必要があります。次の例では、CRMサーバーはDocumentation.Modelモデルのみを認識しています。Content Deliveryサーバーは、Documentation.ModelモデルとデフォルトのSitecoreモデルを認識しています。

Content ManagementやContent DeliveryなどのSitecoreのコア ロールは、設定されたモデルのリストからランタイム モデルを構築します。Sitecore以外のコンテキストでxConnectクライアントAPIを使用する場合は、必要なモデルでクライアントをインスタンス化する必要があります。詳細については、以下を参照してください。

型の制限

次の制限は、ファセットとイベントのプロパティタイプを含む、モデルで使用されるすべてのタイプに適用されます。

  • .RegisterType<T>を使用して登録できるのはオブジェクト型と列挙型のみで、List<string>

  • すべての型はパラメータなしのコンストラクタを持つ必要があります - コンストラクタはパブリックである必要はありません

  • コレクションに具象型List<T> を使用する

  • 辞書に具象型Dictionary<K,V> を使用する

  • 型は参照されるスキーマ間で一意である必要があります - これは、型を手動で登録している場合を除き、通常は問題になりません。 .RegisterType<T>

  • プロパティはnull許容にすることができます (例: public?intLoyaltyNumber.

モデル ビルダーは、FacetEventなどのコア タイプを常に登録します。これには、GoalOutcomeなど、Eventを継承するすべての組み込み型が含まれます。

メモ

ファセットまたはカスタム・イベントのList<T> プロパティをnullに設定すると、そのリスト・プロパティが再度読み取られると、nullではなく空になります。oDataは、コレクション・データベースで値がnullであっても、このコンテキストでnull値をサポートしません。ただし、ContactInteractionsプロパティは、RelatedInteractionExpandOptionsが指定されていない場合、nullを返します。oDataのコンテキストでは、連絡先とインタラクションは関連エンティティです。

個人を特定できる情報(PII)

xConnectモデルには、個人を特定できる情報 (PII) を含む可能性のある、すぐに使用できるフィールドが含まれています。以下は、少なくとも1つのフィールドがPIISensitiveとしてマークされているファセットのリストです。

PersonalInformation  
	Birthdate { get; set; }
	FirstName { get; set; }
	MiddleName { get; set; }
	LastName { get; set; }
	Nickname { get; set; }
 
Avatar
	Picture { get; set; }
 
Address (Record from AddressList facet)
	AddressLine1 { get; set; }
	AddressLine2 { get; set; }
	AddressLine3 { get; set; }
	AddressLine4 { get; set; }
	GeoCoordinate { get; set; }
 
PhoneNumber (Record from PhoneNumberList facet)
	Extension { get; set; }
	Number { get; set; }
	AreaCode { get; set; }

EmailAddress (Record from EmailAddressList facet)
    SmtpAddress { get; set; }Birthdate { get; set; }
FirstName { get; set; }
MiddleName { get; set; }
LastName { get; set; }
Nickname { get; set; }

命名規則

次の命名規則は、型名、プロパティ名、列挙型、ファセット キー、およびモデル名に適用されます。

  • 小文字または大文字の英語で始める必要があります

  • 最初の文字の後には、大文字または小文字の英字、数字、またはアンダースコアを任意に組み合わせることができます

モデル名と名前空間には、ドットで区切られた複数の識別子を含めることができます。たとえば、My.Name_Space0My.Model_Name1などです。

ファセットとイベントの独自性

ファセットとイベントは、モデル内および参照モデル間で一意である必要があります。ファセットの一意性は、次の組み合わせによって決定されます。

  • ファセットタイプ

  • ファセットキー

  • ファセットエンティティ( ContactまたはInteraction)

コンタクトとインタラクションに対して同じタイプとキーを持つファセットを定義できます。

modelBuilder.DefineFacet<Contact, FacetType>("FacetKey");
modelBuilder.DefineFacet<Interaction, FacetType>("FacetKey");

イベントはタイプによって定義されます。2つのモデルがイベント・タイプを共有している場合、イベント・タイプが別々の共有モデルで指定されていない限り、モデルを一緒に使用することはできません。次の例では、Documentation.Model.dllとTesting.Model.dllの両方でRegisterEventという名前のイベントを定義しています。

Documentation.Model.dllとTesting.Model.dllを一緒に使用するには、共有イベント タイプを、Documentation.Model.dllとTesting.Model.dllによって参照される別のモデルに移動する必要があります。

参照モデル間でのモデル名の一意性

モデル名は、2次参照を含むすべての参照モデルで一意でなければなりません。例えば:

  • CRMという名前のモデル。モデルは、CRMという名前の別のモデルを参照できません。モデル

  • CRMという名前のモデル。モデルはDocumentation.Modelを参照できず、Documentation.ModelはCRMという名前の別のモデルを参照します。モデル

モデル名が一意でない場合は、DuplicateModelNameException例外がスローされます。次の例では、DuplicateModelNameExceptionになります。

var model1 = new XdbModel("Test", new XdbModelVersion(0, 1), new XdbNamedType[0], new XdbFacetDefinition[0], new XdbModel[0]);
var model2 = new XdbModel("Test", new XdbModelVersion(0, 1), new XdbNamedType[0], new XdbFacetDefinition[0], new XdbModel[0]);

var model3Builder = new XdbModelBuilder("Composite", new XdbModelVersion(0, 1));

model3Builder.ReferenceModel(model2);
model3Builder.BuildModel(); // This will work, since only one model named "Test"

model3Builder.ReferenceModel(model1);
model3Builder.BuildModel(); // This will fail, as there is already a model named "Test"
この記事を改善するための提案がある場合は、 お知らせください!