변환 출력을 다른 변환에 링크

다른 변환이 있는 변환의 출력을 링크하여 모델에서 모델로 변환과 JET(Java™ Emitter Templates) 모델에서 텍스트로 변환의 조합을 작성할 수 있습니다. 이 기능을 사용하여 UML에서 Java로 변환과 같은 훨씬 복잡한 변환을 작성할 수 있습니다.
시작하기 전에
모델에서 모델로 변환을 실행하기 전이나 실행할 때 사용자가 링크하는 변환이 등록되어야 합니다.
이 태스크 정보
모델에서 모델로 변환 출력을 다른 변환에 링크하려면 다음을 수행하십시오.
  1. 프로젝트 탐색기 보기의 변환 맵핑 프로젝트에서 생성된 TransformationProvider Java 파일을 두 번 클릭하십시오. 예를 들어, 맵핑 프로젝트의 맵핑 모델이 Source2Target인 경우, Source2TargetTransformationProvider.java 파일을 두 번 클릭하십시오.
  2. createRootTransformation 메소드에서 addPostProcessingRules 메소드를 호출하십시오.
  3. addPostProcessingRules 메소드에서 적절한 변환에 대한 링크에 규칙을 추가하십시오.
    • 모델에서 모델로 변환에 링크하려면 ChainRule 클래스의 인스턴스를 작성하십시오.
    • JET 모델에서 텍스트로 변환에 링크하려면 JETRule 클래스의 인스턴스를 작성하십시오.
    이 클래스의 생성자에 필요한 매개변수를 보려면 이 주제 끝에 있는 관련 링크를 참조하십시오.
    주: Eclipse 문서 또는 개발자 안내서에 대한 링크와 같은 일부 정보는 제품 도움말의 주제에서만 사용 가능합니다.
  4. createRootTransformation 메소드에 대해 @generated 태그를 제거하거나 편집하십시오.
  5. 파일 > 저장을 클릭하십시오.
결과
다음에 모델에서 모델로 변환을 실행할 때 변환이 생성하는 대상 모델은 사용자가 처리 규칙에서 지정하는 변환의 입력이 됩니다.
다음 코드 단편은 createRootTransformation 메소드에서 수정된 @generated 태그와, 다른 변환을 호출하는 add 사후 처리 규칙을 보여 줍니다.
  • 아래에 있는 코드 단편의 add 사후 처리 규칙은 변환 ID가 MyM2MTransformation으로 설정된 모델에서 모델로 변환을 호출합니다.
    /**
         * Creates a root transformation. You may add more rules to the transformation here
         * <!-- begin-user-doc -->
         * <!-- end-user-doc -->
         * @param transform The root transformation
         * @generated NOT
         */
        protected RootTransformation createRootTransformation(ITransformationDescriptor descriptor) {
            return new RootTransformation(descriptor, new MainTransform()) {
                protected void addPostProcessingRules() {
                    add(new ChainRule("MyM2MTransformation", TARGET_CONTAINER)); //$NON-NLS-1$
                }
            };
        }
  • 아래에 있는 코드 단편의 add 사후 처리 규칙은 변환 ID가 MyJetTransformation으로 설정된 JET 변환을 호출합니다.
    /**
         * Creates a root transformation. You may add more rules to the transformation here
         * <!-- begin-user-doc -->
         * <!-- end-user-doc -->
         * @param transform The root transformation
         * @generated NOT
         */
        protected RootTransformation createRootTransformation(ITransformationDescriptor descriptor) {
            return new RootTransformation(descriptor, new MainTransform()) {
                protected void addPostProcessingRules() {
                    add(new JETRule(“MyJetTransformation")); //$NON-NLS-1$
                }
            };
        }

피드백