演習 3.6: EJB コンポーネント・サブパッケージのモデル化

この演習では、EJB 実装設計サブパッケージをモデル化します。このサブパッケージは、アプリケーションのデータを保持するドメイン・モデルを備えた Enterprise JavaBeans (EJB) レイヤーをモデル化したものです。EJB レイヤーは、itso.ad.business レイヤーのビジネス・ロジックを実装します。

EJB 実装設計サブパッケージは、次の表の 3 つのサブパッケージに分割されます。

パッケージ 説明
model このサブパッケージは、永続的アプリケーション・データを示すドメイン・クラスを表します。モデル・サブパッケージには、分析モデルで定義した Customer クラスおよび Account クラスが含まれています。
to このサブパッケージには、モデルの設計レイヤー間で情報を抽象化する転送オブジェクトが含まれています。この転送オブジェクトは、Customer クラスおよび Account クラスによって実装されるインターフェースです。
facade このサブパッケージには、PiggyBank オンライン・バンキング・システム用のビジネス・ロジックの実装が含まれています。セッション・ファサード (facade) には、PiggyBank ユースケース・モデルで記述された残高表示、振り替え、および小切手換金操作などの機能タスクを定義した PiggyBankController クラスが含まれています。

この演習では、Customer および Account ドメイン EJB クラスとそれらのインターフェースを作成します。また、framework パッケージに IAccount および ICustomer インターフェースを作成します。

ドメイン Enterprise Bean のモデル化

Customer および Account Enterprise Bean は、PiggyBank 設計モデルのドメインを形成し、アプリケーション・データを保持するために使用されます。Customer クラスおよび Account クラスは、PiggyBank 分析モデルで識別した 2 つの同じクラスから派生しています。Account クラスおよび Customer クラスを表示する元のドメイン図。PiggyBank 設計モデルには、永続可能な Check クラスおよび Transfer クラスは含まれていません。 設計時に振り替えデータまたは小切手データを保持しないように決定したため、永続可能な Transfer および Check ビジネス・オブジェクトを作成する必要はありません。

EJB カスタマーをモデル化するには、以下のようにします。
  1. 「モデル・エクスプローラー」ビューで、「エンタープライズ IT 設計モデル」「PiggyBank 実装設計 (PiggyBank Implementation Designs)」を展開します。
  2. 「itso.ad.business」サブパッケージを右クリックし、次に、「UML の追加」>「パッケージ」をクリックします。
  3. パッケージに model という名前を付けます。
  4. 「モデル・エクスプローラー」ビューで、「メイン」をダブルクリックします。
  5. ダイアグラム・エディターで、図に model - 永続エンティティー (EJB) モデル (model - Persistent Entity (EJB) Model) という名前を付けます。
  6. パレットで、「クラス」をダブルクリックし、クラスに Customer という名前を付けます。

Customer クラスのパラメーターをモデル化するには、以下のようにします。
  1. ダイアグラム・エディターで、Customer クラスを右クリックし、次に、「UML の追加」>「属性」をクリックします。
  2. 属性に name という名前を付けます。
  3. 「プロパティー」ビューで、「タイプの選択」をクリックします。
  4. 「要素の選択」ウィンドウで、「文字列」をクリックします。
  5. もう 1 つの属性を Customer クラスに customerID という名前の文字列タイプで追加します。
  6. ダイアグラム・エディターで、Customer クラスを右クリックし、次に、「UML の追加」>「操作」をクリックします。
  7. 操作に getData という名前を付けます。
  8. 「プロパティー」ビューで、「戻り値の型の設定」をクリックします。
  9. 「要素の選択」ウィンドウで、「itso.ad.business」「framework」を展開し、「interfaces.to」サブパッケージで、「ICustomerTO」をクリックします。

カスタマー・エンティティー EJB の作成が完了しました。作成した図は次のようになります。

カスタマー EJB

