この章の内容は次のとおりです。
JDeveloperは、アプリケーション用のソフトウェアおよびシステム開発をモデル化するために6つの標準UMLダイアグラム・タイプと4つのビジネス・サービス・ダイアグラム・タイプをサポートしています。
ダイアグラム・タイプはすべて、「新規ギャラリ」ウィザードを使用して作成でき、JDeveloperダイアグラム・エディタ、「コンポーネント」ウィンドウおよび「プロパティ」ウィンドウでサポートされます。
JDeveloperでは、6つの標準UMLダイアグラム・タイプが用意されています。
アクティビティ図。調整されたアクションとしてシステム動作をモデル化します。アクティビティ・オブジェクトを使用して、出荷や注文処理などのビジネス目標用のタスクなどのビジネス・プロセスをモデル化できます。
パーティション付きアクティビティ図。1つのアクティビティをモデル化して、そのパーティションを縦割り(レーン)として表示します。
クラス図。システムの構造をモデル化します。既存のクラス、属性、操作、アソシエーション、汎化およびインタフェース実現のアーキテクチャをインスペクトするために使用します。
シーケンス図。システム動作のトレースをイベントのシーケンスとしてモデル化します。シーケンス図は、主にこれを、時間順のオブジェクト間のメッセージとして示します。
ユースケース図。システムに想定される動作をモデル化します。ユースケース図は、アクター、ユースケース、およびそれらの通信をまとめたものです。
プロファイル図。プロファイルとステレオタイプを使用してUML拡張機能を定義します。
ビジネス・サービスをサポートする4つのダイアグラムがあります。
ビジネス・コンポーネント・ダイアグラム。 エンティティ・オブジェクト、ビュー・オブジェクト、アプリケーション・モジュール、およびこれらの関係をモデル化します。
データベース・ダイアグラム。オンライン・データベース表とオフライン・データベース表、およびその関係に加え、ビュー、マテリアライズド・ビュー、シーケンス、パブリック・シノニムとプライベート・シノニムをモデル化します。
EJBダイアグラム。システム内のエンティティBean、セッションBean、メッセージドリブンBeanおよびその関係をモデル化します。
Javaクラス図。Javaクラス、Enum、フィールド、メソッド、参照、継承関係および実装関係における関係と依存性をモデル化します。
変換は、UMLクラスからJavaオブジェクトを作成するプロセス、またはJavaクラスからUMLクラスを作成するプロセスです。次のタイプの変換があります。
UML-Java変換。「UML-Java変換」を参照してください。
UML-オフライン・データベース変換。UMLクラス図をオフライン・データベースに変換します(逆もまた同様)。「UML-オフライン・データベース変換」を参照してください。
UML-ADFビジネス・コンポーネント変換。UMLクラスをエンティティ・オブジェクトに変換します。「UML-ADFビジネス・コンポーネント変換」を参照してください。
Oracle JDeveloperには、アプリケーション・システムをモデル化するための多様なツールと各種ダイアグラムの選択肢が用意されています。ダイアグラムと要素を作成するための便利なウィザード、および編集ウィンドウを開いたままで様々な要素を簡単にドラッグ・アンド・ドロップしたり編集したりできる「コンポーネント」ウィンドウと「プロパティ」ウィンドウが用意されています。
図5-1は、クラス図が表示されているダイアグラム・エディタ・ウィンドウ、「アプリケーション」ウィンドウおよび「コンポーネント」ウィンドウを示しています。「アプリケーション」ウィンドウ上のダイアグラムをダブルクリックして、これを開き、「コンポーネント」ウィンドウからダイアグラム・エディタにコンポーネントをドラッグ・アンド・ドロップします。
ダイアグラムを作成したら、コンポーネントを「コンポーネント」ウィンドウからダイアグラムに追加します。キーストローク・コマンドで、ダイアグラムのズーム・インおよびズーム・アウトを行ったり、元のサイズや元のサイズ率で表示したりできます。終了したら、ポップアップ・メニューやメイン・メニューのコマンドを使用して、ダイアグラムをイメージとして公開したり、印刷したりできます。
図5-1 クラス図の作成例
図5-2 クラス図の例を表示する「コンポーネント」ウィンドウ
「新規ギャラリ」ウィザードにより、コンポーネントを含める準備ができたダイアグラムが作成されます。このウィザードでは、ダイアグラム・タイプの選択、パッケージの指定、「コンポーネント」ウィンドウでアクセスするコンポーネントの選択を行うことができます。図5-3は、クラス図の作成例のダイアログを示しています。
新規のダイアグラムを作成するには:
ダイアグラム要素は「コンポーネント」ウィンドウで利用でき、このウィンドウからこれらをダイアグラムにドラッグできます。要素を視覚的に管理したり、要素のプロパティを管理するための様々なツールが用意されています。
「構造」ウィンドウで要素名をクリックします。ダイアグラムで要素が選択されます。ダイアグラムのサムネイル・ウィンドウを使用して要素を見つけることもできます。ダイアグラムのサムネイル・ビューを表示するには、「アプリケーション」ウィンドウまたはダイアグラムの背景をクリックしてダイアグラムを選択し、「ウィンドウ」→「サムネイル」を選択します。表示領域ボックスをドラッグし、ダイアグラムのサムネイル・ビューの要素上に置きます。対応する要素がメイン・ダイアグラムのビューに表示されます。
ダイアグラムからすべての要素を選択し、そのすべての要素に対して、位置合せ、コピー、削除、移動などのアクションを同時に実行することができます。ダイアグラムの表面をクリックして、任意の要素を選択し、「編集」→「すべて選択」を選択します。ダイアグラムの表面上でドラッグして領域を選択し、すべてまたは複数の要素を選択することもできます。
同じタイプの多くの要素を編集または管理する必要がある場合、「すべて選択」オプションを使用します。
同じタイプの要素をすべて選択するには、次のようにします。
要素グループを選択し、特定の要素を除外する場合、「選択解除」オプションを使用します。要素を1つずつ選択するより簡単です。
選択した要素グループから、要素の選択を解除するには、次のようにします。
要素をグループ化すると、複数の要素をロックして完全なビジュアル・コンテナにすることができます。
要素のグループを形成するには:
「グループの管理」機能を使用して要素をグループに追加またはグループから削除、要素を他のグループへ移動、またはグループを他のグループに追加または他のグループから削除します。
ダイアグラム上でグループ化された要素を管理するには、次のようにします。
次のいずれかの方法で「プロパティ」ダイアログを開きます。
ダイアグラムで要素をダブルクリックします。
ダイアグラム上の要素を右クリックし、そのコンテキスト・メニューから「プロパティ」を選択します。
「プリファレンス」ダイアログを使用して、ダイアグラムに追加する要素のデフォルトのビジュアル・プロパティを定義します。
ダイアグラムに追加するダイアグラム要素のデフォルト設定を変更するには:
図5-3 クラス図の「プリファレンス」ダイアログ
「プリファレンス」ダイアログを使用して、要素間でプリファレンスをコピーできます。
ビジュアル・プロパティを要素にコピーして貼り付けるには、次のようにします。
要素のサイズを変更するには、要素が目的のサイズになるまでグラッブ・バーをドラッグします。初期ノードや終了ノードなど、一部のダイアグラム要素はサイズを変更できません。
一部の要素タイプには内部グラッブ・バーもあり、要素を選択するとそれが表示されます。内部グラッブ・バーは、ダイアグラム要素内のコンパートメントのサイズを変更する際に使用します。
ダイアグラム要素がダイアグラムの表示端に向かってサイズ変更されると、ダイアグラムは自動的にスクロールします。要素がサイズ変更され、ダイアグラム上から離れると、新しいダイアグラム・ページが追加されます。
ダイアグラム要素をサイズ変更するには、次のようにします。
現在表示されている要素に関連するクラスおよびインタフェースを、ダイアグラムに取り込むことができます。これには、選択したクラスまたはインタフェースによって拡張、実装または参照されているクラスまたはインタフェースが含まれます。
次のオプションから選択して、ダイアグラム上に関連クラスを表示します。
ダイアグラム上でクラスまたはインタフェースを選択し、「ダイアグラム」→「表示」→「関連する要素」を選択します。
ダイアグラム上でクラスまたはインタフェースを右クリックし、「ダイアグラム」→「表示」→「関連する要素」を選択します。
ダイアグラム上で要素をドラッグする方法が、最も簡単に要素を移動できる方法です。より広い距離で要素を移動するには、切り取って貼り付けるという方法を取ります。ダイアグラム要素がダイアグラムの表示端に向かって移動すると、ダイアグラムは自動的にスクロールします。要素が移動してダイアグラム上から離れると、新しいダイアグラム・ページが追加されます。
ダイアグラム要素を移動するには、次のようにします。
「編集」→「元に戻す[...]」を選択するか、「元に戻す」アイコンをクリックすることにより、最後のグラフィック操作を元に戻し、やり直すことができます。グラフィック操作は、ダイアグラム上の要素の外観を変更する、次のような操作です。
ダイアグラムの要素の切取りおよび貼付け。
ダイアグラム要素の位置およびサイズの変更。
ダイアグラム要素のフォント、色およびフォント・サイズの変更。
要素のセマンティック・プロパティの変更は、テクノロジ(Javaなど)で許可される場合にのみ取り消すことができます。要素のセマンティック・プロパティを変更すると、その前に行ったグラフィック上の変更の取消しができなくなる可能性があります。
アクションのやり直しを実行するには、「編集」→「やり直し[...]」を選択するか、「やり直し」アイコンをクリックします。
ポップアップ・メニューまたはキーストロークを使用して、異なるダイアグラム間で要素をコピーします。
ダイアグラムから要素をコピーし、別のダイアグラムに貼り付けるには、次のようにします。
名前を変更すると、元のダイアグラムのコピーを残さずにダイアグラム名が変更されます。
ダイアグラム名を変更するには、次のようにします。
ダイアグラムをグラフィック・イメージとして公開するには、ポップアップ・メニューのオプションを使用します。イメージとして公開した後、ダイアグラムをプレビューしたり、印刷したりできます。
ダイアグラムをイメージとして公開するには:
ページ設定を使用して、縦向きから横向きに変更したり、印刷余白を設定したりできます。
印刷前にページを設定するには、次のようにします。
「ファイル」メニューの印刷領域の設定オプションを使用して、印刷するダイアグラムの特定領域を設定します。
印刷するダイアグラム上の領域を設定するには、次のようにします。
ページをプレビューするには、「ファイル」→「印刷プレビュー」を選択します。「印刷オプション」を選択することにより、このページから印刷オプションも設定できます。「印刷オプション」ページで、ヘッダーおよびフッターのコンテンツをテキストとして追加できます。
ダイアグラムをズーム・インおよびズーム・アウトするには、[Ctrl]キーを押しながらホイール・ボタンを使用します。サムネイル・ビューを使用している場合は、スクロールを使用してズームします。ダイアグラム・ツールバーにもズーム・オプションがあります。
ダイアグラムのツールバー上にあるズームのドロップダウン・リストで、「ウィンドウに合せる」を選択するか、ダイアグラムをクリックして「ダイアグラム」→「ズーム」→「ウィンドウに合せる」を選択します。
ダイアグラムのツールバー上にあるズームのドロップダウン・リストで、「選択領域のズーム」を選択するか、ダイアグラムをクリックして「ダイアグラム」→「ズーム」→「選択領域のズーム」を選択します。
ダイアグラムのツールバー上にあるズームのドロップダウン・リストで、「100%」を選択するか、ダイアグラムをクリックして「ダイアグラム」→「ズーム」→「100%」を選択します。
ダイアグラムには、階層、対称、グリッドおよび行の各スタイルがあります。ダイアグラム内の要素も、レイアウト・スタイルをカスタマイズできます。ダイアグラムの外観をカスタマイズするためのプリファレンスが数多く用意されています。これら大部分のプリファレンスは、図5-4で示されているように、「ツール」→「プリファレンス」→「ダイアグラム」(ダイアグラム・タイプ)で表示される様々な「プリファレンス」ダイアログを使用して設定できます。新しいダイアグラムに対する特定のプリファレンスを設定するには、全般プリファレンス・ダイアログから「次のプリファレンスの編集」を選択します。
図5-4 クラス図のビジュアル・プロパティ
階層レイアウトは、図5-5に示されているように、汎化構造と、定義された方向のエッジに基づいてダイアグラム要素を階層的に配置します。ノード間は、最短ルートでエッジが引かれます。他のノードに連結されていないダイアグラム上のノードは、グリッド・レイアウトでレイアウトされます。階層レイアウトは、上から下、下から上、左から右、右から左の4種類の方向で使用できます。
図5-5 階層ダイアグラム・レイアウトの例
ダイアグラムの端は、斜線または直線のスタイルでレイアウトできます。斜線は、任意の角度で移動できます。直線は、一連の直角として常に表示される線です。
ダイアグラムの端ごとにデフォルトの線のスタイルを設定するには、図5-6に示すように、「ツール」→「プリファレンス」→「ダイアグラム」→「クラス」で「線のスタイル」プリファレンスを使用し、さらにプリファレンスを編集ドロップダウンで「アソシエーション」を選択します。
図5-6 ダイアグラムのプリファレンス、プリファレンスの編集(線のスタイル)
ダイアグラム・タイプの全インスタンスに対して線のスタイルを設定することもできます。1つの端の線のスタイルが斜線に変わり、線のスタイルを直線から斜線に変更した場合、ダイアグラム上には変更は表示されませんが、後でダイアグラム上の線を任意の角度で新しい位置に移動できるようになります。
個別にダイアグラムの端を選択して、その線のスタイルを変更できます。個別の線を斜線から直線に変更する場合、線は直角を使用して再描画されます。個別の線を直線から斜線に変更する場合、線は変更されませんが、後で任意の角度で線(または線の一部)を再配置できます。
線が交差するときのスタイルも、ブリッジ交差とトンネル交差から選択できます。ブリッジを選択すると、線が交差する場所に2本の平行線が作成されます。トンネルを選択すると、交差する場所に半円が作成されます。デフォルトのスタイルは、線が交差する2本の線を使用した標準の交差です。
対称レイアウトでは、図5-7に示されているノード間のエッジに基づいて、ダイアグラム要素が対称的に位置合せされます。特定の状況では、対称レイアウトにより中央のノードの周囲に放射状レイアウトでノードが配置されます。他のノードに連結されていないダイアグラム上のノードは、グリッド・レイアウトでレイアウトされます。
図5-7 対称ダイアグラムの例
直交ダイアグラムには、図5-8に示されているように、階層と非階層の要素が表示され、位置合せされたコンポーネントの端がすべて同じ方向になります。クラス図の場合、汎化階層は単純に並べられており、各要素のインディペンデンスが示されます。
図5-8 直行ダイアグラム・レイアウトの例
グリッドは、図5-9に示されているように、左から右への行または上から下への列でノードを直線的にレイアウトしたグリッド・パターンで、ダイアグラム要素をレイアウトします。ノードは、左上のノードから開始します。
図5-9 グリッド・ダイアグラム・レイアウトの例
レイアウト・スタイルを使用するには、ダイアグラムのコンテキスト・メニューを開いて「図形のレイアウト」を選択するか、図5-10のように「ダイアグラム」→「図形のレイアウト」を選択します。
図5-10 ダイアグラムの「レイアウト・オプション」ドロップダウン
ダイアグラムで要素をレイアウトするには、次のようにします。
選択した要素がダイアグラム上にレイアウトされた後も、ダイアグラム上の任意の場所にまとめて移動できるように、その要素は選択された状態になっています。
ダイアグラムの新しい要素のレイアウトを設定するには、ダイアグラムの背景をクリックして、コンテキスト・メニューから「ビジュアル・プロパティ」を選択します。
ダイアグラム上の新しい要素のデフォルト・レイアウトを設定するには、「ツール」→「プリファレンス」→「ダイアグラム」に移動します。
ダイアグラムは、ダイアグラム上にグリッドが表示されていない場合でも、一番近いグリッド線に自動的に合せることができます。ダイアグラム上のグリッド・セルは正方形で、このセルの高さおよび幅両方の変更には、値が1つのみ必要です。デフォルトでは、アクティビティ図上の要素はグリッドに合せられていません。デフォルト・ダイアグラム・グリッドの表示と動作を設定するには、「ツール」→「プリファレンス」に移動し、「ダイアグラム」を選択します。ここから、「グリッドの表示」を選択してグリッドを表示するか、「グリッドに合せる」チェック・ボックスを選択して、要素をグリッドに合せることができます。要素をグリッドに合せる際に、グリッドを表示する必要はありません。
ダイアグラムのグリッド表示と動作を現在のダイアグラムに定義するには、次のようにします。
ダイアグラム要素を、上詰め、下詰めなど、特定のポイントに合せて間隔調整して配置できます。要素が配置される際、選択した要素の中で垂直軸および水平軸から最も離れた要素が、境界として使用されます。効果的に配置するには、選択範囲にある最も離れた要素を移動してから、要素を再配置します。
ダイアグラム要素を配置するには、次のようにします。
UMLダイアグラムでは、ノードは物理デバイスまたは実行環境を表すことができます。物理デバイスは、1つのデバイスになるか、複数のデバイスの構成になります。実行環境は、ソフトウェア・コンテナ(オペレーティング・システムやEJBなど)です。ノードは要素の内外に作成できます。
要素は、他のダイアグラム要素の内部ノードとしてダイアグラム上に表現できます。
内部ノードを使用して次の要素を作成できます。
内部クラスおよび内部インタフェース
リレーションの使用方法。
図5-11 シンボリック・ダイアグラム・クラス図
図5-12 内部ノードが表示された拡張ダイアグラムのクラス・ビュー
ダイアグラム要素に内部ノードを作成するには、次のようにします。
内部ノードを作成するノードをダイアグラム上で選択します。
「ダイアグラム」→拡張表示を選択し、ノードの拡張ビューを表示します。
拡張ボックス内に内部ノード用のノードを作成するか、「アプリケーション」ウィンドウまたはダイアグラムから適切なノードをドラッグし、内部ノードを作成するために拡張したノード内にドロップします。
ダイアグラムでノードの表示方法を変更するには:
ダイアグラム要素を選択し、次のいずれかを選択します。
「ダイアグラム」→「表示モード」→「圧縮」
「ダイアグラム」→「表示モード」→「シンボル」
「ダイアグラム」→「表示モード」→「拡張済」
ダイアグラム上でノードのサイズを最適化するには、次のようにします。
ポップアップ・メニューの最適化機能を使用して、ノードを最適化できます。最適化すると、すべての属性が表示されるようにノードのサイズが調整されます。
ダイアグラム上で1つの端または任意の数の端を非表示にできます。ダイアグラム上で非表示になっている端も「構造」ウィンドウには表示され、名前に「(非表示)」が追加されます。非表示の端がある場合、個別または同時に再表示できます。
ノートは、ダイアグラムまたはダイアグラム上の要素に対する説明テキストの追加に使用します。ノートは、1つ以上の要素に添付できます。ノートは、個別のファイル・システム要素としてではなく、現在のダイアグラムの一部として格納されます。図5-13に示されているように、「コンポーネント」ウィンドウにはノート・オプションがあります。
図5-13 「コンポーネント」ウィンドウでの注釈の追加
「コンポーネント」ウィンドウの「ダイアグラムの注釈」機能を使用して、ダイアグラムにノートを追加します。
ダイアグラムにノートを追加するには、次のようにします。
「コンポーネント」ウィンドウの「ダイアグラムの注釈」機能には、ダイアグラム要素にノートを添付するための添付コンポーネントが含まれています。
ダイアグラムの要素にノートを添付するには、次のようにします。
ダイアグラムはダイアグラム・ファイルと同じようにディスクに格納されます。ダイアグラム・ファイルは、ダイアグラムに表示される要素を参照し、その要素の表示に関する情報(サイズ、色、フォント、各種プロパティの表示など)を含んでいます。ダイアグラム・ファイルは、ダイアグラムを格納するパッケージのフォルダの中に格納され、プロジェクト設定で指定したモデル・パスに格納されます。ダイアグラムのリンクと依存性もダイアグラム・ファイルに格納されます。
モデル・パスを設定するには:
「アプリケーション」→「デフォルト・プロジェクト・プロパティ」→「プロジェクトのソース・パス」→「モデラー」を選択します。
Javaクラスなどのダイアグラム要素はダイアグラム・ファイルで参照されますが、その定義と実装の詳細は各要素の実行ファイルにのみ格納されます。各要素のダイアグラムでの詳細(位置、色、サイズなど)はダイアグラム・ファイルに格納されますが、要素の個別のモデル定義は格納されません。
「新規ギャラリ」で単独で作成されるUML要素は、「アプリケーション」ウィンドウに表示され、ダイアグラム上にドロップできます。ダイアグラムと関連コンポーネントをすばやく作成できるUMLアプリケーションを作成することもできます。
UML要素のプロパティを使用すると、表示の外観(色やフォントなどのグラフィカル・オプション)、または要素のデプロイ時にその動作を説明するセマンティック・プロパティ(属性、表示オプション、クラス関係など)をカスタマイズできます。
全般プリファレンス・ダイアログでは、そのタイプのすべてのダイアグラムに対するプリファレンスを設定できます。右クリックして、「ビジュアル・プロパティ」を選択すると、編集ウィンドウに現在表示されているダイアグラムのプリファレンスを編集できます。
「新規ギャラリ」を使用して、既存のダイアグラムがない状態でUML要素を作成します。
ダイアグラムから独立したUML要素を作成するには、次のようにします。
UML要素は個別のファイルに格納されます。ファイルの場所は、要素のパッケージ・プロパティによって異なります。この要素ファイルには、各要素に対して定義されたプロパティが含まれていますが、ダイアグラム・ファイルには、ダイアグラムに表示される要素およびその要素のビジュアル・プロパティも定義されます。
モデル化されたUML要素の要素ファイルは、プロジェクトのモデル・パスで指定されたフォルダの下の適切なパッケージ・フォルダに格納されます。モデル・パスを設定するには、「アプリケーション」→「デフォルト・プロジェクト・プロパティ」→「プロジェクトのソース・パス」→「モデラー」を選択します。
UMLプロファイルをUMLモデルに適用して追加のセマンティックを指定できます。JDeveloperには、2つのUML 2.4.1標準プロファイルと、UMLオブジェクトをオフライン・データベース・オブジェクトに変換するためのプロファイルがあります。また、その他のプロファイルも登録できます。これらは、サード・パーティやユーザー定義のものになります。
次の手順に従って、プロファイルを作成します。
新規プロジェクトを作成します。
プロジェクトを右クリックし、コンテキスト・メニューから「プロジェクト・プロパティ」を選択します。「ライブラリとクラスパス」ノードを選択します。右側にある「ライブラリの追加」ボタンをクリックします。
「ライブラリの追加」ダイアログで、UML 2.4.1メタモデルを選択し、「OK」をクリックします。
プロジェクトを右クリックし、「新規」→「ギャラリから」を選択します。
「一般」カテゴリで「UML」ノードを選択します。「項目」ペインで「プロファイル」を選択し、「OK」をクリックします。プロパティ・エディタが開きます。
プロファイルに名前を付けます。この名前は、適用時にそのプロファイルを識別する場合に使用されます。
プロファイルにURIを指定します。これはネームスペースURIであり、適用されるプロファイルを永続化する際にXMLネームスペースに使用されます。
プロファイルに所有パッケージがないことを確認します。
ステレオタイプと拡張の両方をプロファイル内にパッケージ要素として作成できますが、プロファイル図を使用するほうが簡単に作成できます。
「OK」をクリックして、「プロジェクト・プロパティ」ダイアログを閉じます。
プロファイルを追加するには、「ツール」→「プリファレンス」→「UML」→「プロファイル」に移動します。図5-14に示すように、プロファイルのページには、アプリケーションで利用可能な現在のプロファイル(ユーザーまたはサード・パーティが作成)がすべて表示されます。「ツール・メタモデル」で、「追加」(+)をクリックします。プロファイルを追加したら、そのプロファイルを選択して「編集」をクリックします。プロファイルのドキュメントURIを指定します。ドキュメントURIは、プロファイルの要素の参照、特にプロファイル・アプリケーションのプロファイルへの参照を永続化する場合に使用されます。
図5-14 UMLプリファレンスの「プロファイル」ダイアログ
他のモデリング・ソフトウェアを使用して作成したモデルは、そのモデルがUML 2.1.1から2.4.1に準拠している場合は、XML Metadata Interchange (XMI)ファイルを使用してJDeveloperにインポートできます。
XMI仕様では、メタモデルを使用してUMLモデルをXMLドキュメントに変換する方法が記述されています。
インポートには、次の制約事項があります。
ダイアグラムはインポートできません。
XMIを使用して、1つ以上のファイルをインポートできます。XMIによって参照されるプロファイルはすべて、「ツール」→「プリファレンス」→「UML」→「プロファイル」を使用して最初にJDeveloperに登録しておく必要があります。
各プロファイルが個別のファイルに存在する必要があります。詳細は、「UMLプロファイルの使用」を参照してください。
XMIからUMLモデルをインポートするには、次のようにします。
インポート中には、「XMIインポート」ログで頻繁に見られる一般的なエラーと警告があります。これらの多くは、いくつかの単純な手順で簡単に解決できます。詳細は、表5-1を参照してください。ログの項目をダブルクリックすると、問題のある要素に移動します。多くの場合、ネームスペースや標準オブジェクト参照が正しくないことが問題の原因です。
他のXMLと同様、有効なファイルの構造は、xmlnsネームスペースによって参照されるXMLスキーマによって指定されます。XMLは、オブジェクトまたはその親要素オブジェクトの値を表す要素と、値である属性とで構成されます。値が他のオブジェクトへの参照である場合もあり、たとえばHTMLの場合にはhrefとして表されます。
表5-1 インポート時の一般的なエラー・メッセージ
エラー・タイプ | エラー詳細 | 解決方法 |
---|---|---|
プロファイルの欠落 |
|
UMLには、'profile'で追加のXMLスキーマを指定できる拡張メカニズムがあります。前述のメッセージは、関連するプロファイルが登録されていなかったことを示しています。プロファイルを登録するには、「UMLプロファイルの使用」を参照してください。 |
XMIのバージョンが無効 |
エラー(2,360): 2.0はhttp://schema.omg.org/spec/XMI/2.1の正しいバージョンではありません |
このメッセージは、 |
UMLネームスペースが無効 |
警告(2,356): http://schema.omg.org/spec/UML/2.1.1/Unknownはネームスペースとして認識されていません |
このメッセージは、 |
L2標準プロファイル・ネームスペースが無効 |
|
これは、標準プロファイルがすでにツールに登録されている場合です。xmlnsネームスペースが |
L3標準プロファイル・ネームスペースが無効 |
|
これは、標準プロファイルがすでに登録されている2つ目です。プロファイルの参照が正しくない場合、メッセージはL2プロファイル・ネームスペースメッセージの場合と似ています。正しいネームスペースは |
標準のデータ型参照が無効 |
エラー(7,75): 参照しようとした要素http://schema.omg.org/spec/UML/2.1.1/Unknown#Stringが欠落しています |
|
MOF (Meta-Object Facility)モデル・ライブラリ.jar
ファイルを使用すると、1つのプロジェクト内のUMLオブジェクトを別のプロジェクトで再利用できます。
UMLオブジェクトは、次の2つの方法のいずれかでライブラリに含めることができます。
JDeveloperの独自の形式を使用
サード・パーティから提供される.xmi
ファイルを使用。この場合、各オブジェクトにはファイル内で一意のIDが必要です。
後者の場合、XMIファイルをインポートしてJDeveloperの形式に変換できます。ただし、この場合、オブジェクト識別子は保存されません。オブジェクト識別子は、標準化された参照を含んだ各自のモデルをライブラリ・オブジェクトにエクスポート可能にするときに必要な場合があります。
JDeveloperインストールにある次のモデル・ライブラリを参照すると便利な場合があります。
.../oracle/jdeveloper/jdev/extensions/oracle.uml.v2
このディレクトリの2つのZIPファイルではカタログを使用します。
.../oracle/jdeveloper/jdev/extensions/oracle.jdeveloper.db.modeler.transform
変換ZIPではJDeveloper形式を使用します。
ライブラリ・オブジェクトにのみIDがある場合、それらの参照には、そのオブジェクトを格納するファイルのURLが含まれます。これはデフォルトでは、ディスク上の物理的な場所であり、マシン固有の場合があります。かわりに、.xml
カタログ・ファイル形式でファイルに別名を指定する必要があります。
テキスト・エディタを使用して、次の情報を含む.xmi
ファイルを作成します。
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE catalog PUBLIC "-//OASIS//DTD XML Catalogs V1.1//EN" "http://www.oasis-open.org/committees/entity/release/1.1/catalog.dtd"><catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog"> <uri name="http://example.oracle.com/MyLibrary.xmi" uri="MyLibrary.xmi"/> <uri name="http://example.oracle.com/MyLibraryAlias.xmi" uri="http://example.oracle.com/MyLibrary.xmi"/></catalog>
最初のURI要素は、標準名をライブラリ・ファイルにマップします。これは、ライブラリ内のカタログの場所の相対パスとして指定されます。.xmi
ファイルごとに、これらのエントリのいずれかが必要です。オプションで、前述の2番目の要素などのURI要素を追加で使用して、標準名に対する追加の別名を指定できます。これは、ライブラリに複数のバージョンがある場合に役立ちます。
OASIS XMLカタログ仕様の前述のURI要素のみがサポートされることに注意してください。
MOFモデルJARファイルを作成するには::
モデルを含むプロジェクトを右クリックして、「プロパティ」を選択します。「プロジェクト・プロパティ」ダイアログで、「ライブラリとクラスパス」を選択します。
「ライブラリの追加」または「JAR/ディレクトリの追加」をクリックして、任意の.xmi
ファイルとカタログの.xml
ファイルをプロジェクトのモデル・パスに追加します。「OK」をクリックします。
「ファイル」→「新規」→「ギャラリから」を選択します。「一般」カテゴリで、「デプロイメント・プロファイル」を選択します。「MOFモデル・ライブラリ」項目を選択して、「OK」をクリックします。
デプロイメント・プロファイルの名前を指定して、「OK」をクリックします。左側に「JARオプション」が選択された状態で、「MOFモデル・ライブラリ」ダイアログが開きます。
「JARオプション」領域で、JARファイルの場所を参照して、ダイアログを完了します。「OK」をクリックします。「プロジェクト・プロパティ」の「デプロイメント」ページに戻ります。
「デプロイメント・プロファイル」領域で、MOFモデル・ライブラリの名前をダブルクリックします。左側のパネルで「ライブラリ・オプション」を選択します。
「ライブラリ名」フィールドに名前を入力します。デプロイメント・プロファイルと同じ名前にする必要はありません。
カタログ・ファイルがある場合、「MOFカタログ・エントリ」フィールドに入力して、JARファイル内のカタログの場所を指定します。ファイル・グループを調べて、JARファイルに含められる内容を確認できます。
「OK」をクリックします。
作成したJARに変更をデプロイするには、プロジェクトを右クリックして、「デプロイ」→「MyMOFLibrary」を選択します。
MOFモデル・ライブラリを追加するには
プロジェクトにライブラリを追加する場合、ここで詳述するように、MOFモデル・ライブラリのソース・パスを追加します。再デプロイする場合は、JARを新しい変更で更新できます。
JDeveloperでは、データベース表、Javaクラスおよびインタフェースに対するUML変換がサポートされています。
同じソース・モデルとターゲット・モデルを使用して、変換を何度でも実行できます。JavaクラスからUMLへの逆変換の機能もあります。
変換を実行するには:
UMLオブジェクトまたは要素、データベース表あるいはJavaクラスを選択します。
メイン・メニューから、「ダイアグラム」→「変換」を選択します(「ダイアグラム」メニューは、適切な要素を選択した場合にのみ表示される)。
変換のタイプを選択します。「変換タイプ」を参照してください。
変換を開始したら、次の3つの変換タイプのいずれかを選択する必要があります。
モデルのみ。変換した要素の定義を作成しますが、それらはダイアグラムに追加されません。モデルが作成され、現在のプロジェクトの「アプリケーション」ウィンドウに表示されます。
同一ダイアグラム。変換した要素を現在のダイアグラムに作成します。作成したモデルは次の場所に表示できます。
「アプリケーション」ウィンドウ。
UMLクラス図。データベースからの変換は、モデル化された表および制約として表示されます。
新規ダイアグラム。変換した要素の新しいダイアグラムを作成します。これがデータベースの場合、新規クラス図には、変換されたデータベース表ごとのクラスが表示されます。
UMLモデリング・ツールを使用すると、UMLクラス・モデルを作成してJavaに変換する、またはその逆に変換することができます。
UMLモデリング・ツールを使用すると、UMLクラス・モデルを作成してJavaまたはオフライン・データベースに変換できます。
「UMLクラス・モデルからのオフライン・データベース・オブジェクトの作成」ウィザードの「階層オプションの設定」ページでは、4つのタイプの汎化を指定できます。
オプションは次のとおりです。
ルート・クラス変換
リーフ・クラス変換
全クラスを変換して汎化
全クラスを変換、外部キーを作成
図5-25のように、2つのルート・クラスと3つのリーフ・クラスを考えます。
図5-25 2つのルート・クラスと3つのリーフ・クラスを示すダイアグラム
「ルート・クラス変換」のオプションを選択した場合、図5-26に示すように、ルート・クラスがオフライン表に変換され、階層における子孫クラスの属性と外部キーもすべて変換されます。識別子列を作成するオプションもあります。識別子列には、特定の行に対してどのサブクラスをインスタンス化するかを判読するために、永続層に対するマーカー値が含まれます。
図5-26 変換されたルート・クラス
「リーフ・クラス変換」オプションを選択した場合、図5-27に示すように、リーフ・クラスがオフライン表に変換され、先祖クラスの列と外部キーを継承します。
図5-27 汎化したクラスから継承して変換されたリーフ・クラス
「全クラスを変換、継承あり」オプションを選択した場合、変換セットのすべてのクラスに対してオフライン表が作成されます。図5-28に示すように、各表は先祖表から列と外部キーを継承しますが、その点を除けば独立しています。
図5-28 汎化クラスから継承して変換されたすべてのクラス
「全クラスを変換、外部キーを作成」のオプションを選択した場合、変換セットのすべてのクラスに対してオフライン表が作成されます。図5-29に示すように列と外部キーは継承されず、親表(複数可)に対して外部キーが作成されます。
図5-29 外部キーを作成して変換されたすべてのクラス
表5-2に、「UMLクラス・モデルからのオフライン・データベース・オブジェクトの作成」ウィザードの最後のページで「ファイルへの変換設定の保存」オプションを選択した場合に保存できる情報を示します。「UMLからオフライン・データベース・オブジェクトへの変換」の手順12を参照してください。
表5-2 保存可能な変換設定
変換設定 | ウィザードのページと注意事項 |
---|---|
ターゲット・プロジェクトとオフライン・データベース |
「ターゲットの指定」。UMLオブジェクトの変換先を指定します。 |
オフライン・スキーマ |
「ターゲットの指定」。オブジェクトの変換先のスキーマです。 「スキーマの選択」を選択して存在しないスキーマを指定した場合、スキーマが作成されることに注意してください。新しいスキーマに一度変換してスキーマの名前を変更した後、同じ設定を再利用して再度変換する場合、古いスキーマが再作成され、変換されたオブジェクトはその場所に作成されます。 |
UML名変換 |
「ネーミング・オプションの設定」。UML名を大文字の複数形にするルールを指定します。 |
ロール名の反転 |
「ネーミング・オプションの設定」。外部キーの列の作成時に、UMLアソシエーションの隣接する端または反対の端のどちらのロール名を使用するかを指定します。 |
「コメントの追加」オプション |
「ネーミング・オプションの設定」。新しいオフライン・データベース・オブジェクトの作成過程に関するコメントが、そのオブジェクトで必要かどうかを指定します。 |
「階層」オプション |
階層オプションの設定。階層のクラスが表に変換される場合に、属性とアソシエーションをどのように継承するかを決定します。 |
多対多アソシエーション |
階層オプションの設定。多対多アソシエーションの交差表を作成するかどうかを指定します。 |
ログ・メッセージ |
「ロギング・オプションの設定」。ログに記録するメッセージのタイプ(「エラー」、「警告」、「情報」、「作成」および「進捗」)を指定します。 |
JDeveloperにはDatabaseProfileと呼ばれるUMLプロファイルが付属しています。このプロファイルを使用すると、オフライン・データベース・モデルに変換されるときのクラス・モデルに対する処理を指定できます。UMLプロファイルの詳細は、「UMLプロファイルの使用」を参照してください。
DatabaseProfileには、要素の変換方法を制御するステレオタイプのプロパティが含まれます。このプロファイルに含まれるステレオタイプとそのプロパティは、表5-3のとおりです。
表5-3 DatabaseProfileのステレオタイプとプロパティ
ステレオタイプ | 適用先 | オフライン・データベースのタイプ | プロパティ | 注意 |
---|---|---|---|---|
データベース・パッケージ |
UML::Package |
SCHEMA |
変換後の名前 |
|
データベース・クラス |
UML::Class |
TABLE |
変換後の名前 |
|
データベース属性 |
UML::Property |
COLUMN |
データ型、プライマリ |
UMLプロパティは、属性またはアソシエーションの端です。 |
データベース・データ型 |
UML::Type |
該当なし |
データ型 |
メタモデルで、TypeはClass、Association、PrimitiveTypeなどを含む広範囲の要素のスーパークラスです。このステレオタイプはすべてに適用できます。プロパティ(属性)が特定タイプの場合は常に、トランスフォーマによって読取りが可能です。 |
データベース制約 |
UML::Constraint |
CONSTRAINT |
変換後の名前、本体 |
変換した表に対してチェック制約を作成します。 |
データベース・アソシエーション |
UML:: Association |
CONSTRAINT |
外部キー・ネーミング・ルール |
|
データベースの汎化 |
UML:: Generalization |
CONSTRAINT |
外部キー・ネーミング・ルール |
特定のトランスフォーマは汎化から外部キーを作成し、このステレオタイプがここで適用されます。 |
属性(プロパティ)は、表5-4を参照してください。
表5-4 DatabaseProfileのステレオタイプのプロパティ
プロパティ | 説明 | タイプ |
---|---|---|
変換後の名前 |
変換されるデータベース・オブジェクトの名前。ブランクのままにすると、デフォルトのネーミング・ルールが適用されます。 |
String |
本文 |
チェック制約のSQLコード。 |
String |
データ型 |
データ型のSQLテキスト。 デフォルト、ANSI、Oracleと、サポートされるその他のデータベース・タイプなど様々なデータ型があります。 |
String |
外部キー・ネーミング・ルール |
アソシエーションから外部キーに名前を付けるときに使用するルール。UML名またはdatabaseNameプロパティを使用するか、表名からデフォルト名を導出します。 |
両方の表データベース名 所有者名 UML名 |
プライマリ |
変換された列が親表の主キーの一部であることを示すフラグ。 |
Boolean |
DatabaseProfileを使用してクラス・モデルを変換できます。
ステレオタイプは他の要素にも適用できます。たとえば、特定のクラスによって所有されている属性にデータ型と主キーを指定できます。同じクラスのプロパティ・ダイアログで、「所有された属性」を開きます。既存の属性を選択するか、「追加」をクリックして名前を入力することにより、属性を作成します。所有された属性のノードを開いて、「適用済ステレオタイプ」を選択し、「追加」をクリックします。図5-32では、このレベルで指定できる多くのデータ型、属性が主キーに変換されるかどうか、および変換後の名前を示しています。
図5-32 適用済ステレオタイプのデータベース属性
DatabaseProfileに含まれるステレオタイプおよびプロパティの詳細は、表5-3および表5-4を参照してください。
UMLクラス図がある場合、「UML-オフライン・データベース変換」で説明しているプロセスとほぼ同様のプロセスを使用して、この図をADFビジネス・コンポーネントに変換できます。
UMLクラス図では、クラスは、クラス名と詳細を含む四角形で表されます。ダイアグラム上で、クラスおよびインタフェースはコンパートメントに分割されており、各コンパートメントには、図5-34に示すように情報が1種類のみ含まれます。表5-5に、可能な要素を示します。クラスは、圧縮、シンボルまたは拡張済のノードとして表示できます。
図5-33 要素を含むUMLクラス図
表5-5 クラス図の要素
要素 | 説明 |
---|---|
*対*アソシエーション |
UMLクラス間の多対多の関係を定義します。 |
1対*アソシエーション |
UMLクラス間の1対多の関係を定義します。 |
1対*アソシエーション・クラス |
無向1対多アソシエーション・クラスを定義します。 |
クラス |
オブジェクトを表します。クラスは、オブジェクト指向アプリケーションの主要な構築ブロックを形成します。垂直に重ねた3つのコンパートメントを含む四角形として、ダイアグラム上で表されます。 |
制約 |
制約は、システムの動作やソリューションをモデル化するときの自由度、または自由度の欠如です。 |
制約の添付 |
他のUML要素に制約を添付します。 |
データ型 |
データ型は、データ値を定義するモデル要素です。 |
有向1対*アソシエーション |
「有向1対*アソシエーション」は、ダイアグラムでは、複数のアソシエーションの方向を開いた矢印で指す実線として表示されます。 |
有向1対1アソシエーション |
「有向1対1アソシエーション」は、ダイアグラムでは、アソシエーションの方向を開いた矢印で指す実線として表示されます。 |
有向コンポジット集約 |
ダイアグラムでは、アソシエーションの方向に開いた矢印と、塗りつぶされたダイアモンド型の付いた実線でアソシエーションの発生側に表示されます。 |
列挙 |
列挙は、有限の、通常は小さいセットの名前付きリテラルを持つデータ型です。列挙には、列挙の値を表す名前付き識別子のセットが含まれます。 |
汎化 |
分類子間の汎化関係を定義します。ダイアグラムでは、特殊分類子またはインタフェースの方向を白抜きの矢印で指す実線として表示されます。 |
インタフェース |
インタフェースは、名前コンパートメントのキーワード«interface»で表されます。インタフェースは、圧縮、シンボルまたは拡張済のノードとして表示できます。ネストされたクラスおよびインタフェースは、標準および拡張済のインタフェース内部でモデル化できます。 |
パッケージ |
システムを複数のパッケージに分割するために使用し、システムを簡略化してわかりやすくします。 |
プリミティブ・タイプ |
プリミティブ型またはプリミティブ・データ型は、ブール、バイト、小数、DateTime、Double、Float、Timeなどのデータ型です。 |
実現 |
インタフェースがクラスによって実現される位置を定義します。ダイアグラム上に破線と実装されているインタフェースに向けた白抜きの矢印で表されます。 |
次の手順に従って、UMLクラス図を作成します。
プロジェクトを右クリックし、「新規」→「ギャラリから」を選択します。
「一般」カテゴリで「UML」ノードを選択します。「項目」ペインで、「クラス図」を選択し、「OK」をクリックします。
このパッケージ内で一意の名前をダイアグラムに付けます。
このダイアグラムの所有パッケージを選択または参照します。
「OK」をクリックします。
図5-34に、一般的なクラス図のレイアウトの例を示します。すべての属性および操作には、可視性を表す記号が表示されます。可視性の記号には、Public (+)、Private (-)、Protected (#)および~ Packageがあります。
ダイアグラム表示プロパティを設定するには、「ツール」→「プリファレンス」→「ダイアグラム」→「クラス」に移動して、「ダイアグラム」を選択します。
ダイアグラム上の要素の表示方法を変更することもできます。大きさが不足し、内容の全体を表示できない各コンパートメントには、省略記号(...)が表示されます。モデル化されたクラスのすべての属性を表示するには、クラスを右クリックして図形の高さの最適化を選択します。
「コンポーネント」ウィンドウには、図5-35に示すようにクラス図に使用できる要素が含まれています。説明については、表5-5を参照してください。
クラスをダイアグラムにドラッグし、クラスとインタフェースを作成します。プロジェクト設定とデフォルト・プロパティのモデル・パスで指定されている場所に、要素が作成されます。(「アプリケーション」→「デフォルト・プロジェクト・プロパティ」。)パッケージをクリックしてパッケージをモデル化することもできます。モデル化されたパッケージを右クリックして「ドリル・ダウン」を選択すると、そのパッケージのダイアグラムが表示されます。
クラス・プロパティは、次のいずれかの方法でダイアグラム上にモデル化されたクラスとインタフェースに追加されます。
モデル化されたクラスまたはインタフェースをダブルクリックし、プロパティ・ダイアログにアクセスします。
クラスまたはインタフェースを右クリックし、「プロパティ」を選択します。
図5-34 クラス図の「コンポーネント」ウィンドウ
分類子、制約およびパッケージは、「ダイアグラム・ノードの操作」で説明するようにダイアグラム・ノードの作成と同じ方法で作成できます。ただし、「コンポーネント」ウィンドウのドロップダウンから「クラス」を選択します。新しいオブジェクトは、ダイアグラムが含まれるフォルダに一致するパッケージに作成されます。
属性を作成するには、いくつかの方法があります。
モデル化されたクラスまたはインタフェースをダブルクリックし、要素のプロパティ・ダイアログを使用して属性を追加します。
クラスまたはインタフェースを右クリックして「プロパティ」を選択し、要素のプロパティ・ダイアログを使用して属性を追加します。
ダイアグラム上の1つのクラスまたはインタフェースから、同じダイアグラム上の別のクラスまたはインタフェースに、既存の属性をドラッグします。
クラス内の属性の順序を任意に変更するには、「アルファベット順でソート」オプションを無効にして、画面上で属性を上または下にドラッグします。「ツール」→「プリファレンス」を選択して、「ダイアグラム」ノードを開き、「クラス」を選択します。「次のプリファレンスを編集」ドロップダウンから、「クラス」または「インタフェース」を選択します。「属性」または「操作」タブをクリックして、「アルファベット順でソート」の選択を解除します。
ネストされたクラスとネストされたインタフェースを作成するには、モデル化されたクラスまたはインタフェースにそれらを作成するか、インプレース作成(シンボル表示のみ)を使用して図形の表示設定を変更するか、またはクラスを右クリックして「表示モード」→「拡張済」を選択した後、拡張済ノード内部に別のクラスを作成します。
モデル化されたクラスとインタフェースに属性と操作を追加するには、次のいずれかの方法を使用します。
モデル化されたクラスまたはインタフェースをダブルクリックし、要素のプロパティ・ダイアログを使用して属性または操作を追加します。
クラスまたはインタフェースを右クリックして「プロパティ」を選択し、要素のプロパティ・ダイアログを使用して属性または操作を追加します。
ダイアグラム上の1つのクラスまたはインタフェースから、同じダイアグラム上の別のクラスまたはインタフェースに、既存の属性または操作をドラッグします。
クラスまたはインタフェースにおける属性または操作の順序を変更するには、画面で上下にドラッグします。属性または操作の「アルファベット順でソート」プロパティは、選択を解除する必要があります(「ツール」→「プリファレンス」→「ダイアグラム」→「クラス」→「次のプリファレンスを編集」: 「クラス」または「インタフェース」→「属性」または「操作」→「アルファベット順でソート」)。
ポップアップ・メニューを使用して、ダイアグラム上の属性および操作を表示したり非表示にしたりできます。
1つ以上の属性または操作を非表示にするには、次のようにします。
ビジネス・プロセスのモデル化には、アクティビティ図を使用します。ビジネス・プロセスとは、注文処理、出荷、精算および支払いプロセス・フローなどビジネス目標を達成するために調整されたタスクです。
図5-36に示すように、アクティビティ図は、システムの動作を取得し調整されたアクションの実行を示します。
図5-35 要素を示すアクティビティ図の例
「コンポーネント」ウィンドウには、アクティビティ図に使用できる要素が含まれています。「アクティビティ」は、ダイアグラムに直接配置できる唯一の要素です。他の要素は「アクティビティ」の内部に配置できます。図5-37およぴ表5-6に示すように、各要素は一意のアイコンと説明のためのラベルで表されます。
図5-36 アクティビティ図の「コンポーネント」ウィンドウ
表5-6 アクティビティ図の要素
要素 | 説明 |
---|---|
アクション |
アクションは、請求書の送信や支払いの受領など、動作を指定する基本単位です。アクティビティ内の1つのステップを表します。アクションは、一連の入力を受け取って一連の出力に変換します。アクションの実行は、モデル化されたシステムにおける変換または処理を表します。 アクションは、制御フローおよびオブジェクト・フローの形で入力を受け取る場合があり(後者は入力ピンを介して)、その処理または変換の結果を送信制御フローまたはオブジェクト・フローへ(後者は出力ピンを介して)、そしてさらに下流ノードに渡します。アクションの実行は、すべての前提条件が満たされるまで開始されません。 |
アクティビティ |
ビジネス・プロセスなど、システムによって実行される動作。アクティビティは、独自の処理、オブジェクト・ノード、およびそれらの間のフローによって定義される動作です。 |
アクティビティ最終ノード |
制御トークンを初めて受信したとき、アクティビティの実行を終了します。最終ノードは、アクティビティに複数あってもかまいません。アクティビティ最終ノードは、このダイアグラム上の各アクションが終了したことを示します。 |
分岐/結合 |
垂直または水平の棒として表示されます。分岐は1つの受信フローと複数の送信フローを持つ制御ノードです。結合は複数の受信フローを1つの送信フローに同期する制御ノードです。分岐/結合のペアを、1つのダイアグラム・ノードとして組み合せることができます。 |
コール動作アクション |
アクションの入力と出力を適切な動作パラメータに単純にマップします。 |
コール操作アクション |
操作コール・リクエストをターゲット・オブジェクトに転送し、そこで関連する動作を呼び出させることができます。動作の結果はアクション出力になります。アクションの引数値は、呼び出された動作の実行に使用できます。 |
中央バッファ |
オブジェクト・ノードの一種。トークンを格納(バッファ)する機能をノードに付与します。1つ以上のオブジェクト・ノードからの受信フローに着信するトークンを管理し、送信フローを介してどのトークンをどの順序で下流のオブジェクト・ノードに渡すかを選択します。 |
制御フロー |
制御トークンのフローを示します。 |
データ・ストア |
一時的でないデータにバッファを渡すオブジェクト・ノードの一種。 |
フロー終了ノード |
アクティビティ全体の実行は終了せずに受信フローを終了させます。 |
初期ノード |
アクティビティを実行する開始点。受信フローはなく、複数の送信フローがあります。初期状態はダイアグラムに1回のみ指定できます。 |
オブジェクト・フロー |
オブジェクト・ノードを接続します。オブジェクト・フローは、ピンを使用してアクションに接続できます。 |
ノードのマージ |
マージ・ノードには、複数の受信フローと1つの送信フローがあります。決定には、1つの受信フローと複数の送信フローがあります。 |
ノードを作成するには、「コンポーネント」ウィンドウで「初期ノード」アイコン、「アクティビティ最終ノード」アイコン、または「フロー終了ノード」アイコンをクリックした後、ダイアグラム上のノードを配置する場所をクリックします。
ダイアグラムにパーティションを作成するには、アクションを選択してから、「プロパティ」ウィンドウの「表示オプション」で「アクティビティ・パーティションの表示」を選択します。
アクティビティ図にパーティションを表示するには、次のようにします。
シーケンス図は、クラス・インスタンス間の相互作用を表します。相互作用は、メッセージの交換としてモデル化されます。図5-38に示すように、シーケンス図の中核には、動作パターンを表すクラス・インスタンスとそれらの間で交換されるメッセージがあります。
図5-37 一般的なシーケンス図の例
「コンポーネント」ウィンドウから追加する要素は、シーケンス図のデフォルト位置にレイアウトされます。ライフラインは垂直方向に位置合せされますが、他のライフラインに関連する場合には、作成メッセージに位置合せされます。同期コールと非同期コールは、ページの上から下へ時系列に配置されます。
図5-39に、シーケンス図で使用できる「コンポーネント」ウィンドウの要素を示します。各要素は一意のアイコンと説明のためのラベルで表されます。
図5-38 シーケンス図の「コンポーネント」ウィンドウ
表5-7 シーケンス図の要素
要素 | 説明 |
---|---|
非同期コール |
ダイアグラム上では、対角線と開いた矢印で表されます。非同期コールは、送信者が処理を続行する前にレスポンスを待つ必要がないコールです。 |
作成メッセージ |
ダイアグラムでは、作成されるオブジェクトを表す四角形と破線が元のオブジェクトよりも下方向にシフトして表されます。作成メッセージは、オブジェクトの作成を導くメッセージです。 |
相互作用 |
システムでタスクを完了するためのオブジェクトの相互作用を示すことによって、1つのケースの動作を取得します。 |
メッセージ |
メッセージは、相互作用に関与するオブジェクト間で特定の通信を定義するモデル要素です。メッセージは、相互作用に関与するあるオブジェクトから他のオブジェクトへの情報を伝達し、ライフラインで表されます。 |
ライフライン |
ダイアグラム上では、四角形と下方向への垂直の破線で表されます。ライフラインは、一定期間のオブジェクトの存在を表します。 |
戻る |
戻りメッセージは、以前にメッセージが送信されたオブジェクトから戻されるメッセージです。戻りメッセージは同期コールからのみ有効で、それ自体が同期します。 |
メッセージの停止または破棄 |
ダイアグラムでは、実行仕様をメッセージ終端の大きい×印で表します。停止メッセージは、オブジェクトの削除を導く(または、オブジェクトが不要になったことを示す)メッセージです。 |
シーケンス図の一部でポップアップ・メニューを開き、「トレース・シーケンス」を選択します。トレーサは、各ステップをハイライト表示しながら実行仕様とメッセージをステップごとに実行します。
注意:
「トレース・シーケンス」は、相互作用を選択した場合に使用できます。ダイアグラム上のポップアップ・メニューには表れません。
ライフラインをシーケンス図に追加するには、相互作用を追加してから「ライフライン」アイコンをクリックし、相互作用をクリックします。編集ボックスが開き、オブジェクトのインスタンス名を入力できます。匿名のインスタンスの場合は空白のままにできます。
分類子を追加するには、ライフラインを右クリックし、「分類子の添付」を選択します。要素のリストが開き、ここからライフラインに関連付ける要素を選択できます。分類子を添付するには、分類オブジェクトを「データベース」ウィンドウからライフラインにドラッグする方法もあります。これらの方法は、分類要素を表すアイコンの外観(ライフラインの左上)によって確認できます。
同期コールを追加するには、「メッセージ」アイコンをクリックし、そのメッセージの開始ポイントとなる垂直の破線、つまり実行仕様をクリックします。次に、そのメッセージの宛先になる垂直の破線をクリックします。
テキストの編集ボックスを開くには、メッセージ線をクリックし、表示されたグレーのボックス内をクリックします。
同期コールの開始ポイントと宛先ポイントが同じライフラインである場合があります。この場合は、セルフ・コールを作成したことになります。
同期コールは、シーケンス図上では実線と塗りつぶされた矢印で表示されます。
実行仕様をマージするには、ダイアグラム上で重ねます。次に右クリックして、「重複発生のマージ」を選択します。
実行仕様(および添付されているメッセージ)は、元の位置から上下に移動できます。この移動によって、ダイアグラムが無効になる場合があります。ダイアグラムが無効になると、メッセージ線が赤に変わり、宛先のオブジェクトに矢印アイコンが付きます。このアイコンは、ダイアグラムを有効にするためにオブジェクトを移動する方向を示します。
実行仕様ボックスのサイズは、実行仕様ボックスを選択したときに下隅に表示される黒色の小さいボックスをドラッグして変更できます。メッセージ線をドラッグして延長すると、実行仕様のサイズが変更されます。
作成メッセージを追加するには、「作成メッセージ」アイコン、元のオブジェクト、作成するオブジェクトの順にクリックします。オブジェクトを表す四角形と破線が元のオブジェクトより下方向にシフトします。
作成するオブジェクトがまだダイアグラム上にない場合には、元のオブジェクトを含む相互作用をクリックし、そのオブジェクトを表すライフラインを作成します。デフォルトでは、作成メッセージには「create」という名前が指定されます。メッセージ名の編集ボックスを開くには、メッセージ線をクリックし、表示されたグレーのボックス内をクリックします。
停止または破棄メッセージを追加する前に、このメッセージによって削除されるオブジェクトのライフラインがすでに追加されている必要があります。
停止メッセージまたは破棄メッセージを追加するには、「メッセージの停止または破棄」アイコン、元のオブジェクト、削除するライフラインの順にクリックします。同じオブジェクトで停止メッセージを開始して終了すると、自己削除オブジェクトが作成されます。停止メッセージの終了時の実行仕様は、大きい十字によって示されます。メッセージ行をクリックして、表示される灰色のボックス内をクリックすると、メッセージ名(たとえば、close)の編集ボックスを開くことができます。
戻りメッセージを追加するには、「戻る」アイコンをクリックし、終了実行仕様をクリックします。次に、対応する開始実行仕様をクリックします。この戻りメッセージ線は別のオブジェクトで終了できません。戻りメッセージは、破線と塗りつぶされた矢印で表示されます。メッセージ・テキストの編集ボックスを開くには、メッセージ線をクリックし、表示されたグレーのボックス内をクリックします。
非同期コール(およびその終わりの実行仕様)を追加するには、「非同期メッセージ」アイコンをクリックし、そのメッセージの開始ポイントとなる垂直の破線、つまり実行仕様をクリックします。次に、そのメッセージの宛先になる垂直の破線をクリックします。メッセージ・テキストの編集ボックスを開くには、メッセージ線をクリックし、表示されたグレーのボックス内をクリックします。
非同期コールの開始ポイントと宛先ポイントが同じライフラインである場合があります。この場合は、セルフ・コールを作成したことになります。
非同期コールは、シーケンス図上では対角線と開いた矢印で表示されます。
結合フラグメントは、相互作用の演算子とそれに対応する相互作用オペランドによって定義される相互作用の式を定義します。結合フラグメントには、相互作用の演算子によって制御される一連の相互作用(これを相互作用オペランドと言います)が反映され、それに対応するブール条件を相互作用制約と言います。透明なウィンドウとして表示され、各オペランドを示す水平の点線で分割されます。
例5-40に、現金出納係が支払いを要求した後で購入品目を反復処理するループ・フラグメントの例を示します。この時点では2つの支払いオプションを考慮して別のフラグメントも作成し、現金とクレジットカードの2つのオペランドを分割して表しています。フラグメントがトレースを完了すると、支払い条件が満たされた時点で現金出納係が顧客に領収書を発行します。
図5-39 結合フラグメントを伴う一般的なシーケンス図
図5-41は、ダイアグラム・ウィンドウでダイアグラムを開くと「コンポーネント」ウィンドウに表示される結合フラグメントを示しています。
図5-40 「コンポーネント」ウィンドウの「結合フラグメント」
表5-8 結合フラグメントの相互作用演算子
相互作用演算子 | 説明 |
---|---|
代替 |
ブール条件に基づいて相互作用フラグメントを分割します。 |
アサート |
唯一有効なフラグメントの発生を示します。 |
ブレーク |
オペランドが、包含する相互作用フラグメントの残りのかわりに実行されるシナリオであるという意味で結合フラグメントがブレーク・シナリオを表すことを指定します。 |
クリティカル |
他の処理によって中断できないシーケンスを示します。 |
ループ |
オペランドが、相互作用制約で指定される回数繰り返されることを示します。 |
負 |
フラグメントが無効であることをアサートし、他の相互作用がすべて有効であることを表します。 |
オプション |
オプションの相互作用フラグメントを包括します。 |
パラレル |
オペランドが並行して処理されることを示します。 |
順序 |
結合フラグメントが弱く順序付けされることを示します。発生仕様が同じライフライン上にある場合に、最初のオペランドの発生仕様が2番目の発生仕様より優先されるかぎりオペランド内の順序は維持されるが、オペランドどうしの順序は未定義であることを示します。 |
厳密 |
オペランドの動作が厳密な順序で処理されることを示します。 |
シーケンス図の相互作用には、結合フラグメント・ロックのアイコンがあります。相互作用をロックまたはロック解除すると、ダイアグラム上のその相互作用内の結合フラグメントの動作を維持し、その範囲を他の相互作用や他のダイアグラムにまで拡張できます。
図5-42に示すように、ユースケース図は、システムの要件を取得します。
図5-41 一般的なユースケース図
ユースケース図は、使用するシステムの宣言された動作と、システムおよびエンティティがサブジェクトやアクターのユースケースに従ってその動作とどのように相互作用するかを表します。
図5-42は、ユースケース図に追加できる要素が表示された「コンポーネント」ウィンドウを示しています。各要素は一意のアイコンと説明のためのラベルで表されます。
図5-42 「コンポーネント」ウィンドウのユースケース要素
表5-9 ユースケース要素
コンポーネント | 説明 |
---|---|
アクター |
システム内の抽象ロールを表します。 |
通信 |
アクターが特定のユースケースに関連付けられている状況を示します。 |
依存性 |
要素間の関係を示します。 |
拡張 |
ターゲットのユースケースがソースのユースケースの定義を拡張することを示します。 |
汎化 |
1つ以上の要素が別の要素を特化している状況を示します。たとえば、あるアクターTeam MemberがアクターManagerとアクターDeveloperに特化されている場合があります。 |
対象 |
ユースケースで、他のユースケースを含む関係を示します。 |
サブジェクト |
サブジェクトには2つのタイプがあります。1つのシステムには通常、モデル化の対象となるシステム全体を構成するユースケースとアクターのセットが含まれます。2つ目のタイプには通常、開発の対象となる一貫性のあるシステム部分を構成するユースケースのグループが含まれます。 |
ユースケース |
1つの要素が、相互作用を実行するために他の要素を必要とすることを示します。 |
サブジェクト、アクター、その他のタイプのオブジェクトの外観や他の属性を決定するには、「プロパティ」ウィンドウでプロパティを変更するか、オブジェクトを右クリックしてプロパティを変更します。
図5-43 ユースケースのサブジェクト、アクター、オブジェクトの例
モデル化するシステムは、そのシステムのすべてのアクターとユースケースをサブジェクト内に囲んで表示できます。サブジェクト・ライン内のユースケースを包括するグループによって開発対象を表示します。サブジェクトをダイアグラムに追加するには、「コンポーネント」ウィンドウで「サブジェクト」をクリックし、サブジェクトが占める領域をカバーするようにポインタをドラッグします。図5-44に、関連するアクターに会計サブジェクトを接続している例を示します。サブジェクトの内部に要素をドロップすると、要素を包含するようにサブジェクト・ラインが拡張されます。手動でサブジェクトのサイズを変更することもできます。サイズを縮小して表示しきれない要素がある場合には、右下隅に省略記号が表示されます。
ダイアグラム上にアクターを作成するには、「コンポーネント」ウィンドウ上で「Actor」アイコンをクリックし、次にダイアグラム上でアクターを作成する位置をクリックします。
アクターまたはユースケースのプロパティを変更するには、モデル化された要素をダブルクリックして、エディタでその要素の詳細を編集します。
「相互作用」は、ダイアグラムに直接配置できる唯一の要素です。他の要素はすべて、「相互作用」の内部に配置します。
アクターとユースケース間の相互作用をダイアグラム上で表現するには、「コンポーネント」ウィンドウの「通信」アイコンを使用します。また、アクター間およびユースケース間の汎化構造を作成するには、「汎化」アイコンを使用します。1つのユースケースが別のユースケースを包含する状況を表すには、「対象」アイコンを使用し、1つのユースケースが別のユースケースを拡張する状況を表すには、「拡張」アイコンを使用します。
ノート、依存関係およびURLリンクを使用して、ユースケース図に注釈を追加できます。注釈コンポーネントは、「コンポーネント」ウィンドウ下部の「ダイアグラムの注釈」から使用できます。
ユースケース・モデラーは、ユースケース・モデルからHTMLファイルのセットを生成できます。各HTMLファイルは、ユースケース要素のいずれかに対応します。HTMLファイルは、その関連するUML要素と同じプロジェクトに生成されるため、アプリケーション・ナビゲータに表示され、エディタで開いたり編集したりすることができます。
既存のユースケース・モデルからHTMLファイルを生成するには、図5-45に示すように、ダイアグラム上を右クリックして、「HTMLにエクスポート」を選択します。
図5-44 ユースケース・モデルからのHTMLのエクスポート
図5-46に示すように、「モデルのエクスポート中」ダイアログには、エクスポートしようとしているモデルの変更が表示されます。
図5-45 エクスポートする変更
「モデルのエクスポート中」ダイアログは表です。その行は、エクスポートする変更の詳細を表します。右側の列には、モデルの変更のタイプが表示されます。変更には3つのタイプがあります。
「追加済」。ユースケース要素に対応するHTMLファイルはまだありません。
「削除済」。ユースケース要素はモデルから削除されましたが、対応するHTMLファイルはプロジェクトに残っています。
「変更済」。ユースケース要素がモデルで変更されたため、対応するHTMLファイルとは異なります。
表の最初の列にはチェック・ボックスがあり、このボックスによって、モデルの関連する変更のエクスポートが有効または無効になります。デフォルトでは、すべてのチェック・ボックスが選択されています。ダイアログが確定されると、HTMLファイルが生成され、既存のユースケース・モデル要素と一緒にアプリケーション・ナビゲータに表示されます。生成されたHTMLファイルの接尾辞は、.uml
ではなく.xhtml
です。
図5-46 エクスポート済モデル
ユースケース・モデルがエクスポートされると、引き続きそのモデルを変更して、新しい変更を生成された既存のHTMLファイルのセットに伝播できます。図5-47を、図5-48のように変更するとします。
図5-47 「HTMLにエクスポート」後の変更済ユースケース・モデル
エクスポート後の変更済モデルの詳細は、図5-48のようになります。
図5-48 変更済モデルのエクスポート
表示されているように、新しいユースケース「Select Class」はHTMLファイルのセットに追加されますが、ユースケース「Select Seat」は削除されます。サブジェクト「Booking System Flight Booking」には新しいユースケースが含まれるため、このサブジェクトは変更されます。また、ユースケース「Upgrade Flight」には以前とは別のユースケースが含まれるため、このユースケースは変更されます。ダイアログが確定されると、変更が適用されてアプリケーション・ナビゲータに反映されます。図5-50に示すように、アプリケーション・ナビゲータには、新しいユースケース「Select Class」が表示されますが、「Select Seat」は表示されなくなっています。
図5-49 エクスポート後の変更済モデル
ユースケース・モデルは、「uml」カスタム・タグを含むHTMLファイルのセットからもインポートできます。ただし、最初にHTMLでユースケース・モデルを完全に作成してからユースケース・モデラーにインポートする方法はお薦めしません。インポート機能の主な存在目的は、HTMLファイルに細かい変更を時々行って、その変更をユースケース・モデルに適用できるようにすることです。HTMLファイルは、JDeveloperの組込みHTMLエディタまたはその他の外部テキスト・エディタで編集できます。
HTMLファイルを編集するには、アプリケーション・ナビゲータでそのファイルのエントリをダブルクリックし、エントリをHTMLソース・エディタのメイン・エディタ・パネルで開きます。ファイルは、UMLネームスペース・タグを埋め込むHTMLドキュメント(正確にはXHTML)で構成されます。
図5-50 HTMLユースケースの編集
図5-51に、ユースケースHTMLファイルの内容が表示されたエディタを示します。関連するアクターへの通信アソシエーションが示されています。これは、<uml:usecase_communicates>
要素に含まれるHTMLリンクです。たとえば、該当のアソシエーションを削除する必要がある場合、図5-52に示すように、アンカー要素をそれを包含するHTMLリスト要素から削除します。
図5-51 通信ユースケースの削除
別のユースケースに通信アソシエーションを追加するには、HTMLファイルを開き、<uml:usecase_communicates>
要素を見つけます。次に、図5-53に示すように、以前に削除されたアンカー要素をリスト要素に挿入します。
図5-52 通信ユースケースの追加
インポートの実行前に、変更したすべてのHTMLファイルが保存されていることを確認します。ダイアグラムを右クリックしてコンテキスト・メニューを表示し、「XHTMLからインポート」を選択します。図5-54に示すように、「モデルのインポート中」ダイアログには、モデルに適用される変更が表示されます。
図5-53 モデルのインポート
ダイアログは、2つのHTMLファイルに加えた変更が、モデルの対応するUseCase要素に適用されることを示しています。ダイアログを確定すると、アクターと「Upgrade Flight」ユースケースとの間に新しい通信アソシエーションが描画され、さらに同じアクターと、ダイアグラムから削除される「Book Flight」ユースケースとの間に新しい通信アソシエーションが描画されます。
図5-54 インポート後に修正されたモデル
プロファイルにより、様々なプラットフォームとドメインに対するUMLメタモデルまたはモデル化されたビジネス・プロセスを調整できます。
プロファイル図は、カスタム・ステレオタイプ、タグ付けされた値および制約を定義することにより、軽量なUML拡張メカニズムを提供する構造ダイアグラムです。ステレオタイプは特定のメタクラス、タグ付けされた値は標準メタ属性、プロファイルは特定の種類のパッケージになります。メタモデルのカスタマイズは、パッケージに適用されるプロファイルで定義されます。
プロファイルは、動的にモデルに適用したり、除外したりできます。これらは、複数のプロファイルが同じモデルに同時に適用されるように動的に組み合せることもできます。プロファイルは、特定のドメイン、プラットフォームまたはメソッド固有の構成による既存メタモデルの調整またはカスタマイズのみ可能です。メタモデルに適用される制約を除外することはできませんが、プロファイルを使用して新しい制約を追加できます。
プロファイル図の作成方法:
「ファイル」→「新規」の順に選択します。新規ギャラリが表示されます。
「カテゴリ」パネルで「一般」ノードを開き、「UML」ノードを選択します。「項目」パネルにUML要素がリストされます。
「項目」パネルで「プロファイル図」を選択して、「OK」をクリックします。
プロファイル図の詳細を指定して、「OK」をクリックします。プロファイル図が「アプリケーション」ウィンドウに追加されます。
プロファイルをXMIとしてエクスポートする方法、プロファイルをダイアグラムに追加する方法、およびプロファイルをUMLパッケージに適用する方法については、「UMLプロファイルの使用」を参照してください。
図5-55 プロファイル図
ダイアグラムに表されるクラスの定義、クラスのメンバー、継承およびコンポジット関係は、クラスのJavaソース・コードから直接導出されます。これらはすべてJavaコードとして作成され、ダイアグラムに表示されます。ダイアグラムに表示されているクラスのソース・コードを変更、追加または削除した場合、これらの変更内容は、ダイアグラム上のこれらのクラスおよびインタフェースに反映されます。反対に、モデリングされたクラスに対する変更は、基礎となるソース・コードにも行われます。Javaクラス図上に表示されたコンポジット関係または参照に関する情報の中には、Javadocタグとしてソース・コードに格納されているものもあります。
Javaクラス図には、他のダイアグラム・タイプ(Oracle ADF Business Components、UML要素、Enterprise JavaBeansおよびデータベース・オブジェクト)の図形を含めることができます。
Javaクラス、インタフェースまたは列挙をダイアグラム上に作成するには、そのダイアグラムに対するJavaの「コンポーネント」ウィンドウで「Javaクラス」アイコン、「Javaインタフェース」アイコンまたは「Java Enum」アイコンをクリックし、次に、そのクラスを作成するダイアグラムをクリックします。モデリングされたクラスまたはインタフェースのJavaソース・ファイルは、プロジェクトの設定で指定された位置に作成されます。
「Javaクラス」、「Javaインタフェース」、および 「Java Enum」の各アイコンは、Javaクラスの名前および詳細を含む四角形として図に表示されます。Javaクラスおよびインタフェースはコンパートメントに分割されており、各コンパートメントに含まれている情報は1種類のみです。
大きさが不足し、すべての内容を表示できない各コンパートメントには、省略記号(...)が表示されます。すべてのフィールドおよびメソッドが表示されるようにモデリングされたクラスを表示するには、クラスを右クリックし、「図形サイズの最適化」 、「高さと幅」を選択します。
ダイアグラム上のクラスの各タイプは、名前コンパートメントのステレオタイプにより識別されます。これは、デフォルトでは表示されません。
メンバー(フィールドおよびメソッド)には、可視性を表す記号が表示されます。可視性の記号には、Public (+)、Private (-)およびProtected (#)があります。可視性の記号が使用されていない場合、フィールドまたはメソッドの可視性はPackageになります。
様々なパッケージ、現在のアプリケーションまたはライブラリにあるプライマリ・クラスや内部クラスをダイアグラムに含めることができます。内部Javaクラスおよび内部Javaインタフェースは、それらを所有するクラスのメンバーとして定義します。そのため、これらのクラスはメンバー・クラスとも呼ばれます。
内部クラスおよび内部インタフェースは、ダイアグラム上のモデリングされたJavaクラスまたはJavaインタフェースの内部クラス・コンパートメントに表示されます。内部クラスにはClassという語が、内部インタフェースにはInterfaceという語が接頭辞として付き、可視性の記号とクラス名またはインタフェース名の間に挿入されます。
モデリングされたJavaクラスまたはインタフェースに内部クラスまたは内部インタフェースを作成するには、実装Javaコードに内部クラスを追加するか、既存のモデリングされたクラスの内部ノードとして新規Javaクラスまたはインタフェースを作成します。
内部Javaクラスおよび内部Javaインタフェースには、Javaクラス、Javaインタフェースまたはパッケージに含まれるものと同じ名前を付けることはできません。また、staticフィールドやstaticメソッドを含めることはできません。
ダイアグラムのJavaクラスのJavaクラス・コンポーネント・ウィンドウの様々な参照アイコンを使用して、ダイアグラムのクラスとインタフェースとの間に、これまでアソシエーションと呼ばれていた様々な参照をすばやく作成できます。モデリングされたJavaクラス間に作成された参照は、参照を実装するクラスのソース・コードではフィールドとして表されます。ダイアグラム上のコンポジット関係は、参照の方向で開いた実線の矢印で表示されます。表5-10は、ダイアグラムにモデリング可能な参照を示しています。
表5-10 クラスまたはインタフェース間の参照
参照 | 説明 |
---|---|
参照(オブジェクト) |
クラスまたはインタフェース間の唯一の直接参照。これは、 |
参照(配列) |
別のクラスまたはインタフェースの配列への参照。これは、 |
参照(コレクション) |
これは、コレクション宣言としてコードに表されます。必須のimport java.util.Collection;文、およびこの参照を識別するための |
参照(リスト) |
これは、リスト宣言としてコードに表されます。必須のimport java.util.List;文、およびこの参照を識別するための |
参照(マップ) |
これは、マップ宣言としてコードに表されます。必須のimport java.util.Map;文、およびこの参照を識別するための |
参照(セット) |
これは、セット宣言としてコードに表されます。必須のimport java.util.Set;文、およびこの参照を識別するための |
注意:
ダイアグラム上の参照のプロパティを迅速に変更するには、その参照をダブルクリックしてコード・エディタを表示し、参照の詳細を変更します。
デフォルトでは、参照のラベルが表示されません。参照のラベルを表示するには、参照を右クリックして「ビジュアル・プロパティ」を選択し、「ラベルの表示」を選択します。デフォルトのラベル名は、その参照を表すフィールド名です。ダイアグラムでこのラベル名を選択して変更すると、コードでは @label <label_name>
Javadocタグが参照を表すフィールドの前に追加されます。
ダイアグラム上の参照で使用される集約記号を変更できます。そのためには、まずその参照を右クリックして「参照集約タイプ」を選択し、次に「なし」、「弱い」(@aggregation
shared Javadocタグが参照を表すコードに追加されます)、または「強い」(@aggregation
composite Javadocタグが参照を表すコードに追加されます)を選択します。集約記号は、文書化の目的にのみ使用されます。
Javaソースで extends
文として表現される継承構造は、ダイアグラムのJavaクラス・コンポーネント・ウィンドウの「拡張」アイコンを使用してJavaクラスのダイアグラムに作成できます。拡張関係は、ダイアグラムでは、拡張クラスまたはインタフェースの方向を白抜きの矢印で指す実線として表示されます。
インタフェースをクラスによって実装する場合、ダイアグラムのJavaコンポーネント・ウィンドウで「実装」アイコンを使用して、インタフェースを作成できます。実装関係を作成すると、実装クラスのソース・コードにimplements
文が追加されます。実装関係は、ダイアグラムでは、実装されたJavaインタフェースの方向を白抜きの矢印で指す破線として表示されます。
拡張関係は、同一クラス・モデルにおける要素間の継承をモデリングします。クラス定義にextends文を作成して、Javaクラス間およびJavaインタフェース間の拡張関係を作成できます。列挙は他のクラスを拡張したり、他のクラスで拡張することはできません。
注意:
Javaでは多重クラス継承をサポートしていないため、ダイアグラムのJavaクラスからモデリングできる拡張関係は1つのみです。多重拡張関係は、Javaインタフェースからモデリングできます。
実装関係は、モデリングされたJavaインタフェースを、モデリングされたJavaクラスを使用して実装することを指定します。これは、Javaクラスのソースではimplementsキーワードとして表されます。クラス図における実装関係は、実装されるインタフェースへ向けた、先端が白抜きの破線矢印で表します。列挙は
インタフェースを実装できません。
実装されたインタフェースが、モデリングされた別のインタフェースの拡張である場合(extends関係を使用)、これはインタフェースのJavaソース・コードに反映されます。
インタフェースを実装するクラスでは、そのインタフェースの一部またはすべての抽象メソッドの実装が可能です。あるクラスがインタフェースのメソッドを部分的にしか実装しない場合でも、そのクラスはabstractとして定義されます。
Javaクラスまたはインタフェースのメンバー(フィールドおよびメソッド)をダイアグラムに作成できます。フィールドおよびメソッドを、ダイアグラム上のモデリングされたJavaクラスおよびインタフェースに追加します。そのためには、モデリングされたJavaクラスまたはインタフェースをダブルクリックし、Javaソース・エディタを使用してフィールドまたはメソッドを追加します。
フィールドは、モデリングされたJavaクラスまたはJavaインタフェースの特性をカプセル化するために使用されます。モデリングされたすべてのフィールドには、名前、データ型および指定された可視性があります。
フィールドまたはメソッドがダイアグラムのクラスに表示されるとき、接頭辞として+ (publicとして宣言される場合)、- (privateとして宣言される場合)または# (protectedとして宣言される場合)が付きます。staticフィールドはダイアグラム上で下線が引かれます。
メソッドは、クラス内でそのクラスの動作を定義します。メソッドには、スカラー型または他のクラスで定義した型のいずれかの戻り型を指定できます。
ダイアグラムでインプレース編集機能を使用してクラスの名前を変更またはクラスを移動すると、そのクラスのソース・コードが自動的にリファクタされます。ダイアグラムでJavaパッケージの名前を変更またはパッケージを移動すると、そのパッケージの内容が自動的にリファクタされます。
ダイアグラムでフィールド、メソッドまたは内部クラスを削除すると、自動的に「安全に削除」リファクタ・パターンが適用されます。ダイアグラムのJavaクラス、インタフェース、列挙またはメンバーにリファクタ・パターンを適用するには、ダイアグラムで対象となるクラスまたはメンバーを選択し、「リファクタ」メニューから目的のリファクタ・パターンを選択します。
Javaクラス図のJavaクラス、インタフェースおよび列挙では、次のリファクタ・パターンを使用できます。
名前の変更
移動(ダイアグラムで1つ選択した場合にも複数選択した場合にも適用されます)
複製
インタフェースの抽出
スーパークラスの抽出
Javaクラス図のJavaフィールドおよびメソッドでは、次のリファクタ・パターンを使用できます。
リファクタ操作を開始するには、次のようにします。
Enterprise JavaBeans (EJB)のモデル化により、EJBエンティティ関連およびアーキテクチャを視覚化し、プロパティおよびメソッドを移入できるBeanのセットを迅速に作成し、またそのBeanおよびBean間の関連と参照のグラフィカル表示を作成できます。Beanがモデル化されると、基礎となる実装ファイルも常に作成されます。
EJBをモデル化するため、EJBダイアグラムの作成を開始します。詳細は、「新規ダイアグラムの作成」を参照してください。UMLクラス、Javaクラス、ビジネス・コンポーネント、オフライン・データベース表、UMLユースケース、Webサービスなどの他の要素は、後で同じダイアグラムに追加できます。詳細は、「ダイアグラム要素の使用」を参照してください。
モデリング・オプションは次のとおりです。
エンティティBeanは、コンテナ管理の永続性(CMP)またはBean管理の永続性(BMP)になります。Bean管理の永続性を使用してエンティティBeanを作成する前に、そのエンティティBean間の関連を作成する必要があるかどうかを検討することもできます。関連は、コンテナ管理の永続性を持つエンティティBean間にのみ作成できます。
セッションBeanのセッション・タイプをクラス図で変更するには、セッションBeanを右クリックし、「セッション・タイプ」、次に「ステートフル」、または「セッション・タイプ」、次に「ステートレス」を選択します。
メッセージドリブンBeanは、(EJB参照を使用して)セッションBeanおよびエンティティBeanと対話するために最も頻繁に使用されます。
Enterprise JavaBeansは、「コンポーネント」ウィンドウで「エンティティBean」アイコン、「セッションBean」アイコンまたは「メッセージドリブンBean」コンポーネントを使用して、ダイアグラム上に作成されます。コンポーネントを選択し、必要なスポットでダイアグラムをクリックします。モデル化された要素の実装ファイルは、プロジェクト設定で指定された場所に作成されます。
ヒント:
ダイアグラムでモデル化されたBeanの実装Javaクラスをモデル化する場合は、モデル化されたBeanを右クリックし、実装ファイルを表示を選択します。
プロパティとメソッドを追加するには、BeanをダブルクリックしてEJBモジュール・エディタでプロパティまたはメソッドを追加するか、モデル化されたBean自体で新規のプロパティまたはメソッドをインプレースで作成します。
モデル化されたセッションBeanとエンティティBeanは、複数のコンパートメントで構成されます。たとえば、メッセージドリブンBeanに含まれるのは、«message-driven bean»
ステレオタイプおよびBeanの名前を含む名前コンパートメントのみです。EJB 3.0 Beanでは、インタフェースのコンパートメントがないため、モデルの外観は異なります。
図5-56 EJB/JPAコンポーネント・ダイアグラム
Bean間の関連とエッジに注意してください。一方のBeanからリモートまたはローカル・インタフェースを持つ他方のBeanへの参照を作成できます。参照をモデル化できるのは、現在のデプロイメント・ディスクリプタ内にあるBean間のみです。
関連コンポーネントを「コンポーネント」ウィンドウからドラッグして、1つのクラス図での2つのエンティティ間の関連をモデル化できます。また、ルート・エンティティと子エンティティの間の継承エッジも表示できます。
1つのダイアグラムで2つの関連をモデル化するには、次のようにします。
一方のBeanからリモート・インタフェースを持つ他方のBeanへの参照は、「EJB参照」アイコンを使用して作成できます。一方のBeanからローカル・インタフェースを持つ他方のBeanへのローカル参照は、ダイアグラムの「EJBコンポーネント」ウィンドウの「EJBローカル参照」アイコンを使用して作成できます。
モデル化されたエンティティBean間の様々な関連を迅速に作成するには、1対*関係 アイコン、有向1対1関係アイコン、有向1対*関係アイコンおよび「有向厳密集約」アイコンを使用します。
モデル化されたEJBにプロパティを追加するには、BeanをダブルクリックしてEJBモジュール・エディタでプロパティまたはメソッドを追加するか、モデル化されたBeanで新規のプロパティまたはメソッドを直接作成します。
モデル化されたBeanで直接プロパティを作成するには、プロパティの名前とデータ型を入力します。次に例を示します。
name : java.lang.String
Public (+)可視性の記号が、プロパティの先頭に自動的に追加されます。
注意:
String
またはLong
などのパッケージ接頭辞を付けずにjava.lang
パッケージからのプロパティ・タイプを入力すると、java.lang.
プロパティ・タイプ接頭辞が自動的に追加されます。プロパティのタイプが指定されていない場合は、デフォルト・タイプ'String
' (java.lang.String
)が使用されます。
クラス・ダイアグラム上で、モデル化されたBeanにローカル/リモートおよびローカル/ローカル・ホームの両方のメソッドを作成できます。
モデル化されたBeanにインプレースでメソッドを作成するには、名前を入力し、オプションでパラメータ型と名前およびメソッドの戻り型を入力します。メソッドの戻り型の前には、コロン(:)を付ける必要があります。次に例を示します。
getName(String CustNumber) : java.lang.String
Public (+)可視性の記号が、メソッドの先頭に自動的に追加されます。
注意:
String
またはLong
など、パッケージ接頭辞を付けずにjava.langパッケージからの戻り型を入力すると、戻り型接頭辞java.lang.
がメソッドのクラスのJavaに自動的に追加されます。パラメータ・タイプが指定されていない場合、メソッドはパラメータなしで定義されます。戻り型が指定されていない場合は、デフォルトの戻り型voidが使用されます。メソッドのプロパティを変更するには、ダイアグラムまたは「アプリケーション」ウィンドウでクラスをダブルクリックし、EJBエディタを使用してメソッドの詳細を変更します。
クラス・ダイアグラム上で、モデル化されたBean間に参照を作成できます。
一方のBeanからリモート・インタフェースを持つ他方のBeanへのEJB参照を作成できます。
一方のBeanからローカル・インタフェースを持つ他方のBeanへのEJBローカル参照を作成できます。
注意:
参照を作成できるのは、現在のデプロイメント・ディスクリプタ内にあるBeanに対してのみです。
モデル化されたBean間の参照をモデル化するには、次のようにします。
モデル化された各Beanには、その要素の実装コードを含む基礎となるJavaソース・ファイルがあります。これらの実装ファイルは、モデル化されたJavaクラスとしてダイアグラムに表示できます。
モデル化されたBeanのモデル化された実装Javaクラスを表示するには、次のようにします。
ダイアグラムでJava実装をモデル化するBeanを選択し、「モデル」→「表示」→「実装ファイル」を選択します。
または、Beanを右クリックし、実装の表示→「ファイル」を選択します。
モデル化されたBeanのJavaソース・コードは、ダイアグラムのシンプル・コマンドでソース・エディタに表示できます。
モデル要素のJavaソース・コードを表示するには、次のようにします。
ダイアグラムの要素を右クリックします。「ソースに移動」を選択し、表示するソース・ファイルを選択します。
要素を選択し、「モデル」→「ソースに移動」を選択します。
ポップアップ・メニューを使用して、プロパティまたはメソッドのアクセス・レベルを変更できます。
プロパティまたはメソッドのアクセス・レベルを変更するには、次のようにします。
データベース構造をモデル化すると、データベース・スキーマ、およぴオンラインまたはオフラインの表間の関連をビジュアルに表示できます。また、変換機能を使用すると、データベース表をUMLクラスに、またその逆に変換できます。データベースの変換の詳細は、「UML-オフライン・データベース変換」を参照してください。
JDeveloperを使用して、オフライン・データベース・オブジェクトを、稼働中のデータベース接続のデータベース・オブジェクトと同様にモデル化できます。また、表や外部キー関係などのデータベース・オブジェクトをダイアグラム上で作成し、それをオンラインまたはオフライン・データベースに統合できます。作成した新規オブジェクトと同様、オンラインまたはオフライン・データベースのすべてのデータベース・オブジェクトは「アプリケーション」ウィンドウに表示されます。
オフライン・オブジェクトが、アプリケーション・ナビゲータの「オフライン・データベース・ソース」ノードに表示されます。
アプリケーションを構成するオンライン・データベース接続は、アプリケーション・ナビゲータの「アプリケーション・リソース」ビューの「接続」→「データベース」ノードに表示されます。
アプリケーション間で共有されるオンライン・データベース接続は、データベース・ナビゲータに表示されます。このナビゲータには、「ウィンドウ」→「データベース」→「データベース」からアクセスできます。
データベース・ダイアグラムを使用して、表および外部キー関係、ビューおよび結合オブジェクト、マテリアライズド・ビュー、シノニム、およびシーケンスなどの図コンポーネント上で直接作成、およびデータベース・オブジェクト構造と関係を表示できます。
データベース・ダイアグラムの作成は、「新規ギャラリ」で行います。「新規ダイアグラムの作成」を参照してください。
図5-57に示すとおり、データベース・ダイアグラムは、作成後に「コンポーネント」ウィンドウのコンポーネントから選択できます。
図5-57 「データベース・コンポーネント」ウィンドウ
ダイアグラムにオフライン・データベース・オブジェクトを作成するには、「データベース・オブジェクト」の「コンポーネント」ウィンドウで該当するアイコンをクリックし、オブジェクトの作成先であるダイアグラムをクリックします。このプロセスにより、既存のオブジェクトがデータベース・ダイアグラムに追加されます。
「データベース」ウィンドウのデータベース接続から、または「アプリケーション」ウィンドウのオフライン・スキーマからオブジェクトをドラッグすることもできます。
データベース・ダイアグラムに外部キーを作成するには、外部キーの作成元となる表をクリックして、ターゲット宛先の表をクリックします。「外部キーの作成」ダイアログを使用すると、ターゲット表の既存の列を選択するか、新しい列を作成できます。ターゲットの表は、外部キーの所有者になります。
すべてのテンプレートは、オフライン・データベース・プロパティ・ダイアログで定義されます。作成しているオブジェクトのオフライン・データベースにそのオブジェクトの作成用テンプレートが定義されている場合、<ObjectType>
コンポーネントを使用すると、そのテンプレートに基づいてオブジェクトが作成されます。たとえば、オフライン・データベース「Database1」にテンプレート表「MyTab」がある場合、「コンポーネント」ウィンドウの表オプションを使用してDatabase1に新しい表を作成すると、作成した新しい表はテンプレート「MyTab」に基づいた内容になります。既存オブジェクトはオフライン・データベースからダイアグラムに追加されます。
ダイアグラムにシノニムを作成するには、「コンポーネント」ウィンドウに移動して「データベース」を選択します。「データベース」リストから、「パブリック・シノニム」または「プライベート・シノニム」をクリックして、シノニムを作成するダイアグラムをクリックします。どちらのコンポーネントにも「パブリック」プロパティのチェック・ボックスが含まれていることに注意してください。このボックスは、パブリック・シノニムの場合は自動的に選択され、プライベート・シノニムの場合はデフォルトで選択解除されます。
オンライン・データベース接続からオブジェクトをドラッグ・アンド・ドロップすることもできます。データベース接続からオフライン・データベースにオブジェクトをインポートするには、既存のオブジェクトをデータベース接続からダイアグラムに追加します。
ダイアグラムにシーケンスを作成するには、ダイアグラムの「データベース・オブジェクト」の「コンポーネント」ウィンドウに移動し、「シーケンス」を選択してから、シーケンスを作成するダイアグラムをクリックします。
データベース接続から、または「アプリケーション」ウィンドウのオフライン・データベースから、シーケンスをドラッグしてダイアグラム上にドロップする方法もあります。
注意:
後続のデータベース・オブジェクトはすべて、選択したデータベースまたはスキーマで作成されます。既存のオブジェクトは変更されません。
次の手順に従って、データベース・ビューを作成します。
データベース接続からオフライン・データベースにオブジェクトをインポートするには、既存のオブジェクトをデータベース接続からダイアグラムに追加します。
基本リレーションの使用方法は、表またはビューにリレーションを指定するFROM句のコンポーネントになります。FROM句を指定したSQL問合せを定義する場合(入力可能またはクエリー・ビルダーを使用して実行可能)、リレーション使用方法オブジェクトは、ビュー・コンポーネントに自動的に追加されます。
ビューの基本リレーションを定義するには、「コンポーネント」ウィンドウに移動して「データベース」を選択します。リストで、「リレーション使用方法」をクリックして、図形の表示をクリックします。