MG2:Unity Action Packs
ちょっと古い記事(6/12)ですが、Joe Rinehartが"Model-Glue:Unity ActionPacks"を彼のブログで紹介していました。今後のために、意訳してみます。
私がModel-Glueに関して聞いた1つの批評は、既存のアプリケーションに「ぶら下がれる」機能モジュールを作成する簡単な方法が全くないということでした。
私は、フォーラムアプリケーションを書くのが楽しくないので、「これをModel-Glueアプリケーションに追加してくださいか?」とただただ言うだけです。
さて、Model-Glue:Unityには、まさしくこれを可能にする新しいタグがあります:
<modelglue>の子としての<include>タグです。しばらくその批評に耐えてきましたが、<include>タグが正常に動作して、Model-Glueフレームワークにとても素晴らしい機能が追加できたと思います。この機能追加は、どんなModelGlue.xmlファイルも他のModel-Glue.xml形式のファイルになリ得るし、そして、"子"ファイルでは、それ自身の<controllers>と<event-handlers>を定義できることです。
さらに、"部品化"されたModel-Glue XMLファイルでは、Viewマッピングに使用する追加ディレクトリはもちろん、ColdSpringにロードする追加XMLファイルを宣言するための<setting>タグを使用できます。
例)
以下は、Wiki.xml用"部品"ファイルに、mgwikiに必要なすべてを宣言できることを意味します:<modelglue>
<config>
<!-- Add the wiki /views dir to the viewmappings -->
<setting name="viewMappings" setting="/mgwiki/views" />
</config>
<controller name="wikiController" type="mgwiki.WikiController">
<message-listener message="wiki.page" function="getPage" />
<!--- other listeners... --->
</controller>
<event-handlers>
<event-handler name="wiki.displayPage">
<broadcasts>
<message name="wiki.page" />
</broadcasts>
<views>
<include name="body" template="dspWikiPage.cfm" />
</views>
<results>
<result do="view.template" />
</results>
</event-handler>
<!--- More event handlers... --->
</event-handlers>
</modelglue>
次に、Wiki機能を他のModel-Glueアプリケーションに加えたいなら、Wiki"部品"を含むように、ModelGlue.xmlファイルを以下のように変更すればいいのです:<modelglue>
<include template="/mgwiki/config/Wiki.xml" />
<!--- Application stuff...--->
</modelglue>
◆<include>の危険性
<include>を使用することに、全く危険がない訳ではありません:<include>タグが、既存のイベントハンドラーやコントローラーを上書きする可能性も有り得ます。"wiki"部品を親アプリケーション定義の前に置いたのはその理由に拠ります:-)。
◆"ActionPacks?"
Model-Glue:Unity(2.0)の正式リリースに向けて、"ActionPacks"と呼ぶ2、3のModel-Glue部品のリリースを計画しています。ひとつ目は、使いやすく、構成変更可能なe-mailサービスです。他に、ロールベース兼行レベルのセキュリティ対策、ユーザプロファイル管理及びユーザ管理用のインタフェースを提供する予定です。
これらの"ActionPacks"は、Model-Glueフレームワークに少しの変化も必要とせず、まさしくModel-Glue XML部品であるので、誰でも自由にModel-Glueコミュニティに貢献できます。もし誰かがその開発に興味を持ったなら、私は可能な範囲で手伝うことに満足するでしょう。そして、Action Packsの選定(多分フォーラムアプリがそうなるでしょうけど)のために、それをModel-Glueの開発に追加するでしょう。
コメント