2010-12-16 3 views
0

Rational Software Architect 8 및 OCL을 처음 사용합니다. 나는 두 개의 스테레오 타입으로 구성된 프로파일을 정의했습니다. 하나는 클래스에 적용되고 다른 하나는 연관에 적용되었습니다. 자세한 내용은 그림을 참조하십시오.Rational Software Architect 8의 UML 프로파일에 대한 OCL 제한 사항

alt text

지금, 나는 OCL을 사용하여 제약 조건을 표현하고 싶습니다 : 클래스가 <> 고정 관념을 가지고 있다면, 나는 RPAssignment 고정 관념을 가지고 그 클래스에 연결된 모든 연결을합니다. 으로 스테레오 타입이 지정된 클래스에는 속성이나 작업이 없습니다.

OCL 제약 조건을 테스트하기 위해 작은 예제를 만들었습니다. 다음은 RSA에서 생성 한 해당 xmi 파일의 관련 비트뿐만 아니라 다이어그램입니다.

model

<packageImport xmi:id="_dNGWEwhgEeCzvt5Jj9Wjpg"> 

    <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/> 

</packageImport> 

<packagedElement xmi:type="uml:Class" xmi:id="_sUoV4AhgEeCzvt5Jj9Wjpg" name="ProfileClass"/> 

<packagedElement xmi:type="uml:Class" xmi:id="_LkpUwAkoEeCs_vLJf1t9eg" name="Perm1"> 

    <ownedAttribute xmi:id="_PjkJ8Qk_EeCD2J3jYOsnVw" name="clas" visibility="private" type="_OWO0IAk_EeCD2J3jYOsnVw" association="_PjbAAAk_EeCD2J3jYOsnVw"> 

    <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PjkJ8wk_EeCD2J3jYOsnVw" value="1"/> 

    <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PjkJ8gk_EeCD2J3jYOsnVw" value="1"/> 

    </ownedAttribute> 

</packagedElement> 

<packagedElement xmi:type="uml:Class" xmi:id="_OWO0IAk_EeCD2J3jYOsnVw" name="class1"> 

    <ownedAttribute xmi:id="_PjbAAQk_EeCD2J3jYOsnVw" name="perm1" visibility="private" type="_LkpUwAkoEeCs_vLJf1t9eg" association="_PjbAAAk_EeCD2J3jYOsnVw"> 

    <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PjkJ8Ak_EeCD2J3jYOsnVw" value="1"/> 

    <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PjbAAgk_EeCD2J3jYOsnVw" value="1"/> 

    </ownedAttribute> 

</packagedElement> 

<packagedElement xmi:type="uml:Association" xmi:id="_PjbAAAk_EeCD2J3jYOsnVw" name="gets" memberEnd="_PjbAAQk_EeCD2J3jYOsnVw _PjkJ8Qk_EeCD2J3jYOsnVw"/> 

이 배가 통행 할 수있는 것으로 표시되는 연결의 끝, 단지 속성과 같은 속성입니다 저에게 seemes

. 나는 허가 -stereotyped 클래스 (및 몇 가지 변형)에서 다음 제약 조건을 시도했지만 올바르게 작동하지 않는 것 같습니다. 내가 만든 예에서 협회가 필요한 고정 관념을 갖고 있지 않아 검증이 실패한다는 것을 알았을 것입니다. 그러나 성공합니다.

self.base_Class.getAllAttributes()->forAll(att:Property | att.association.getAppliedStereotype('testProfile::RPAssignment') <> null) 

내가 여기 뭔가 사소한 것이 있습니까?

답변

0

스테레오 타입을 생성하기 위해 제약 조건을 추가 할 수 없습니다. 스테레오 타입은 연관성에 따라 수동으로 만 생성 할 수 있습니다. 제약 조건은 스테레오 타입 생성이 아닌 다른 컨텍스트에 사용해야합니다. 이것은이 토론에 내 페니입니다.

+0

여기서는 스테레오 타입을 만들려고하지 않습니다. 컨텍스트 클래스와 관련된 모든 클래스가'Permission»'으로 스테레오 타입인지 확인하는 OCL 쿼리를 만들고 싶습니다. –

관련 문제