関連付け可能なモデルに制約をかけたい
メタモデルでエンティティ間の参照関連を定義することで、参照先として関連付け可能なモデルの種類(メタモデルのクラス)を指定します。 その場合、参照先のモデルを追加しようとすると、プロジェクト内のすべてのモデルの中から、モデルの種類を条件に関連付け可能な候補が絞り込まれて一覧表示されます。
これに対して、特定範囲のモデルの中から、関連付け可能な候補が絞り込まれるように制約をかけられます。
例えば、次のメタモデル構造の場合について説明します。
- サブシステムとコンポーネントは関数を所有しています。・・・ 図の (2) と (4)
- モジュールは関数を利用します。・・・ 図の (5)
このメタモデル構造に従うと、モジュールで利用可能な関数の候補はサブシステムの関数とコンポーネントの関数の両方となります。 これに対して、モジュールでは、サブシステムの関数(図の (2))のみを利用でき、コンポーネントの関数(図の (4))は利用できないという、設計上の制約があるとします。
Next Design では、そのような制約を参照関連(図の(5))にかけることができます。
参照関連に制約をかけるには、メタモデルで定義されている参照関連に制約を追加します。 その制約では、メタモデル構造に基づいて、参照元エンティティから関連付け可能な参照先エンティティへのパス(以下、パス制約と記します)を指定します。 上記例では、参照元のモジュールを起点に参照先の関数へ至る図の(1)-(2)のパスを、次のように指定します。
$Parent.公開関数
パス制約をかけたら、そのパス制約が正しく機能することを検証しつつ、プロジェクト内でそのパス制約に違反する箇所がないか検証します。 これにより、既存のプロジェクトに後からパス制約を追加した場合や、パス制約を変更した場合にも、制約違反箇所を検出して対処できます。
以下では、エンティティ間の参照関連に対するパス制約について、次の順で説明します。
- パス制約を追加・変更する
- パス制約に従ってモデル編集する
- パス制約を検証する
パス制約を追加・変更する
エンティティ間の参照関連にパス制約を追加したり、追加したパス制約を変更したりするには、次の手順で行います。
操作手順
- 次のいずれかの方法で、パス制約を追加しようとするフィールドを保持しているエンティティを選択します。
- プロファイルナビゲータで該当エンティティが含まれているクラス図を表示し、該当エンティティを選択します。
- プロファイルナビゲータのツリーで該当エンティティを選択します。
- リボンから [表示] > [ペイン] > [インスペクタ] をクリックして右側にインスペクタを表示し、下方向へスクロールさせて [制約] 一覧を表示します。
- パス制約を追加するには、[制約] 一覧の右下にある [+] ボタンをクリックします。
- [制約の追加] ダイアログで次の項目を設定します。
- [表示名] と [名前] に制約の名前を入力します。
- [種類] で [パス制約] を選択します。
- [対象フィールド] で [利用関数への参照 (利用関数への参照)] を選択します。
- [パス] に、パス制約の記法に従って、関連付けを許可するパスを入力します。
- ダイアログの [OK] ボタンを押下すると、パス制約が追加された状態になります。
- 追加したパス制約を変更するには、インスペクタの [制約] 一覧に表示されている制約の上にポインタを移動して、編集アイコンをクリックします。
- [制約の設定] ダイアログで設定を変更し、[OK] ボタンを押下します。
note
- パス制約を追加・変更しても、既存のモデルはそのまま維持されます。
- 既存のモデルがパス制約を満たしているか確認するには、後述の「パス制約を検証する」に従って、エラーチェックを行います。
パス制約の記法
パス制約の書式と要素は次の通りです。
書式: {パスの要素}.{パスの要素}.・・・;{パスの要素}.{パスの要素}.・・・
{パスの要素} | 説明 |
---|---|
$Parent | 親のエンティティ |
フィールド名 | 関連先へのパスにあたるフィールド名 |
特殊記号 | 説明 |
---|---|
. (ピリオド) | パスの要素を連結する記号 |
; (セミコロン) | 複数のパス制約を or 条件で並記するための区切り記号 |
パス制約に従ってモデル編集する
パス制約が追加された状態で、ER ダイアグラムにてパス制約を満たさないモデルと関連付けようとすると、エラーが表示されて関連付けできなくなります。
そして、フォームなどで参照先モデルを追加しようとすると、パス制約を満たすモデル候補だけが一覧表示されます。
パス制約を検証する
プロジェクト内でパス制約に違反している箇所をチェックするには、次の手順で行います。
操作手順
- リボンから [ホーム] > [モデル] > [エラーチェック] をクリックすると、パス制約に違反している箇所があれば、エラー一覧に表示されます。
- エラー箇所にジャンプするには、エラー一覧に表示されているエラーをダブルクリックします。
- エラー一覧をクリアするには、次のいずれかの操作を行います。
- リボンから [ホーム] > [モデル] > [エラーチェック] 下部の [▼] をクリックし、[エラークリア] をクリックします。
- エラー一覧のツールバーにある [エラー内容をクリア] ボタンをクリックします。