この特集のトップページへ
Chapter 6:ビジネスロジックの設計

head2.gif 6.3.4 製品情報一覧の取得
 以上で,製品の新規登録,参照,更新,削除という働きを担う4つのメソッドを実装したことになる。

 次に,登録されている全製品を取得するメソッドについて考えよう。全製品を返すということは,戻り値が配列になるということである。「6.2.4 顧客一覧の取得」で説明したように,配列を返すようなCOMコンポーネントを実装するには,(1)Variant型の配列として返す,(2)コレクションとして返す,(3)XMLの文字列として返す,(4)ADODB.Recordsetオブジェクトとして返す,という4つの方法がある。顧客情報の一覧を取得する処理では,(4)の方法を採用した。製品情報の一覧でも,同様に(4)の方法を採用することにする。

●データオブジェクトの実装
 List 6-67は,登録されている全製品をADODB.Recordsetオブジェクトとして返す方法に基づき,DataObj.ProductコンポーネントにGetRecordsという名前のメソッドとして実装したものである。

 List 6-67に示したGetRecordsメソッドでは,引数で削除ずみの製品(DELETEDFLAGフィールドの値がTrueである製品)を含めるかどうかを指定できるようにしてある。

●ビジネスロジックの実装
 次に,Business.Productコンポーネントに製品情報一覧を取得するメソッドを実装する。それには,List 6-67で示したDataObj.ProductコンポーネントのGetRecordsメソッドを呼び出せばよい。このような働きを担うメソッドをGetProductsという名前で実装すると,List 6-68のようになる。

 List 6-68Business.Productコンポーネントでは,ObjectContextオブジェクトのIsCallerInRoleメソッドを使い,呼び出したユーザーがProductsAdminロールまたはAllAdminロールに属していたならば,削除ずみの製品も含めた全製品を返すようにしている(23〜35行目)。もし,ProductsAdminロールにもAllAdminロールにも属していないユーザーがこのメソッドを呼び出した場合には,削除ずみのものは含めずに返す。

prevpg.gif Chapter 6 41/92 nextpg.gif