Я новичок в Rational Software Architect 8 и OCL.Я определил профиль, который состоит из двух стереотипов, один применяется к классу, а другой применяется к ассоциации.См. Рисунок для более подробной информации.
![alt text](https://i.stack.imgur.com/cZWfb.png)
Теперь я хотел бы выразить ограничение, используя OCL: если у класса есть стереотип <>, тогда я хочу, чтобы все ассоциацииподключен к этому классу, чтобы иметь стереотип RPAssignment .Стоит отметить, что классы со стереотипом Permission не будут иметь атрибутов или операций.
Я создал небольшой пример для проверки моего ограничения OCL.Вот диаграмма, а также соответствующие биты соответствующего файла xmi, созданного RSA.
![model](https://i.stack.imgur.com/P4buz.png)
<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"/>
Мне кажется, что конец ассоциации, когдаон помечен как судоходный, является свойством, как атрибут.Я пробовал следующее ограничение на классы со стереотипами Permission (и несколько вариантов), но, похоже, оно работает неправильно.Вы могли заметить, что в примере, который я создал, ассоциация не имеет требуемого стереотипа, и поэтому проверка должна завершиться неудачей.Однако, это успешно.
self.base_Class.getAllAttributes()->forAll(att:Property | att.association.getAppliedStereotype('testProfile::RPAssignment') <> null)
Я что-то упускаю здесь тривиально?