EJB 口座をモデル化するには、以下のようにします。
  1. パレットで、「クラス」をダブルクリックし、クラスに Account という名前を付けます。
  2. ダイアグラム・エディターで、Account クラスを右クリックし、次に、「UML の追加」>「属性」をクリックします。
  3. 属性に 差引金額 (balance) という名前を付けます。
  4. 「プロパティー」ビューで、「タイプの選択」をクリックします。
  5. 「要素の選択」ウィンドウで、「整数」をクリックします。
  6. 文字列タイプの属性を、accountNumber という名前の Account クラスに追加します。
  7. ダイアグラム・エディターで、Account クラスを右クリックし、次に、「UML の追加」>「操作」をクリックします。
  8. 操作に getData という名前を付けます。
  9. 「プロパティー」ビューで、「戻り値の型の設定」をクリックします。
  10. 「要素の選択」ウィンドウで、「itso.ad.business」「framework」を展開し、「interfaces.to」サブパッケージで、「IAccountTO」をクリックします。
  11. パレットで、「関連」をクリックします。
  12. ダイアグラム・エディターで、Customer クラスをクリックして、Account クラスへドラッグします。
  13. ダイアグラム・エディターで、関係をクリックします。
  14. 「プロパティー」ビュー内の「Accounts」「多重度」フィールドに、* と入力します。

永続エンティティー EJB モデル図の作成が完了しました。Customer および Account Enterprise Bean の getData 操作は、直前の演習で作成した転送オブジェクト・インターフェースを返すことに注意してください。作成した図は次のようになります。

Customer および Account EJB の関係

転送オブジェクト Enterprise Bean のモデル化

転送オブジェクト Enterprise Bean は、PiggyBank 設計モデルのレイヤー間でデータを転送するために使用されます。PiggyBankEJBCustomerTO および PiggyBankEJBAccountTO は、フレームワーク・コンポーネント・レイヤーで定義した ICustomer および IAccount インターフェースを実装します。

PiggyBankEJBCustomerTO カスタマーをモデル化するには、以下のようにします。
  1. 「モデル・エクスプローラー」ビューで、「エンタープライズ IT 設計モデル」「PiggyBank 実装設計 (PiggyBank Implementation Designs)」を展開します。
  2. 「itso.ad.business」サブパッケージを右クリックし、次に、「UML の追加」>「パッケージ」をクリックします。
  3. パッケージに to という名前を付けます。
  4. 「モデル・エクスプローラー」ビューで、「メイン」をダブルクリックします。
  5. ダイアグラム・エディターで、interfaces.to - 転送オブジェクト実装 (interfaces.to - Transfer Object Implementations) というタイトルを追加します。
  6. パレットで、「クラス」をダブルクリックし、クラスに PiggyBankEJBCustomerTO という名前を付けます。

PiggyBankEJBCustomerTO インターフェースのパラメーターをモデル化するには、以下のようにします。
  1. ダイアグラム・エディターで、PiggyBankEJBCustomerTO クラスを右クリックし、次に、「UML の追加」>「属性」をクリックします。
  2. 属性に ID (id) という名前を付けます。
  3. 「プロパティー」ビューで、「タイプの選択」をクリックします。
  4. 「要素の選択」ウィンドウで、「整数」をクリックします。
  5. もう 1 つの属性を PiggyBankEJBCustomerTO クラスに name という名前の「文字列」 タイプで追加します。
  6. ダイアグラム・エディターで、PiggyBankEJBCustomerTO クラスを右クリックし、次に、「UML の追加」>「操作」をクリックします。
  7. 操作に PiggyBankEJBCustomerTO ( newId, newName ) という名前を付けます。
  8. 「プロパティー」ビュー内の「パラメーター」ページで、「newId」パラメーターの「タイプ」フィールドをクリックし、 パラメーター・タイプを「文字列」に変更します。
  9. 「newName」パラメーターの「タイプ」フィールドをクリックし、パラメーター・タイプを「文字列」に変更します。
PiggyBankEJBCustomerTO Enterprise Bean のモデル化が完了しました。PiggyBankEJBCustomerTO には単一のコンストラクターが含まれており、このコンストラクターは、カスタマー ID と名前が付けられたクラスをインスタンス化します。次に、PiggyBankEJBCustomerTO Enterprise Bean と ICustomerTO インターフェースとの間の関係をモデル化する必要があります。

実装関係をモデル化するには、以下のようにします。
  1. 「モデル・エクスプローラー」ビューで、「エンタープライズ IT 設計モデル 」「PiggyBank 実装設計 (PiggyBank Implementation Designs)」「itso.ad.business」、および「framework」を展開します。
  2. 「interfaces.to」サブパッケージで、ICustomerTO クラスをクリックして図にドラッグします。
  3. パレットで、「実装」をクリックします。
  4. ダイアグラム・エディターで、PiggyBankEJBCustomerTO クラスをクリックして、ICustomerTO インターフェースへドラッグします。

