拡張Associationを置換した場合、AssociationのXMLファイルに追加したコードや、新規の関連元オブジェクトおよび関連先オブジェクトなど、元のAssociationに行った変更すべてを、アプリケーションのその他の部分のインスタンスすべてに対して使用可能にできます。拡張Associationを置換する場合は、必ず、これによって関連付けられている拡張エンティティ・オブジェクトも置換する必要があります。これは、拡張エンティティ・オブジェクトが、通常は、元のエンティティ・オブジェクトにはない新規の属性を持つためです。また、Associationにより、関連元および関連先のロール属性の定義でこれらの新規の属性が使用される可能性があるためです。
図で示したように、Emp
エンティティ・オブジェクトを拡張した際にLoc
(位置)属性を追加したとします。それにより、NewEmpEx
とNewDeptEx
の間に拡張Associationを作成する際に、関連元および関連先のロール属性のリストにLoc
を追加できます。その後、アプリケーション全体で拡張Associationを置換する場合は、NewEmpEx
(Emp
はLoc
属性を持たないため)およびNewDeptEx
(Dept
はLoc
をソース・ロール属性として認識しないため)も置換する必要があります。
アプリケーション全体で拡張Associationを置換するには、ビジネス・コンポーネント・プロジェクト・ウィザードの「置換」ページを使用します。Associationを置換する手順は、「ビジネス・コンポーネントの置換手順」を参照してください。フレームワークにより、プロジェクトの .jpx
ファイルのSubstitutes
セクションに追加が行われます。このセクションには、元のAssociationの名前と、それにかわって使用される拡張Associationの名前が示されます。
たとえば、ビジネス・コンポーネント・プロジェクト・ウィザードの「置換」ページを使用し、アプリケーション全体で、Association EmpForeignKeyAssoc
を拡張Association NewFKAssocEx
で置換した場合、フレームワークでは、プロジェクトのXMLファイルのSubstitutes
セクションに1行が追加されます。このプロジェクトのXMLファイルの一部を次に示します。
...
<Substitutes>
<Substitute OldName ="package27.Emp" NewName ="Extender.NewEmpEx" />
<Substitute OldName ="package27.EmpForeignKeyAssoc" NewName ="Extender.NewFKAssocEx" />
<Substitute OldName ="package27.Dept" NewName ="Extender.NewDeptEx" />
</Substitutes>
...
ここでは、プロジェクト・ファイル内の元のエンティティ・オブジェクトEmp
およびDept
を、拡張エンティティ・オブジェクトNewEmpEx
およびNewDeptEx
ですでに置換しているものとします。