高度なカスタマイズ > ビジネスロジックのカスタマイズ > Windchill で標準を使用したデータ交換 > EXPRESS を使用した STEP データ交換 > STEP の基本 > メタデータマッピングの設定 > ログ作成 > マッピング動作のカスタマイズ
  
マッピング動作のカスタマイズ
クラス図
カスタマイズ
* 
詳細については、前のセクションのクラス図とデータ構造テーブルを参照してください。
既成で用意されているマッピングプロセッサ実装の数は 2 つのみです。
wt.ixb.publicforapps.extendedmapping.processor.SingleTagMappingProcessor は、regex. のサポートを含む単一のタグマッピングを処理します。
wt.ixb.publicforapps.extendedmapping.processor.MultiTagMappingProcessor は、タグ (条件タグを含む) が複数あるマッピングを処理します。また、このプロセッサは、条件タグと非条件タグの両方で regex をサポートします。
前述の 2 つの既成のマッピングプロセッサは、単純な文字列一致の概念において機能します。ほとんどの場合、適切なマッピング動作を達成するには、これら 2 つのクラスで十分です。
マッピングデータおよびインポートするオブジェクトデータの考慮対象のこれらの文字列値にビジネスロジックを追加する必要がある場合は、以下のガイドラインに基づいて、カスタマイズされたマッピングプロセッサ/マッパーを作成する必要があります。
これら 2 つのマッピングプロセッサの動作をカスタマイズするには、ユースケースに基づいて SingleTagMappingProcessor または MultiTagMappingProcessor を拡張し、postprocessMappedValue メソッドをオーバーライドします。メソッドパラメータの詳細は、次のとおりです。
/** Customization point to process Mapped value as per business logic.
* OOTB implementation returns the mapped value as-is
 * @param tag The Tag to be evaluated for Mapping
* @param parentTags Parent Tags separated by <code>TAG_SEPARATOR</code>.
* This would be null if tagValue represents the full Tag as defined in
* IXMappingConfiguration.xml
    * @param value The source value for the Tag
    * @param mappedValue The mapped value of the source value for the Tag
    * @param srcElement The IXBElement representation of the object
* data to be imported
    * @return The Mapped value
    * @throws WTException
    */
   protected String postprocessMappedValue(String tag, String parentTags,
String value, String mappedValue,
IxbElement srcElement) throws WTException

IXMappingConfiguration.xml に複数の条件タイプのタグと正規表現があるマッピング定義の場合、一致するマッピングが複数ある可能性があります。このような場合、既成の実装は、満たされた最大の条件との一致を返すロジックを使用します (マッピングですべての条件が提供されることなく、複数の一致にいくつかのマッピングがある可能性があります)。マッピングで定義されている複数の正規表現がソースオブジェクト値と一致する場合は、java.util.TreeMap によって実装されている自然な並べ替え順序が使用され、最初の一致がマッピング値として使用されます。
一致するキーを取得する前述の動作はカスタマイズできます。
以下の詳細に基づいて、wt.ixb.publicforapps.extendedmapping.mapper.MultiTagComplexMapper クラスを拡張し、getBestMatchKey メソッドをオーバーライドします。
/** Get the best matching key to be used to get the mapped values
    * OOTB implementation returns the first matching key.
    * This api can be overridden to return any other matching key from
    * @param matchingKeys
    *   All matching keys satisfying the Mapping conditions
    * @return The first key out of all matching keys
    */
   protected List<String> getBestMatchKey(List<List<String>> matchingKeys)
次に、ユースケースに基づいて SingleTagMappingProcessor または MultiTagMappingProcessor を拡張し、ユースケースに基づいて保護されているマッパー getMapper() メソッドをオーバーライドして、前述のマッパーを返します。
前述の両方のカスタマイズにおいて、拡張したマッピングプロセッサを <Windchill Home>/codebase/registry/ixb/mapping/IXMappingConfiguration.xml の適切なマッピング要素属性 "mappingProcessor" に追加する必要があります。たとえば、MultiTagMappingProcessor からの拡張クラスが mycustomizationpackage.MyMultiTagMappingProcessor である場合、mappingProcessor 属性には mycustomizationpackage.MyMultiTagMappingProcessor が割り当てられる必要があります。この例の値はすべて例を示すためのものであり、実際にはユーザーが定義したマッピングに基づいて指定される必要があります。
<Mapping preferenceDefinition="ExtendedLifecycleMapping" separator=";"
mappingProcessor="mycustomizationpackage.MyMultiTagMappingProcessor">
<Tag value="externalTypeId" condition="true" regex="true"/>
<Tag value="lifecycleInfo/lifecycleTemplateName"/>
<Tag value="lifecycleInfo/lifecycleState"/>
</Mapping>