2010-12-16 5 views
0

Rational Software Architect 8およびOCLを初めて使用しています。私は2つのステレオタイプからなるプロファイルを定義しました.1つはクラスに適用され、もう1つは関連に適用されました。詳細は図を参照してください。今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クエリを作成したいと思います。 –

関連する問題