演習 3.5: フレームワーク・コンポーネント・レイヤーのモデル化

この演習では、itso.ad.business パッケージのフレームワーク・レイヤーをモデル化します。フレームワーク・コンポーネント・レイヤーは、永続的なアプリケーション・データとアプリケーションの実装の両方からクライアント・インターフェースを分離します。フレームワーク・コンポーネント・レイヤーには、委譲ファクトリー・クラスと例外に加えて、転送オブジェクトと委譲インターフェースが含まれています。

フレームワーク・コンポーネント・レイヤーには、次の表の設計サブパッケージが含まれています。

パッケージ 説明
exception このサブパッケージには、PiggyBank オンライン・バンキング・システム用のエラー・リカバリーを提供する ServiceException 例外クラスおよび DataAccessException 例外クラスが含まれています。
factory このサブパッケージには、ビジネス委譲の動的作成に使用される BusinessDelegateFactory クラスが含まれています。
interfaces.delegates このサブパッケージには、ビジネス委譲用のインターフェースが含まれています。
interfaces.to このサブパッケージには、転送オブジェクト用のインターフェースが含まれています。

転送オブジェクト・インターフェースのモデル化

転送オブジェクトは、リモート・プロシージャー・コールの戻り値の型として使用されます。PiggyBank 転送オブジェクトは、PiggyBank 設計のレイヤー間で、顧客情報およびアカウント情報を転送します。この演習では、転送オブジェクト・インターフェースをモデル化します。

ICustomerTO インターフェースをモデル化するには、以下のようにします。
  1. 「モデル・エクスプローラー」ビューで、「エンタープライズ IT 設計モデル」「PiggyBank 実装設計 (PiggyBank Implementation Designs)」を展開します。
  2. 「itso.ad.business」サブパッケージで、「framework」パッケージを右クリックし、次に、「UML の追加」>「パッケージ」をクリックします。
  3. 新規パッケージに interfaces.to という名前を付けます。
  4. 「モデル・エクスプローラー」ビューで、「メイン」図をダブルクリックし、interfaces.to - 転送オブジェクト・インターフェース (interfaces.to - Transfer Object Interfaces) というタイトルを追加します。
  5. パレットで、「インターフェース」をダブルクリックし、インターフェースに ICustomerTO という名前を付けます。
  6. ダイアグラム・エディターで、ICustomerTO クラスを右クリックし、次に、「UML の追加」>「操作」をクリックします。
  7. 操作に getId という名前を付けます。
  8. 「プロパティー」ビュー内の「一般」ページで、「戻り値の型の設定」をクリックします。
  9. 「要素の選択」ウィンドウで、「文字列」をクリックします。
  10. ダイアグラム・エディターで、ICustomerTO クラスを右クリックし、次に、「UML の追加」>「操作」をクリックします。
  11. 操作に getName という名前を付けます。
  12. 「プロパティー」ビュー内の「一般」ページで、「戻り値の型の設定」をクリックします。
  13. 「要素の選択」ウィンドウで、「文字列」をクリックします。

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

転送オブジェクト・インターフェースのモデル化が完了しました。作成した図は次のようになります。

転送オブジェクト・インターフェース図

委譲インターフェースのモデル化

ビジネス委譲インターフェース定義は、ビジネス委譲実装インスタンスの生成に使用されるビジネス委譲メソッドおよびファクトリー・コンポーネントを表します。IPiggyBankBusinessDelegate インターフェースは、PiggyBank ビジネス・ロジックへのインターフェースを定義します。 AbstractBusinessDelegateFactory クラスは、IPiggyBankBusinessDelegate インスタンスをインスタンス化します。

IPiggyBankBusinessDelegate インターフェースをモデル化するには、以下のようにします。
  1. 「モデル・エクスプローラー」ビューで、「エンタープライズ IT 設計モデル」「PiggyBank 実装設計 (PiggyBank Implementation Designs)」を展開します。
  2. 「itso.ad.business」サブパッケージで、「framework」パッケージを右クリックし、次に、「UML の追加」>「パッケージ」をクリックします。
  3. 新規パッケージに interfaces.delegates という名前を付けます。
  4. 「モデル・エクスプローラー」ビューで、「メイン」図をダブルクリックし、interfaces.delegates - 委譲インターフェース (interfaces.delegates - Delegate Interfaces) というタイトルを追加します。
  5. パレットで、「インターフェース」をダブルクリックし、インターフェースに IPiggyBankBusinessDelegate という名前を付けます。

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

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

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

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

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

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

委譲インターフェースのモデル化が完了しました。getAccountsByCustomer および getCustomerById 操作は、直前の演習で作成した転送オブジェクト・インターフェースを返すことに注意してください。 作成した図は、次のようになります。

ビジネス委譲インターフェース図

ビジネス委譲ファクトリーのモデル化

BusinessDelegateFactory クラスは、委譲ファクトリー・インスタンスを動的に作成するために使用されます。

