2013-04-15 1 views
0

그래픽 요소를 조작하기위한 편집기를 작성 중이며, 각 요소는 API 사양의 요소 유형을 나타내야합니다.그래픽 모델에서 specefic API로 코드를 생성하는 방법은 무엇입니까?

API의 요소는 요소 A가 요소 B의 하위가 될 수 없거나 요소 C와 연결할 수없는 것처럼 몇 가지 클래스 광고 인터페이스에 기본이 있습니다. ..

편집기는 사용자가 작성한 코드와 일치하도록 코드를 생성 할 수 있어야하며 생성 된 코드는 사용자가 작성한 코드에 해당하는 API의 구현이어야합니다.

모델 기반 아키텍처와 그래픽 모델에서 임 플리 멘 테이션으로 코드를 생성하는 방법에 대해 (실제로는) 알지 못합니다.

API 사양을 구현하는 비즈니스 모델에 그래픽 모델 (크기, 좌표 등의 그래픽 정보 포함)을 혼합하고 싶지는 않습니다. 나는이 문제를 내가 직면하고 바로 여기에 편집기 을 구축하기위한 이클립스 GEF를 사용하고

:

그래픽 모델과 비즈니스 모델이 분리되어 있기 때문에

, 내가 기전력 모델을 정의하는 생각의 편집기 그 emf 모델의 편집자가 될 것입니다. emf 모델을 기본 구성 요소로 사용하여 편집기에서 그려진 모델을 API 사양의 해당 구현으로 변환 할 수 있습니까?

나는 그래픽 모델과 비즈니스 모델이 구분되어 있기 때문에 사용법 제약 조건을 사용하여 어떤 종류의 문법을 구현해야한다 (코드 생성과 문법에 대해 말하기). 나는 xtext와 함께 간다?

eclipse framework tool은 내가하고 싶은 일을하도록 도와 줄 수 있습니까?

답변

0

이미 그래픽 편집기가있는 경우 코드 생성을 실행하기 위해 하위 수준의 텍스트 모델 형식 (예 : antlr/Xtext 사용)을 만들 필요가 거의 없습니다. 특히 모델이 이미 EMF에있는 경우.

EMF 모델을위한 다양한 코드 생성기 기술이 있습니다 (예 : Acceleo 또는 Xtend를 사용할 수도 있음). 이 발전기는 EMF 모델을 입력으로 사용하고 사용중인 API에 특정한 출력 코드를 제공합니다. 두 도구 모두 템플릿을 정의하여 출력 파일을 수동으로 조합 한 다음이 템플릿의 결과를 직렬화해야합니다. 이 직렬화는 Acceleo에서 자동으로 수행되거나 Xtend에서 Java와 유사한 API를 사용하여 수행 할 수 있습니다.

모델이 EMF가 아닌 경우에도 Xtend를 직접 사용할 수 있습니다. 그러나 Acceleo는이 경우 유용하지 않습니다.

+0

당신의 대답은 매우 유용합니다. – user1125516

관련 문제