ウィキエンジン全体を表すクラスについて。
アイデア的なものは → フレームワーク/WikiEngine
ここで作っているWikiシステム(WikiEngineまたはWikiソフトウェアと呼ばれるもの)。
- -----------------------------------------------------------------------------
「WikiEngine/」で始まるページを作成
クラス構造 †
Actor †
リクエスト送信。PageNameとかUsecaseNameとかStepNameとかViewNameとか含む。
→fw/Web→fw/Wiki→Usecase
X †
フレームワーク/WikiEngineの実装。
X/Usecase[?] †
プラグイン。
コントロールクラス。
WikiEngineから呼ばれる。リクエスト毎に別クラス。
MediaWikiの'Action'、PukiWikiの'cmd'にあたるものと一対一対応。
→User
X/User[?] †
利用者。
ページを扱うクラス。Userが扱うページを特に「利用者ページ」と呼んでおく。権限情報が書かれているので特殊。
データはページ化されているので、このクラスが無くても読み/書きできる。書くのは利用者。
存在意義が薄い。ただ利用者ページにデータアクセスするラッパーでしかない。
- 鍵←UserID
目次 †
- -
→Page
X/Page[?] †
Wikiのデータを保存するもの。
利用者が手作業で書く。どういう記法を使うかでデータアクセス時の反応が違う。
属性を持つ。
URIでプラグインを呼んだときは仮のページ。その場合でも流れは同じ。
関連 †
→ Pages/Name
→ PageElement(記法に書かれると呼ばれる)
検索:WikiEngine
- 永続化
- FlyweightFactoryでインスタンス生成
- コンストラクターは非公開
X/Pages/Name[?] †
ページ名。ValueObjectにするのが自然。
WikiEngine周辺のタグ †
ArrayPage.rename(new Name(...)) ページ名を変更するときはNameインスタンスを作り直す。 ページ名変更時にやることがあるならrename()でできる。
X/Pages/Property[?] †
ページ/属性。
属性/継承を行なう。
X/Pages/ShadowProperty[?] †
ページ/裏。
X/永続化[?] †
ページ以外も永続化。
データストアにはファイルシステム(flat files)使用。
- Page←PageName
- PageProperty←PageName
- Session←SessionID
X/Element[?] †
ページの構成要素。
記法から生成したオブジェクト。各種記法や一続きのプレーンテキスト部分などが1つのオブジェクトになる。
ElementがElementの集約にもなる。ネスト構造。
WikiEngineとは †
→PageElements
X/Elements[?]/… †
PageElementのサブクラス。プラグインはNotations系/Semantics系/DynamicNotations系/Plains系。
X/Elements/Notations[?]系 †
記法を統一する抽象クラス。
X/Elements/DynamicNotations[?]系 †
例えば自動リンク。
記法はあるが決まっていないもの。
X/Elements/Semantics[?]系 †
検索でスコアを上げる記法。
数詞やカラーコードなど。
X/Elements/Plains[?]系 †
ただのテキスト。
X/Plugins/... †
いろいろなプラグイン型。
フレームワークの最上位クラス(の1つ)。
もう1つのフレームワークはフレームワーク/Webアプリケーション。
その他のクラス †
フレームワーク/WikiEngineの最上位。モデル系にあたる。
アプリケーション全体で使用されるものを定義。