ウィキエンジン全体を表すクラスについて。

アイデア的なものは → フレームワーク/WikiEngine

ここで作っているWikiシステム(WikiEngineまたはWikiソフトウェアと呼ばれるもの)。

「WikiEngine/」で始まるページを作成

クラス構造 Edit

Actor Edit


リクエスト送信。PageNameとかUsecaseNameとかStepNameとかViewNameとか含む。

fw/Webfw/Wiki→Usecase

X Edit


フレームワーク/WikiEngineの実装。

X/Usecase[?] Edit


プラグイン

コントロールクラス。

WikiEngineから呼ばれる。リクエスト毎に別クラス。

MediaWikiの'Action'、PukiWikiの'cmd'にあたるものと一対一対応。

→User

X/User[?] Edit


利用者

ページを扱うクラス。Userが扱うページを特に「利用者ページ」と呼んでおく。権限情報が書かれているので特殊。

データはページ化されているので、このクラスが無くても読み/書きできる。書くのは利用者

存在意義が薄い。ただ利用者ページデータアクセスするラッパーでしかない。
  • 鍵←UserID

目次 Edit

X/Page[?] Edit


Wikiのデータを保存するもの。

利用者が手作業で書く。どういう記法を使うかでデータアクセス時の反応が違う。

属性を持つ。

URIでプラグインを呼んだときは仮のページ。その場合でも流れは同じ。

関連 Edit


→ Pages/Name

→ PageElement(記法に書かれると呼ばれる)

検索:WikiEngine
  • 永続化
    • FlyweightFactoryでインスタンス生成
    • コンストラクターは非公開

X/Pages/Name[?] Edit


ページ名。ValueObjectにするのが自然。

WikiEngine周辺のタグ Edit

Array
Page.rename(new Name(...))
ページ名を変更するときはNameインスタンスを作り直す。
ページ名変更時にやることがあるならrename()でできる。

X/Pages/Property[?] Edit


ページ/属性

属性/継承を行なう。

X/Pages/ShadowProperty[?] Edit


ページ/裏。

X/永続化[?] Edit


ページ以外も永続化

データストアにはファイルシステム(flat files)使用。
  • Page←PageName
  • PageProperty←PageName
  • Session←SessionID

X/Element[?] Edit


ページの構成要素。

記法から生成したオブジェクト。各種記法や一続きのプレーンテキスト部分などが1つのオブジェクトになる。

ElementがElementの集約にもなる。ネスト構造。

WikiEngineとは Edit


→PageElements

X/Elements[?]/… Edit


PageElementのサブクラス。プラグインNotations系/Semantics系/DynamicNotations系/Plains系。

X/Elements/Notations[?] Edit


記法を統一する抽象クラス。

X/Elements/DynamicNotations[?] Edit


例えば自動リンク

記法はあるが決まっていないもの。

X/Elements/Semantics[?] Edit


検索でスコアを上げる記法

数詞やカラーコードなど。

X/Elements/Plains[?] Edit


ただのテキスト。

X/Plugins/... Edit


いろいろなプラグイン

フレームワークの最上位クラス(の1つ)。

もう1つのフレームワークフレームワーク/Webアプリケーション

その他のクラス Edit