org.eclipse.uml2.uml 메타 모델을 준수하는 UML 모델이 있다고 가정합니다. 이 모델에 Class
, Property
및 ownedAttribute
관계가 있다고 가정합니다. ownedAttribute
가 EReference
동안 Ecore를 레벨에서 EClass의 가장 구체적인 EReferences 만 검색
Class
및
Property
는
EObjects
이다.
내 작업은 다음과 같습니다. 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
을 걸러 내기 위해 어떤 접근법을 사용할 수 있습니까?
그렇습니다. 그 해결책은 나도 결국에 왔습니다. 필자의 경우 약간 개선 된 버전은 org.eclipse.emf.ecore.EStructuralFeature.isContainment() == true를 사용했다. 반대 방향에서 동일한 UML 관계를 나타내는 중복 EReferences가 제거 되었기 때문에. – Epicurus