0

Rational Software Architect 8 と OCL は初めてです。1 つはクラスに適用され、もう 1 つは関連付けに適用されます。詳細については、図を参照してください。

代替テキスト

ここで、OCL を使用して制約を表現したいと思います。クラスに <> ステレオタイプがある場合、そのクラスに接続されているすべての関連付けにRPAssignmentステレオタイプを持たせます。Permissionでステレオタイプ化されたクラスには、属性や操作がないことに注意してください。

OCL 制約をテストするための小さな例を作成しました。これは、RSA によって作成された、対応する xmi ファイルの関連ビットと同様に、図です。

モデル

    <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)

ここで些細なことを見逃していますか?

4

2 に答える 2

-1

ステレオタイプを作成するために制約を追加することはできません。関連付け時にステレオタイプを手動で作成することしかできません。制約は、ステレオタイプの作成ではなく、別のコンテキストで使用する必要があります。これは、この議論に対する私のペニーです。

于 2010-12-17T17:26:15.520 に答える