デフォルトマッピングコードのカスタマイズ
デフォルトマッピングコード
マッピングステップが設定されると、データハブは、マッピングで指定されたソースからプロパティ値を抽出して、関連するエンティティプロパティにコピーするコードを生成します。この生成されたコードはカスタマイズできます。
すべてのマッピングファイルは、your-project-root/mappings/ディレクトリにローカルに保存されます。マッピング設定ファイルは、your-project-root/mappings/yourflowname-yourmappingstepname/yourflowname-yourmappingstepname-version.mapping.jsonにJSONファイルとして保存されます。例えば、ProductMappingという名前のマッピングの最初のバージョンは、your-project-root/mappings/MyFlow-ProductMapping/MyFlow-ProductMapping-0.mapping.jsonという名前で保存されます。
Tという名前のエンティティタイプのデフォルトコードには、マッピングに基づいて、extractInstanceTという名前の関数が常に含まれます。マッピングステップが実行されると、データハブはこの関数を呼び出して、各レコードのエンベロープ内のエンティティプロパティの値を更新します。この関数にカスタムコードを追加して、こうした値を変換できます。
extractInstanceT関数には、各エンティティプロパティの変数宣言が含まれています。この宣言では、ソースプロパティ SPの値を抽出して、エンティティプロパティEPに割り当てます。
let EPName = !fn.empty(source.xpath(pathToSP)) ? EPType(fn.head(source.xpath(pathToSP))) : null;
ソースデータにターゲットプロパティが含まれていない場合、エンティティプロパティはnull
に初期化されます。
プロパティの処理をカスタマイズするには通常、この変数を設定し、コードの他の部分はそのままにします。
次の条件が満たされると、データハブは、マッピングで指定されていないエンティティプロパティのデフォルトマッピングコードを生成します。
- ソースプロパティの名前は、エンティティプロパティと同じです。
- ソースプロパティの値は、エンティティプロパティのデータ型に直接キャストできます。
- ソースプロパティは、XPath式/_propName_でアクセスできます。
例:プロパティ名の変更
ソースプロパティの名前がSKUで、エンティティプロパティの名前がskuの場合、デフォルトのextractInstanceT関数には次の変数宣言が含まれます。
let sku = !fn.empty(source.xpath('//SKU')) ? xs.string(fn.head(source.xpath('//SKU'))) : null;
例:シンプルな型変換
ソースプロパティ(price)が数字を含む文字列であり、エンティティプロパティ(price)が10進数の場合、デフォルトのextractInstanceT関数には、ソース文字列を10進数にキャストする次の変数宣言が含まれます。
let price = !fn.empty(source.xpath('//price')) ? xs.decimal(fn.head(source.xpath('//price'))) : null;
ソースプロパティに数字以外の文字が含まれている可能性がある場合、この宣言はカスタマイズする必要があります。