作成した図は次のようになります。

PiggyBankEJBCustomerTO EJB

PiggyBankEJBAccountTO をモデル化するには、以下のようにします。
  1. パレットで、「クラス」 をダブルクリックし、クラスに PiggyBankEJBAccountTO という名前を付けます。
  2. ダイアグラム・エディターで、PiggyBankEJBAccountTO クラスを右クリックし、次に、「UML の追加」>「属性」をクリックします。
  3. 属性に 差引金額 (balance) という名前を付けます。
  4. 「プロパティー」ビューで、「タイプの選択」をクリックします。
  5. 「要素の選択」ウィンドウで、「整数」をクリックします。
  6. 文字列タイプのもう 1 つの属性を PiggyBankEJBAccountTO クラスに number という名前で追加します。
  7. ダイアグラム・エディターで、PiggyBankEJBAccountTO クラスを右クリックし、次に、「UML の追加」>「操作」をクリックします。
  8. 操作に PiggyBankEJBAccountTO ( newAccountNumber, newBalance ) という名前を付けます。
  9. 「プロパティー」ビュー内の「パラメーター」ページで、「newAccountNumber」パラメーターの「タイプ」フィールドをクリックし、 パラメーター・タイプを「文字列」に変更します。
  10. 「newBalance」パラメーターの「タイプ」フィールドをクリックし、パラメーター・タイプを「整数」に変更します。
PiggyBankEJBAccountTO Enterprise Bean のモデル化が完了しました。PiggyBankEJBAccountTO には単一のコンストラクターが含まれており、このコンストラクターは、口座番号および差引金額が指定されたクラスをインスタンス化します。次に、PiggyBankEJBAccountTO Enterprise Bean と IAccountTO インターフェースとの間の関係をモデル化する必要があります。

実装関係をモデル化するには、以下のようにします。
  1. 「モデル・エクスプローラー」ビューで、「エンタープライズ IT 設計モデル」「PiggyBank 実装設計 (PiggyBank Implementation Designs)」「itso.ad.business」、および「framework」を展開します。
  2. 「interfaces.to」サブパッケージで、IAccountTO クラスをクリックして図にドラッグします。
  3. パレットで、「実装」をクリックします。
  4. ダイアグラム・エディターで、PiggyBankEJBAccountTO クラスをクリックして、IAccountTO インターフェースへドラッグします。

作成した図は次のようになります。

PiggyBankEJBCustomerTO および PiggyBankEJBAccountTO オブジェクト

ファサード Enterprise Bean のモデル化

ファサード・コンポーネントは、永続アプリケーション・データをビジネス・ロジックから分離します。ファサード Enterprise Bean は、PiggyBank 分析モデルで識別したコントロール・クラスから派生する PiggyBankController クラスによって定義されています。

PiggyBankController クラスをモデル化するには、以下のようにします。
  1. 「モデル・エクスプローラー」ビューで、「エンタープライズ IT 設計モデル 」「PiggyBank 実装設計 (PiggyBank Implementation Designs)」を展開します。
  2. 「itso.ad.business」サブパッケージで、「ejb」パッケージを右クリックし、次に、「UML の追加」>「パッケージ」をクリックします。
  3. 新規パッケージに facade という名前を付けます。
  4. 「モデル・エクスプローラー」ビューで、「メイン」図をダブルクリックし、facade - モデル上のセッション・ファサード (EJB Stateless Bean) (facade - Session Facade (EJB Stateless Bean) on model) というタイトルを追加します。
  5. パレットで、「クラス」をダブルクリックし、インターフェースに PiggyController という名前を付けます。

cashCheck 操作をモデル化するには、以下のようにします。
  1. ダイアグラム・エディターで、PiggyBankController クラスを右クリックし、次に、「UML の追加」>「操作」をクリックします。
  2. 操作に cashCheck ( accountToCredit, checkAmount, checkReference ) という名前を付けます。
  3. 「プロパティー」ビュー内の「パラメーター」ページで、「accountToCredit」パラメーターの「タイプ」フィールドをクリックし、 パラメーター・タイプを「文字列」に変更します。
  4. 「checkAmount」パラメーターの「タイプ」フィールドをクリックし、パラメーター・タイプを「整数」に変更します。
  5. 「checkReference」パラメーターの「タイプ」フィールドをクリックし、パラメーター・タイプを「文字列」に変更します。

