この特集のトップページへ
>
Chapter 6:ビジネスロジックの設計
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-68のBusiness.Productコンポーネントでは,ObjectContextオブジェクトのIsCallerInRoleメソッドを使い,呼び出したユーザーがProductsAdminロールまたはAllAdminロールに属していたならば,削除ずみの製品も含めた全製品を返すようにしている(23〜35行目)。もし,ProductsAdminロールにもAllAdminロールにも属していないユーザーがこのメソッドを呼び出した場合には,削除ずみのものは含めずに返す。
Chapter 6 41/92 |