2011-12-06 1 views
3

인스턴스 (모델 자체)에서 eClass (ecore의 메타 클래스)를 참조 할 수 있습니까?Ecore Eclasses를 참조하십시오. xmi 인스턴스에서 eClass를 참조 할 수 있습니까?

모든 메타 클래스 (eClasses)가 파생 된 기본 클래스 BASECLASS가 포함 된 ecore 메타 모델 M2.ecore가 있다고 가정 해 보겠습니다. BASECLASS는 M2.ecore 메타 모델의 모든 eClasses의 수퍼 클래스입니다. M이라는 클래스 중 하나는 BaseClass로를 사용하므로 ECLASS M과 BaseClass로 사이의 eReference가 :

ClassA ----inherits_from------|> BASECLASS 
ClassM ----inherits_from------|> BASECLASS 
ClassM ----uses-(eReference)---> BASECLASS 

그런

M2.ecore 나는 ECLASS M의 인스턴스 INSTANCE_M이는

M2.xmi

INSTANCE_M -----eReference---> (M2.ecore).Class_A 
,536 : 나는 예를 들어, M2.ecore의 eClasses에 연결할 것을

이것은 메타 모델의 클래스를 연결하고 싶습니다. 분명히 Sample Reflective Editor를 사용하면 인스턴스 만 연결하고 메타 클래스는 연결할 수 없습니다.

왜? 이 문제를 해결하는 방법?

미리 모든

답변

0

먼저 주셔서 감사합니다, 나는 당신의 필요 EMF가 작동하는 방식에 대해 (방법으로)가는 것을 말할 것입니다. EMF를 사용하면 개념을 정의하는 모델 ("메타 모델"이라고 부름)과 인스턴스 (모델을 모델이라고 부름)를 정의 할 수 있습니다. 원하는 것은 모델 요소와 메타 모델 요소를 포함 할 모델입니다. 모델에 나타날 수있는 개념은 메타 모델에서 정의해야하지만 메타 모델은 일반 모델 일뿐입니다. 표준 EMF 워크 플로에서는 Ecore (메타) 모델의 인스턴스 일 뿐이며 Ecore는 EMF 모델 자체의 인스턴스이기도합니다. 그래서 당신은이 상황이 : -> M2.ecore --instanceof -> Ecore.ecore --instanceof -

M2.xmi --instanceof> Ecore.ecore ...

을 그리고 당신이 원하는 M2.ecore에 정의 된 개념의 인스턴스와 Ecore.ecore에 정의 된 개념의 인스턴스를 조작하는 M2.xmi (M2.ecore 모델 인 인스턴스 중 하나)

예를 들어 Ecore.ecore의 개념을 참조하는 "myMetaEntity"속성과 함께 개념을 포함하는 M2.ecore 모델을 만들 수 있습니다. ecore 편집기에서 "load resource"를 마우스 오른쪽 버튼으로 클릭 한 다음 "registered packages"에서 선택하고 "http://www.eclipse.org/emf/2002/Ecore"및 "Ok"를 선택하십시오. "가져 오기"를 마치면 Ecore.ecore 모델에서 요소에 대한 참조를 만들 수 있습니다. 예를 들어 "EClass"유형의 myMetaEntity 특성을 만들 수 있습니다. 이것을 사용하여 M2.ecore 모델에서 EClass를 참조 할 수 있지만 M2.ecore에 정의 된이 속성은 M3.ecore 또는 XYZ.ecore에서도 "EClass"개념의 모든 인스턴스를 허용한다는 것을 명심하십시오.

인스턴스의 메타 클래스에 대한 링크를 원한다면 "eClass()"메서드를 사용할 수 있지만 인스턴스 요소와 메타 클래스간에 "복잡한"링크를 실제로 만들려면 실제로는 할 수 없지만 meta-metamodel에서 개념을 가져 오는 메타 모델을 만들 수 있습니다. (나는 그 이름을 너무 싫어합니다 ...) 여기 Ecore.ecore에서 두 가지를 조작 할 수있는 기회를 얻으려고하지만 "판도라의 상자"도 열 수 있습니다. Ecore.ecore에 정의 된 개념의 인스턴스를 조작 할 수있는 개념은 M2.ecore의 개념 인 경우에만 해당합니다.

사용자가 무엇을하고 있는지, 또는이 문제의 미묘함에 익숙하지 않은 사용자가 API/UI 또는 기타 기능을 제공하기 때문에이 항목을 조작하지 않으면 잘 처리되지만 계속 유지해야합니다. 마음에서 당신은 개념적으로 까다로운 작업을하고 싶습니다 (아직은 EMF로 기술적으로 쉽게).