getAccountByCustomerId 操作をモデル化するには、以下のようにします。
  1. ダイアグラム・エディターで、PiggyBankController クラスを右クリックし、次に、「UML の追加」>「操作」をクリックします。
  2. 操作に getAccountByCustomerId ( customerId ) という名前を付けます。
  3. 「プロパティー」ビュー内の「パラメーター」ページで、「customerId」パラメーターの「タイプ」フィールドをクリックし、 パラメーター・タイプを「文字列」に変更します。
  4. 「プロパティー」ビュー内の「一般」ページで、「戻り値の型の設定」をクリックします。
  5. 「要素の選択」ウィンドウで、「itso.ad.business」「framework」を展開し、「interfaces.to」パッケージで、「IAccountTO」をクリックします。
  6. 「プロパティー」ビュー内の「一般」ページで、「Ordered」チェック・ボックスを選択し、「Unique」チェック・ボックスをクリアします。
  7. 「Unique」チェック・ボックスを選択解除します。
  8. 「詳細」ページの「多重度」の横で、「値」フィールドをクリックし、「1..*」をクリックします。

getBalance 操作をモデル化するには、以下のようにします。
  1. ダイアグラム・エディターで、PiggyBankController クラスを右クリックし、次に、「UML の追加」>「操作」をクリックします。
  2. 操作に getBalance ( accountNumber, customerId ) という名前を付けます。
  3. 「プロパティー」ビュー内の「パラメーター」ページで、「accountNumber」パラメーターの「タイプ」フィールドをクリックし、 パラメーター・タイプを「文字列」に変更します。
  4. 「customerId」パラメーターの「タイプ」フィールドをクリックし、パラメーター・タイプを「文字列」に変更します。
  5. 「プロパティー」ビュー内の「一般」ページで、「戻り値の型の設定」をクリックします。
  6. 「要素の選択」ウィンドウで、「整数」をクリックします。

getCustomerById 操作をモデル化するには、以下のようにします。
  1. ダイアグラム・エディターで、PiggyBankController クラスを右クリックし、次に、「UML の追加」>「操作」をクリックします。
  2. 操作に getCustomerById ( customerId ) という名前を付けます。
  3. 「プロパティー」ビュー内の「パラメーター」ページで、「customerId」パラメーターの「タイプ」フィールドをクリックし、 パラメーター・タイプを「文字列」に変更します。
  4. 「プロパティー」ビュー内の「一般」ページで、「戻り値の型の設定」をクリックします。
  5. 「要素の選択」ウィンドウで、「itso.ad.business」「framework」を展開し、「interfaces.to」パッケージで、「ICustomerTO」をクリックします。

transfer 操作をモデル化するには、以下のようにします。
  1. ダイアグラム・エディターで、PiggyBankController クラスを右クリックし、次に、「UML の追加」>「操作」をクリックします。
  2. 操作に transfer ( amountToTransfer, creditAccountNr, customerId, debitAccountNr ) という名前を付けます。
  3. 「プロパティー」ビュー内の「パラメーター」ページで、「amountToTransfer」パラメーターの「タイプ」フィールドをクリックし、 パラメーター・タイプを「整数」に変更します。
  4. 「creditAccountNr」パラメーターの「タイプ」フィールドをクリックし、パラメーター・タイプを「文字列」に変更します。
  5. 「customerId」パラメーターの「タイプ」フィールドをクリックし、パラメーター・タイプを「文字列」に変更します。
  6. 「debitAccountNr」パラメーターの「タイプ」フィールドをクリックし、パラメーター・タイプを「文字列」に変更します。

itso.ad.business コンポーネント・レイヤー・ファサードのモデル化が完了しました。作成した図は、次のようになります。

PiggyBankController クラスには、PiggyBank itso.ad.business 設計レイヤーのファサード実装が含まれています。
ご利用条件 | フィードバック
(C) Copyright IBM Corporation 2004, 2005. All Rights Reserved.
(C) Copyright IBM Japan 2005