攻略
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
このウォークスルーはxDBデータ移行ツール を使用していますが、複雑なデータ型をxConnectの面に移行するすべてのツールに適用可能です。
!注複雑型やカスタム型を移行するには、カスタムマイグレーションモデルを登録する必要があります。その方法の例は「 移行データを格納するコンポーネントの実装」を参照してください。
このウォークスルーでは、以下の方法を説明します:
このウォークスルーの目的上、あなたが以前のSitecoreのバージョンにカスタムファセットを実装し、例えば次のようなコードを使って実装したことを前提としています:
public AvailablePublishersFacet : IFacet
{
IElementCollection
public AvailablePublishersElement : IElement, IValidatable { string PublisherID { get; set; } int PublishStatus { get; set; } }
例えば、その連絡先は以下のコードを使います。
{ "_id": { "$binary": "Jj8PNya4NEy988az+LwtNA==", "$type": "3" }, "AvailablePublishers": { "AvailablePublishers": { "0": { "PublisherID": "publisher1", "PublishStatus": 1 }, "1": { "PublisherID": "ps2", "PublishStatus": 1 }, "2": { "PublisherID": "ps3", "PublishStatus": 1 } }, "LastUpdated": { "$date": "2020-02-23T06:`41
`.572Z" } }, "Lease": null, "System": { "VisitCount": 2 } }xConnectでモデルを作成する
xConnectでモデルを作成するには:
using System; using System.Collections.Generic; using Sitecore.DataExchange.Tools.XdbDataMigration.Models; using Sitecore.XConnect; using Sitecore.XConnect.Schema;
namespace { public class CollectionModel { public static XdbModel Model { get; } = CollectionModel.BuildModel();
private static XdbModel BuildModel() { var modelVersion = new XdbModelVersion(1, 0); var builder = new XdbModelBuilder("Documentation.Model.CollectionModel", modelVersion); builder.ReferenceModel(DataMigrationCollectionModel.Model); builder.DefineFacet<Contact, AvailablePublishersFacet>(AvailablePublishersFacet.DefaultFacetKey); return builder.BuildModel(); } }
Serializable public class AvailablePublishersFacet : Facet { public DateTime LastUpdated { get; set; } public const string DefaultFacetKey = "AvailablePublishers"; public AvailablePublishersFacet() { }
public Dictionary<string, AvailablePublisher> AvailablePublishers { get; set; } = new Dictionary<string, AvailablePublisher>(); }
Serializable public class AvailablePublisher { public AvailablePublisher(int publisherstatus, string publisherid) { this.PublisherID = publisherid; this.PublishStatus = publisherstatus; } public string PublisherID { get; set; } public int PublishStatus { get; set; } } }
Data Exchange Frameworkでカスタムファセットを設定する
Data Exchange Frameworkでは、異なるデータプロバイダー向けにカスタムファセットを設定できます。以下の例では、MongoDBプロバイダーのカスタムファセットの設定方法を示しています。
カスタムファセットの設定:
-
Visual Studioを使ってモデルをDLLにまとめ、ウェブサイトのbinディレクトリに追加し、Sitecoreを再起動します。
-
コンテンツエディターで /sitecore/System/Settings/Data Exchange/Providers/xConnect/Collection Modelsに移動し、新しいモデルを作成します。また、作成したばかりのモデルで既存のモデルを更新することもできます。

-
リボンメニューのData Exchangeタブで「 モデルをJSONに変換 」をクリックしてJSON実装を生成します。 新しいモデルをxConnectとインデックスサービスに展開します。
-
mongodbモデルとxConnect AvailablePublisher Entryモデル用の簡単な値アクセスセットを作成し、MongoDB Document Field Value AccessorとxConnect XObjectプロパティValue Accessorを使用します。


これらの値アクセスセットは、各AvailablePublisherエンティティの1対1のマッピングに使用されます。
-
コンテンツツリーで /sitecore/System/Data Exchange/
/Value Mapping Sets/MongoDBに移動します。作成した値のアクセサを使って、MongoDB collectionエントリからxConnect Facet Dictionaryエントリへの1対1のマッピングを作成します。 
-
ソースコンタクトのAvailablePublishers値インセクターを追加します。

カスタムファセットのマッピングを設定できます:
-
ドキュメントバリューリーダーから辞書エントリーを作成/sitecore/System/Data Exchange/
/Data Access/Value Readers/Providers/MongoDBAvailablePublishers。 
-
/Data Access/Value Accessor Sets/Providers/MongoDB/Create a Value Accessor Setに移動し、一般的なValue Accessorを選択し、作成した値リーダーをこのアクセルに割り当てます。

-
xConnect Providerでは、xConnect Entity Facet Value AccessorとxConnect Entity Facet Dictionary Property Value Accessorテンプレートを使って、AvailablePublishers面のアクセルとAvailablePublishers Dictionary面プロパティのアクセルを作成します。

!注 ステップ5で作成された1対1のマッピングセットを辞書プロパティ値のアクセサとして使用してください。
-
ステップ1で作成した値のアクセルと、ステップ2で作成したFacet AvailablePublishers Dictionaryプロパティのバリューアクセルの間にマッピングセットを作成します。
-
作成したマッピングセットを、AvailablePublishers面のアクセルに割り当てます。

-
ステップ6で作成されたMongoDB AvailablePublishersとステップ3で作成されたxConnect AvailablePublishersの間にマッピングを追加します。

!注MongoDBの連絡先データをXDBデータ移行ツールのxConnectの連絡先ファセットにマッピングする方法については、「 MongoDBから連絡先へのMapデータ」をご覧ください。