변환이 수행되는 방법을 보기 위해, 문제 해결 과정을 고려해 보겠습니다. 사용자가 변환을 작성하고, Package2Package 맵핑 선언에서 Class2InterfaceRealization 맵핑 선언을 사용하여 인터페이스 실현(realization)을 작성한다고 가정합니다. 그러나 서브맵 맵핑에 대한 대상 기능, UML 클래스의 인터페이스 실현(realization)은 Package2Package 맵핑 선언에서 표시되지 않습니다. 이 누락된 대상 기능을 어떻게 맵핑해야 할까요?
인터페이스 실현(realization)을 대상으로 제공하기 위해 packageElement 기능에서 Package2Package 맵핑 선언(그림의 항목 1)의 packageElement 기능으로 서브맵을 작성합니다. 이 서브맵은 해당 상위 Package2Package 맵핑 선언을 반복해서 참조하고 이런 방식으로 중첩된 패키지 및 해당 컨텐츠에 대한 지원을 제공합니다. 그러므로 이제 packageElement 기능에서 packageElement 기능으로 추가 서브맵을 정의할 수 있습니다. 서브맵은 기타 맵핑 선언(Class2Class(항목 2) 및 Class2Interface(항목 3))을 참조할 수 있습니다.
Class2Class 맵핑 선언을 작성할 때, 입력으로 전체 클래스 요소를 포함하고 있는 서브맵(항목 4)을 사용할 수 있습니다. 출력의 경우 interfaceRealization을 선택합니다. 그 결과로 Class2Interface 맵핑 선언을 사용할 수 있으며, 이를 통해 입력으로 전체 클래스 요소 및 출력으로 공급자 기능 및 클라이언트 기능을 포함하고 있는 두 개의 추가 서브맵(항목 5 및 6)을 작성합니다. 변환 코드를 생성할 때 여기서 정의된 서브맵은 출력 오브젝트가 아닌 기타 맵핑 선언에서 생성된 변환이 작성한 출력 오브젝트에 대한 참조를 작성합니다.
변환 코드를 생성할 때 공급자 및 클라이언트 모두는 입력 UML 오브젝트에서 생성된 UML 오브젝트를 참조해야 합니다. 출력 오브젝트를 참조에 지정하려면 생성된 변환이 동일한 입력에서 특정 출력 오브젝트(클래스 또는 인터페이스)를 생성해야 하는 맵핑 선언(Class2Class 또는 Class2Interface)을 식별하도록 서브맵 정의를 작성하십시오.
세부사항은 샘플 변환 구성을 검토하십시오. 그림에서, 서브맵에서 맵핑 선언의 맨 위를 가리키는 화살표는 서브맵이 맵핑 선언을 참조함을 표시합니다. 예를 들어, 레이블이 "1"로 지정된 화살표는 Package2Package 맵핑 선언을 참조합니다.
