カスタムモデル化属性のリフォーム
カスタムモデル化属性を持つオブジェクトをシステム A からエクスポートしてシステム B にインポートするときに、システム B にインポートしているオブジェクトにカスタムモデル化属性が含まれていない場合、インポートは失敗します。カスタムモデル化属性は、再利用可能属性としてエクスポートする必要があります。このセクションでは、そのような場合にインポートが正常に行われるようにするための、エクスポートで使用するマッピング規則を記述する方法について説明します。
このタイプの規則を使用すると以下の目的を達成できます。
カスタムモデル化属性が無視されます。
タグ、特にルートタグがマッピング可能になります。これにより、インポートシステムが XML ファイルを処理できるようになります。
XML 内に指定された DTD がマッピング可能になります。これにより、新しい DTD が認識され、インポートシステムは XML ファイルを検証できるようになります。
たとえば、wt.part.WTPart を拡張したクラス SubTypeOfWTPart と、追加属性 mySubTypeAttr1 があると仮定します。エクスポート側は、顧客 DTD Customer-DTD.dtd を持つ、対応するハンドラです。Customer-DTD.dtd は、IXB フレームワークには含まれていません。エクスポートシステムには、SubTypeOfWTPart をエクスポートするためのハンドラがありますが、インポートシステムには、このハンドラがありません。
インポートを正常に行うために、エクスポートシステムは、上記の目的を達成するためのマッピング規則を提供します。この例では、属性 mySubTypeAttr1 を無視し、タグ SubTypeOfWTPart を WTPart に変更し、タグ Customer-DTD.dtd を、インポートシステムが認識できる DTD (standardX26.dtd など) に変更する必要があります。
IXB フレームワークでは、IXB でのエクスポートにおけるマッピング規則ファイルフォーマットとして、XML と XSL の 2 つをサポートしています。
マッピングファイルのフォーマットの例
XML ファイル exportMapping.xml および XSL ファイル exportMapping.xsl は、2 つのマッピングファイルの例です。
XML の例
<?xml version="1.0" encoding="UTF-8"?>
<userSettings>
<mappingRules>
<IGNORE>
<tag> mySubTypeAttr1</tag>
<value>*</value>
</IGNORE>
<CHANGE_TAG>
<tag>SubTypeOfWTPart</tag>
<newTag>WTPart</newTag>
<newDtd>standardX26.dtd</newDtd>
</CHANGE_TAG>
</mappingRules>
</userSettings>
XSL の例
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="SubTypeOfWTPart">
<xsl:choose>
<xsl:when test="name='simplePart'">
<mappingRules>
<IGNORE>
<tag> mySubTypeAttr1</tag>
<value>*</value>
</IGNORE>
</mappingRules>
<mappingRules>
<CHANGE_TAG>
<tag>SubTypeOfWTPart</tag>
<newTag>WTPart</newTag>
<newDtd>standardX26.dtd</newDtd>
</CHANGE_TAG>
</mappingRules>
</xsl:when>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
属性の無視
属性を無視するには、組み込みコマンドの <IGNORE> を次のような構文で使用します。
<IGNORE>
<tag>tagName</tag>
<path>pathOfTheTag</path>
<value>tagValue</value>
</IGNORE>
上記の構文では、以下の行はオプションです。
<path>pathOfTheTag</path>
上記の構文では、以下の行でアスタリスク (*) をワイルドカードとして使用できます。
<value>tagValue</value>
例 (wt.part.WTPart を拡張したクラス SubTypeOfWTPart と、1 つの追加属性 mySubTypeAttr1) を見ると、tagName は mySubTypeAttr1、tagValue は * (ワイルドカード) です。これにより、その属性値にかかわりなく、すべての mySubTypeAttr1 が無視されます。
mySubTypeAttr1 と同じ名前の属性を持つ別のオブジェクトタイプが存在し、それを無視してはならない場合は、<path>pathOfTheTag</path> を指定することにより、そのオブジェクトタイプが無視されないようにできます。たとえば <path> SubTypeOfWTPart</path> と指定すると、mySubTypeAttr1 は SubTypeOfWTPart の下のタグである場合にのみ、無視されます。
タグの名前の変更
タグを別な名前に変更するには、組み込みコマンド <CHANGE_TAG> を使用します。タグを別な名前に変更する構文は以下のとおりです。
<CHANGE_TAG>
<tag>oldTagName</tag>
<path>pathOfTheOldTag</path>
<newTag>newTagName</newTag>
<newDtd>newDTD</newDtd>
</CHANGE_TAG>
同様に、<newDtd> の値を指定することにより、DTD を変更できます。これらの変更を有効にする方法については、このトピックで前述されている 2 つのより詳細なファイルの例を参照してください。
上記の例では、以下の 2 行はオプションです。
<path>pathOfTheOldTag</path>
<newDtd>newDTD</newDtd>
一般的な管理オブジェクトの管理コンフリクト
このセクションでは、再利用可能属性定義、属性オーガナイザー、測定数量、測定システム、サブタイプ定義などの一般的ないくつかの管理アイテムのコンフリクトについて説明します。
可能性のあるコンフリクト
動作
解決方法またはメッセージ
再利用可能属性定義、属性オーガナイザー、およびサブタイプ定義の説明の不一致
ユーザーへの通知
"説明" に対する属性が異なります。属性 <...> の値は、データベースで見つかった値と異なります。有効な値は <...> ですが、見つかった値は <...> です。
再利用可能属性定義、属性オーガナイザー、およびサブタイプ定義の表示名の不一致
ユーザーへの通知
"表示名" に対する属性が異なります。属性 <...> の値は、データベースで見つかった値と異なります。有効な値は <...> ですが、見つかった値は <...> です。
再利用可能属性定義、属性オーガナイザー、およびサブタイプ定義の階層表示名の不一致
ユーザーへの通知
"階層の表示名" に対する属性が異なります。属性 <...> の値は、データベースで見つかった値と異なります。有効な値は <...> ですが、見つかった値は <...> です。
属性オーガナイザーが存在しない
ユーザーへの通知
属性組織 <...> が見つかりません。
詳細については、属性オーガナイザーの表示と編集を参照してください。
階層再利用可能属性定義の作成が許可されていない
ユーザーへの通知
階層定義 <...> は、許可されていません。
再利用可能属性定義の不一致
ユーザーへの通知
属性定義 <...><...> としてローカルで定義されていますが、<...> としてインポートされます。
詳細については、再利用可能属性の管理を参照してください。
再利用可能属性定義または属性オーガナイザーが存在しない
ユーザーへの通知
インスタンスベース属性 <...> の定義が見つかりません。
詳細については、再利用可能属性の管理を参照してください。
測定数量が存在しない
ユーザーへの通知
測定数量 <...> は存在しません。
ベース単位が異なる単位定義が存在する
ユーザーへの通知
表示単位が異なるまたは表示単位がオーバーライドされた単位定義 <...> の測定数量 <...> が存在します。
基本単位値と測定システムの不一致
ユーザーへの通知
基本単位値が異なる測定システム <...> が存在します。
測定システムが存在しない
ユーザーへの通知
測定システム <...> は存在しません。
タイプ定義が存在しない
ユーザーへの通知
タイプ定義が見つかりません: <...>
既存のサブタイプの再利用可能属性が XML ファイルよりも少ない
ユーザーへの通知
<...> に対して、インポートに関する IBA 値 (属性タイプ: <...>、パス: <...>、値: <...>) が有効です。
既存のサブタイプの再利用可能属性が XML ファイルよりも多い
ユーザーへの通知
<...> に対して、インポートに関する余分な IBA 値 (属性タイプ: <...>、パス: <...>、値: <...>) が見つかりました。
既存のサブタイプの制約が XML ファイルよりも少ない
ユーザーへの通知
<...> に対して、インポートに関するタイプ制約 (enforcementRuleClassname: <...>、bindingRuleClassName: <...>、enforcementRuleData: <...>、IBA 定義パス: <...>) が予期されています。
既存のサブタイプの制約が XML ファイルよりも多い
ユーザーへの通知
<...> に対して、インポートに関する余分なタイプ制約 (enforcementRuleClassname: <...>、bindingRuleClassName: <...>、enforcementRuleData: <...>、IBA 定義パス: <...>) が見つかりました。
これは役に立ちましたか?