ウォークスルー
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
Data Exchange Frameworkを使用する場合、データのマッピングの標準的なアプローチはテナント内でマッピングを設定することです。多くの場合、この方法はカスタムコードの量を減らすため効果的に機能します。特定のマッピングはコード書写をせずに必要に応じて追加または削除できます。
しかし、マッピングロジックが構成だけで記述するには複雑すぎる場合もあります。既存のデータマッピングロジックを再利用すべき場合もあります。その場合はコードを使ってデータマッピングを定義しなければなりません。
このウォークスルーでは、コードベースのデータマッピングを実装するために必要なコンポーネントの構築、展開、統合方法を説明します。
- データマッピングのためのVisual Studioプロジェクトを作成
- カスタム値マッピングセットを実装してください
- カスタム値マッピングセットのテンプレートを作成します
- カスタム値マッピングセット用のコンバーターを実装します
- カスタム値マッピングセットを統合する
データマッピング用のVisual Studioプロジェクトを作成する
データマッピングロジックを実装するにはMicrosoft Visual Studioプロジェクトが必要です。
プロジェクト作成方法:
-
Visual Studioで以下のプロジェクトを作成します:
プロジェクトタイプ
Class Library (.NET Framework)
.NETバージョン
.NET フレームワーク 4.7.1
プロジェクト名
例。DataExchange
-
以下のNuGetパッケージへの参照を追加してください:
- Sitecore.DataExchange
!注Sitecoreの公開NuGetフィードはhttps://nuget.sitecore.com/resources/v3/index.jsonで視聴可能です。
カスタム値マッピングセットを実装してください
データ同期プロセスでは、値マッピングセット がソースオブジェクトからターゲットオブジェクトへのデータのマッピングを制御します。通常は、個々の 値マッピング を割り当てて設定します。しかし、データマッピングのロジックが非常に複雑な場合は、コードでデータマッピングを制御することもできます。そのためには、データマッピングを決定するコードを実装するカスタムの値マッピングセットを作成する必要があります。
このトピックのコード例は、以下のデータマッピングロジックを実装しています:
- ソースオブジェクトから Name プロパティを読み取ってください。
- ターゲットオブジェクトの Description プロパティに書きます。
- ターゲットオブジェクトの LastUpdated プロパティに現在の日付を設定します。
カスタム値マッピングセットを作成するには:
-
Visual Studioで、次のクラスを追加します:
using Sitecore.DataExchange.DataAccess; using Sitecore.DataExchange.DataAccess.Mappings; using Sitecore.DataExchange.DataAccess.Readers; using Sitecore.DataExchange.DataAccess.Writers; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;
namespace Examples.DataExchange { public class CustomMappingSet : IMappingSet { public CustomMappingSet() { }
public ICollection
Mappings => throw new NotImplementedException(); private static IValueReader ValueReader1 = new PropertyValueReader("Name"); private static IValueWriter ValueWriter1 = new PropertyValueWriter("Description"); private static IValueWriter ValueWriter2 = new PropertyValueWriter("LastUpdated"); public bool Run(MappingContext context) { if (context == null || context.Source == null || context.Target == null) { return false; } ApplyMapping(ValueReader1, ValueWriter1, context, new Mapping { Identifier = "Mapping1" }); ApplyMapping(DateTime.Now.Date, ValueWriter2, context, new Mapping { Identifier = "Mapping2" }); return true; } protected void ApplyMapping(IValueReader reader, IValueWriter writer, MappingContext context, IMapping mapping) { var context2 = new DataAccessContext(); var result = reader.Read(context.Source, context2); if (!result.WasValueRead) { context.RunFail.Add(mapping); return; } ApplyMapping(result.ReadValue, writer, context, mapping); } protected void ApplyMapping(object value, IValueWriter writer, MappingContext context, IMapping mapping) { var context2 = new DataAccessContext(); var writeSuccess = writer.Write(context.Target, value, context2); if (writeSuccess) { context.RunSuccess.Add(mapping); return; } context.RunFail.Add(mapping); } } }
カスタム値マッピングセットのテンプレートを作成します
カスタムの値マッピングセットを使用するためにデータ同期プロセスを設定するには、テンプレートを作成・設定する必要があります。
すべての値マッピングがコードで行われるため、ユーザーがカスタム値マッピングセットの下に値マッピング項目を追加できる理由はありません。
新しいテンプレートを追加し、値のマッピングを挿入するオプションを削除するには:
-
コンテンツエディターでTemplatesに移動します。リボンのホームタブの挿入グループで「新しいテンプレート」をクリックします。

