다른 변환이 있는
변환의 출력을 링크하여 모델에서 모델로 변환과 JET(Java™ Emitter
Templates) 모델에서 텍스트로 변환의 조합을 작성할 수 있습니다. 이 기능을 사용하여
UML에서 Java로 변환과 같은 훨씬 복잡한 변환을 작성할 수 있습니다.
시작하기 전에
모델에서 모델로 변환을 실행하기 전이나 실행할 때
사용자가 링크하는 변환이 등록되어야 합니다.
이 태스크 정보
모델에서 모델로 변환 출력을 다른 변환에 링크하려면 다음을 수행하십시오.
- 프로젝트 탐색기 보기의 변환 맵핑
프로젝트에서 생성된 TransformationProvider Java 파일을 두 번 클릭하십시오. 예를 들어,
맵핑 프로젝트의 맵핑 모델이 Source2Target인 경우, Source2TargetTransformationProvider.java
파일을 두 번 클릭하십시오.
- createRootTransformation 메소드에서 addPostProcessingRules 메소드를
호출하십시오.
- addPostProcessingRules 메소드에서 적절한 변환에 대한
링크에 규칙을 추가하십시오.
- 모델에서 모델로 변환에 링크하려면 ChainRule 클래스의
인스턴스를 작성하십시오.
- JET 모델에서 텍스트로 변환에 링크하려면 JETRule 클래스의
인스턴스를 작성하십시오.
이 클래스의 생성자에 필요한 매개변수를 보려면
이 주제 끝에 있는 관련 링크를 참조하십시오.
주: Eclipse 문서 또는 개발자 안내서에 대한 링크와 같은 일부 정보는 제품 도움말의 주제에서만 사용 가능합니다.
- createRootTransformation 메소드에 대해 @generated 태그를
제거하거나 편집하십시오.
- 을 클릭하십시오.
결과
다음에 모델에서 모델로 변환을 실행할 때
변환이 생성하는 대상 모델은 사용자가 처리 규칙에서 지정하는
변환의 입력이 됩니다.
예
다음 코드 단편은 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$
}
};
}