では、Model-Glue において、イベントやメッセージが発生した場合に何が引き起こされるのだろうか。
メッセージは、コントローラーが引き受けるもので、その挙動は、ModeGlue.xml の
modelglue
controllers
controller
message-listener
に定義されている。
メッセージは、メッセージリスナーが受け取ることになる。
メッセージリスナーがメッセージを受け取ると、messege-listener の messege 属性に一致するメッセージを探して、
その function 属性に設定されている関数が実行される。
関数は、modelglue => controllers => controller の type 属性に指定してあるコントローラー内に定義されている。
イベントが発生した場合の振る舞いは、ModelGlue.xml の
modelglue
event-handlers
event-handler
に定義されている。
イベントが発生すると、event-handler の name 属性の中から一致しているものを探す。
そこで定義されている、broadcasts、results、views が処理される。
broadcasts は、message 子要素を持ち、メッセージを発生させる。
results は、result 子要素を持ち、追加的にイベントを発生させる。
result 要素は、name 属性を設定することができるが、設定されていない場合は、常に、do 属性のイベントが発生し、
設定されている場合は、コントローラー内で addResult() 関数によって登録された name が存在する場合に、イベントが発生する。
views は、include 子要素を持ち、文字通り、ユーザーが受け取る画面を構成する情報を指定する。
include は、画面のどこ(name 属性)に、どのファイル(template 属性)による情報を表示するかを指定する。
また、include は、value 子要素を持ち、value 要素は、画面を構成する際に必要となる引数を設定する。
これらの振る舞いがどのような順番で処理されるかははっきりわからないが、ロジックを処理するために
コントローラーへメッセージを渡し(broadcasts)、画面のベースとなるテンプレート(html、head、bodyタグで構成される)を
書き起こし(results)、各画面ごとに異なる情報や、ロジックになどにより処理された情報などを表示(views)するという
流れで、サンプルが作られているようだ。