modelglue+tartanのサンプル紹介-3
ggcc8におけるevent-handlerとcontrollerの関係を、ggcc.homeイベントを例にじっくり見てみる。
ggcc.homeイベントは、以下のように定義さrている。
<event-handler name="ggcc.home">
<broadcasts>
<message name="needMembers"/>
</broadcasts>
<views>
<include template="dspShowHome.cfm" name="content">
<value name="XFA.ShowTasks" value="ggcc.showmanager"/>
<value name="XFA.Constitution" value="ggcc.showpage"/>
<value name="XFA.Bylaws" value="ggcc.showpage"/>
<value name="XFA.Minutes" value="ggcc.showpage"/>
</include>
<include template="layGGCC.cfm" name="final"/>
</views>
</event-handler>
ggcc.homeイベントの挙動は次のようになる。
1.<needMembers>リスナーを呼び出し、
2.<dspShowHome.cfm>にいくつかのパラメータを渡しながら、その表示結果を<content>に保存し、
3.最後に<layGGCC.cfm>で端末に表示している。
<needMembers>リスナーはどこで定義されているかと、controllersセクションを見渡すと、
controller<userManager>に"needMembers"がある。
<controller name="usermanager" type="ggcc8.controller.usermanager">
<message-listener message="needMembers" function="getMembers"/>
<message-listener message="choseIdentity" function="setIdentity"/>
<message-listener message="checkIdentity" function="checkIdentity"/>
</controller>
したがって、message<userManager>がブロードキャストされると、userManager.cfc内のファンクション<getMembers>をコールしています。つまり、フレームワーク名:ModelGlueの指し示すとおり、イベントとモデル(ビジネスロジック)を接着することがこのフレームワークの特徴と言えます。
コメント