2014-10-22 2 views
1

org.eclipse.uml2.uml 메타 모델을 준수하는 UML 모델이 있다고 가정합니다. 이 모델에 Class, PropertyownedAttribute 관계가 있다고 가정합니다. ownedAttributeEReference 동안 Ecore를 레벨에서 EClass의 가장 구체적인 EReferences 만 검색

상기 ClassPropertyEObjects이다.

내 작업은 다음과 같습니다. EObject이 있으면 EReferences을 모두 검색하십시오. 나는 다음과 같은 코드를 사용하여이 작업을 수행 할 수 있습니다 ownedElement, ownedMember, member, feature, attribute, ownedAttribute, role :

for (EReference eRef : myEObject.eClass().getEAllReferences()) { 
    if (eObject.eIsSet(eRef)) { 
     // found a relevant EReference 
    } 
} 

다시 위의 UML 예제로 돌아가서,이 코드는 다음 EReferences을 모두 확인합니다.

내 문제 : 식별 된 EReferences에서이 관계는 UML 표준에 따라 다른 모든 하위 집합으로 유지되므로 ownedAttribute 만 유지하려고합니다. 그러나 Ecore 메타 모델은 EReferences 간의 계층 구조를 지정하지 않습니다. 관심이없는보다 일반적인 EReferences을 걸러 내기 위해 어떤 접근법을 사용할 수 있습니까?

답변

0

'파생 된'참조를 필터링 할 수 있습니다 (org.eclipse.emf.ecore.EStructuralFeature.isDerived() == false).

+0

그렇습니다. 그 해결책은 나도 결국에 왔습니다. 필자의 경우 약간 개선 된 버전은 org.eclipse.emf.ecore.EStructuralFeature.isContainment() == true를 사용했다. 반대 방향에서 동일한 UML 관계를 나타내는 중복 EReferences가 제거 되었기 때문에. – Epicurus

관련 문제