-
「 名前選択 」ダイアログで、以下の値を入力してください:
名称
Custom Value Mapping Set
ベーステンプレート
テンプレート/データ交換/Framework>データアクセス > マッピング > 値マッピングセット
-
「次へ」をクリックします。ロケーションダイアログでTemplates/Data Exchange/Framework/Data Access/Mappingを選択します。

-
「次へ」をクリックします。確認ダイアログで**「閉じる**」をクリックします。
-
新しいテンプレートのアイコンを設定するには、コンテンツツリー内でテンプレートを選択してください。例えば、テンプレート/ データ交換/フレームワーク/データアクセス/マッピング/カスタム値マッピングセットなどです。
-
右側のペインの 「コンテンツ 」タブで、タイトルの横にあるアイコンをクリックしてください。

-
アイコン 変更 ダイアログの アイコン フィールドで、例えばOffice/32x32/vector_circle.pngと入力します。
-
テンプレートアイテムを選択し、リボンのビル ダーオプション タブの テンプレート グループで「 標準値」をクリックします。
-
新しい __Standard Values項目を選択し、リボンの 「構成 」タブの 「Insert Options 」グループで「 Assign」をクリックします。
-
右側のリストにある 「オプション挿入 」ダイアログで「 Value Mapping」をクリックします。

-
左矢印(
)をクリックすると、選択リストからValue Mappingを削除してください。変更を保存するにはOKをクリックしてください。
カスタム値マッピングセット用のコンバーターを実装します
Data Exchange Frameworkでは、Sitecoreのアイテムは設定のみに使用されます。データ同期プロセスが実行されると、Sitecoreのアイテムから設定が読み取られ、その後フレームワークコンポーネントに変換されます。
カスタム値マッピングセットテンプレートのアイテムIDを使ってカスタムコンバータークラスを実装する必要があります。
カスタムコンバーターの実装方法:
-
コンテンツエディターで /sitecore/templates/Data Exchange/Framework/Data Access/Mapping/Custom Value Mapping Setへ移動します。
-
リボンの コンテンツ タブの クイックインフォ セクションで、Item ID値をコピーします。

-
カスタムコンバータークラスを作成するには、Visual Studioで以下のクラスを追加してください:
using Sitecore.DataExchange; using Sitecore.DataExchange.Attributes; using Sitecore.DataExchange.Converters; using Sitecore.DataExchange.Repositories; using Sitecore.Services.Core.Model; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;
namespace Examples.DataExchange { SupportedIds("{00000000-0000-0000-0000-000000000000}") public class CustomMappingSetConverter : BaseItemModelConverter
{ public CustomMappingSetConverter(IItemModelRepository repository) : base(repository) { } private static CustomMappingSet _instance = new CustomMappingSet(); protected override ConvertResult ConvertSupportedItem(ItemModel source) { return ConvertResult .PositiveResult(_instance); } } } !注属性SupportedIdsでは、前のステップでコピーしたテンプレートアイテムID使ってください。
-
コードをデプロイするには、Visual Studioプロジェクトを構築してください。
-
Examples.DataExchange.dllファイルをSitecoreサーバーにコピーしてください。
カスタム値マッピングセットを統合する
最後のステップは、カスタムの価値マッピングセットをData Exchange Frameworkに統合することです。
データ同期プロセスを設定する際は、新しいテナントを作成する際にカスタムの値マッピングセットを使用してください。既存のテナントの場合は、現在使用している価値マッピングセットをカスタムの値マッピングセットに置き換えてください。
テンプレートをカスタムコンバーターとカスタム値マッピングセットで設定するには:
-
コンテンツエディターで /sitecore/templates/Data Exchange/Framework / Data Access/Mapping/Custom Value Mapping Set/__Standard Valuesに移動します。
-
データ交換フレームワークセクションの**「構成**」タブで、以下のフィールド値を設定します:
フィールド
価値
コンバータータイプ
例:DataExchange.CustomMappingSetConverter、例.DataExchange
-
メニューリボンの「 構成 」タブの 「オプションを挿入 」グループで「 割り当て」をクリックします。
-
左側のツリーの 「オプション挿入 」ダイアログで、「 テンプレート/データ交換/フレームワーク/データアクセス/マッピング/カスタム値マッピングセット」へ移動します。右矢印(
)をクリックすると、セットを「選択 済みリスト」に追加できます。
-
OKをクリックします。