図解、FreeStyleWikiで一番大事なアーキテクチャ

FreeStyleWikiは、プラグインの仕組みで簡単に機能を追加できるWeb出力用のアーキテクチャです。

図解

リクエストからレスポンスまでの流れ

(1) Webブラウザからwiki.cgiへのリクエス

Webブラウザwiki.cgiにリクエストを行うとFreeStyleWikiの処理が開始されます。このとき、リクエストのパラメータとしてページ名やアクションなどを渡すことができます。
wiki.cgiに対してこの形でリクエストを行えるように、FreeStyleWikiはリンクやフォームを出力します。

(2) wiki.cgiからプラグインの呼び出し

まず、Wiki.cgiはリクエストパラメータに指定されたアクションをもとに、実行すべき処理を決定します。この実行すべき処理がプラグインです。
次に、プラグインを呼び出して処理を実行します。このとき、引数としてページ名等を渡します。

(3) プラグインの処理

プラグインではFreeStyleWikiのデータが保存されているDataStorageを操作します。DataStorageとは実際にはファイルシステムを操作するためのモジュールです。プラグインでは必要に応じて、ページの取得、作成や削除やその他設定ファイルの操作を行います。プラグインの結果はHTMLで返します。
例えば、ページを表示するプラグインであれば、ページ名をもとにDataStorageからページを取得して出力します。
他の例として、ページを作成するプラグインであれば、新たな内容を含むページをDataStorageに作成します。

(4) wiki.cgiからWebブラウザへのレスポンス

wiki.cgiは、プラグインの結果に共通の飾り付けを行ったHTMLを作成します。このHTMLをWebブラウザへのレスポンスとして返します。

さいごに

このアーキテクチャを押さえておけば、FreeStyleWikiプラグイン作成や解析に役立つと思います。
僕はここに書いたことをもと解析を続け、似たような仕組みをJavaActiveObjectsで作ろうと思っています。