이 샘플에는 다이어그램을 사용하여 모델에서 모델로 변환에 대한
입력을 지정하는 방법이 표시됩니다. 이 주제는 이러한 종류의 변환을
실행 및 설정하는 방법을 설명합니다.
시작하기 전에
샘플을 설정하려면 "다이어그램을 사용하여 입력을 지정하는
모델에서 모델로 변환에 대한 설정 지시사항" 주제의
지시사항을 사용하십시오.
- 런타임 Workbench에서 소스 및 변환 구성을
검토하십시오.
- 다이어그램 및 모델을 펼치고
다이어그램 및 모델 요소가 소스 프로젝트에 포함되어 있음을
참고하십시오.
- run test.tc를 마우스 오른쪽 단추로 클릭하고 를 클릭하십시오.
- 변환 구성 편집기에서 특성 탭을 클릭하십시오. 특성 DiagramName에 지정된 값은 프로젝트의 다이어그램 중 하나인
Main1입니다.
- 변환 구성 편집기에서 기본 탭을 클릭한 다음
실행을 클릭하십시오.
- 변환의 출력을 검토하십시오. 출력에는
입력 다이어그램 Main1에서 지정된 Class2, Class4 및 Class6이
포함됩니다.
- 변환이 설정되는 방법을 이해하려면
작업공간으로 가져온 프로젝트를 검토하십시오.
- src를 펼치고 com.ibm.xtools.transform.authoring.examples.classesindiagram을 펼친 후
TransformationProvider 클래스 ClassesInDiagramTransformationProvider를 여십시오.
- TransformationProvider 클래스가
변환 컨텍스트의 다이어그램 이름을 검색하여 글로벌 변수에 저장함을
참고하십시오. 코드는 다음과 같습니다.
protected RootTransformation createRootTransformation(ITransformationDescriptor descriptor) {
return new RootTransformation(descriptor, new MainTransform() {
@Override
public void execute(ITransformContext context) throws Exception {
diagramName = (String)context.getPropertyValue("diagramname");
addGeneratedTransformElements(registry);
}
});
}
public static String diagramName = null;
- 모델을 펼치고
맵핑 파일 ClassesInDiagram.mapping을 여십시오.
- Model2Model 맵핑 선언에서 두 번째 packagedElement-to-packagedElement 서브맵을 마우스 오른쪽 단추로 클릭한 후 특성에
표시를 클릭하십시오. 이 서브맵은
Class2Class 맵핑입니다.
- 특성 창에서
사용자 정의 추출기 탭을 클릭하십시오. 사용자 정의 추출기는 지정된 다이어그램의 컨텐츠를 참조하여 처리해야 하는 클래스를
판별하는 데 글로벌 변수를 사용합니다. Package2Package 맵핑 선언의 Class2Class 서브맵 맵핑에 대한 사용자 정의 추출기도
이와 동일합니다.
- 런타임 Workbench에 있는 특성 페이지의
변환 구성 편집기에서 diagramName 필드의 값을
"Main2"로 바꾸고 변환을 다시 실행하십시오. 이번에는 변환에 실패합니다.
구성에서 다이어그램의 이름이 Main2로 지정되면 변환에 실패하는데, 그 이유는
소스 모델에는 Class5에서 Class까지의 일반화가 포함되지만 Class1이 지정된 다이어그램에 표시되지
않아 대상 모델에 복사되지 않기 때문입니다.
사용자가 변환을 작성하는 경우,
모든 내부 모델 참조가 해결될 수 있도록 동일한 모델에 포함된
모든 참조 오브젝트가 변환에 포함되어야 함을 참고하십시오.