BusinessDelegateFactoryClass インターフェースをモデル化するには、以下のようにします。
  1. 「モデル・エクスプローラー」ビューで、「エンタープライズ IT 設計モデル」「PiggyBank 実装設計 (PiggyBank Implementation Designs)」を展開します。
  2. 「itso.ad.business」サブパッケージで、「framework」パッケージを右クリックし、次に、「UML の追加」>「パッケージ」をクリックします。
  3. 新規パッケージに factory という名前を付けます。
  4. 「モデル・エクスプローラー」ビューで、「メイン」図をダブルクリックし、factory - ビジネス委譲ファクトリー抽象実装 (factory - Business Delegate Factory abstract implementation) というタイトルを追加します。
  5. パレットで、「クラス」をダブルクリックし、クラスに BusinessDelegateFactory という名前を付けます。
  6. 「プロパティー」ビュー内の「一般」ページで、「抽象」チェック・ボックスを選択します。

delegateFactory 属性をモデル化するには、以下のようにします。
  1. ダイアグラム・エディターで、BusinessDelegateFactory クラスを右クリックし、次に、「UML の追加」>「属性」をクリックします。
  2. 属性に delegateFactory という名前を付けます。
  3. 「プロパティー」ビュー内の「一般」ページで、「タイプの選択」をクリックします。
  4. 「要素の選択」ウィンドウで、「itso.ad.business」「framework」を展開し、「interfaces.delegates」パッケージで、「AbstractBusinessDelegateFactory」をクリックします。
  5. 「プロパティー」ビュー内の「一般」ページで、「Static」をクリックします。

getInstance 操作をモデル化するには、以下のようにします。
  1. ダイアグラム・エディターで、BusinessDelegateFactory クラスを右クリックし、次に、「UML の追加」>「操作」をクリックします。
  2. 操作に getInstance という名前を付けます。
  3. 「要素の選択」ウィンドウで、「itso.ad.business」「framework」を展開し、「interfaces.delegates」パッケージで、「AbstractBusinessDelegateFactory」をクリックします。
  4. 「プロパティー」ビュー内の「一般」ページで、「Static」をクリックします。

init 操作をモデル化するには、以下のようにします。
  1. ダイアグラム・エディターで、BusinessDelegateFactory クラスを右クリックし、次に、「UML の追加」>「操作」をクリックします。
  2. 操作に init ( factoryClassName ) という名前を付けます。
  3. 「プロパティー」ビュー内の「パラメーター」ページで、「factoryClassName」パラメーターの「タイプ」フィールドをクリックし、 パラメーター・タイプを「文字列」に変更します。
  4. 「プロパティー」ビュー内の「一般」ページで、「Static」をクリックします。
  5. 「モデル・エクスプローラー」ビュー内の「interfaces.delegate」サブパッケージで、「AbstractBusinessDelegateFactory」インターフェースをクリックして図へドラッグします。
  6. パレットで、「実装」をクリックします。
  7. ダイアグラム・エディターで、BusinessDelegateFactory クラスをクリックして、AbstractBusinessDelegateFactory クラスへドラッグします。

itso.ad.business レイヤー・ファクトリー・クラスのモデル化が完了しました。 作成した図は次のようになります。

ビジネス委譲ファクトリー抽象実装

itso.ad.business フレームワーク例外のモデル化

フレームワーク・コンポーネント・レイヤーには 2 つの例外の実装、つまり、ビジネス・レイヤーでエラーが発生するとスローされる DataAccessException と、サービスのロスが原因で発生する ServiceException が含まれています。

DataAccessException および ServiceException クラスをモデル化するには、以下のようにします。
  1. 「モデル・エクスプローラー」ビューで、「エンタープライズ IT 設計モデル」「PiggyBank 実装設計 (PiggyBank Implementation Designs)」を展開します。
  2. 「itso.ad.business」サブパッケージで、「framework」パッケージを右クリックし、次に、「UML の追加」>「パッケージ」をクリックします。
  3. 新規パッケージに exception という名前を付けます。
  4. 「モデル・エクスプローラー」ビューで、「メイン」図をダブルクリックし、例外 (exception) というタイトルを追加します。
  5. パレットで、「クラス」をダブルクリックし、クラスに DataAccessException という名前を付けます。
  6. パレットで、「クラス」をダブルクリックし、クラスに ServiceException という名前を付けます。

itso.ad.business フレームワーク・コンポーネント・レイヤーのモデル化が完了しました。このフレームワーク・レイヤーは、PiggyBank クライアント・インターフェースを PiggyBank 実装から隠す分離レイヤーです。ここで、ファクトリー・パッケージを図にドラッグすることによって、itso.ad.business 設計要素図を完成させることができます。delegate.ejb パッケージをファクトリー・パッケージに使用関係で接続します。 ファクトリー・パッケージをフレームワーク・パッケージに関連で接続します。 作成した図は次のようになります。

itso.ad.business 設計要素パッケージ図

継続する場合は、『演習 3.6: EJB コンポーネント・サブパッケージのモデル化』に進みます。

ご利用条件 | フィードバック
(C) Copyright IBM Corporation 2004, 2005. All Rights Reserved.
(C) Copyright IBM Japan 2005