サンプルアプリケーション
これまでの情報から、ものすごくシンプルなアプリケーションを作ってみた。
商品リストから商品を選んで、カートに入れるというよくあるカートアプリケーション。
作成したイベントは3つ。
CartInsert
CartDeleteItem
CartDeleteAll
メッセージは、4つ。
ItemList
CartInsertAction
CartDeleteItemAction
CartDeleteAllAction
これらは、ModelGule.xml から見つけることができる。
Controller.cfc に、メッセージに対応する関数を一つずつで、4つの関数。
ロジックとして、CartProcess.cfc に、ロジックの関数として3つ。
データベースを使わなかったために、商品リストを保持する Common.cfc を作成。
やはり、これぐらいの規模の仕組みでは、フレームワークのメリットを感じることはできなかったが、Model-Glueの基本的な作り方は、把握できた。
dspIndex.cfm で商品リストを表示する際に、Controller.cfc の getItemList 関数で、変数 itemMasterArray に、
arguments.event.setValue("itemMasterArray", ★商品の一覧データ★)で、レスポンスデータに保存。
dspIndex.cfm の viewstate.getValue("itemMasterArray") で商品の一覧データを取得する。
商品を選択すると、イベント CartInsert で、商品IDをポストリクエスト送信すると、メッセージ CartInsertAction が発生する。
Controller.cfc の関数 cartInsertItem によって、ロジックのモデル CartProcess.cfc のインスタンスを生成し、
arguments.event.getValue("itemid") でポストデータ itemid を取得して、関数 insertItem に渡す。関数 insertItem からは、
カートのデータが戻ってくるので、arguments.event.setValue("cartData", ★カートのデータ★) で、画面に変数 cartData で渡す。
他のイベントの場合も、似たような感じになっている。
いわゆる、MVCが構築されているわけになるが、当然、理想は、理想で、実際にシステムを作っていく上では、
こんなにきれいに分かれないだろう。
ここでポイントになるのは、VとCの流れの調整を ModelGlue.xml だけで行うということだろうか。
ModelGlue.xml では、Mのモデル(ロジック)部分のことは、制御外になっている。コントローラーの先は、作り手次第になっている。