RIGHT:[[:t/ユースケース]] [[:t/Web]] [[:t/Wiki]] [[:t/権限]]

何をするかを表すクラス。利用者はこれを指定することでシステムを操作する。
権限判定を行なうのはここ。独自の権限判定を要する場合はユースケースを分ける必要があるということ。

PukiWikiのcmdにあたるものがユースケース。MediaWikiでならaction.

実装は[[X/Usecase]]. MVCのControllerクラス。
自身にあったMVCのViewクラスを呼ぶ。

----

#contents

***ステップ分割 [#f098c9cb]
%%1回のリクエストで終わらないユースケースは複数ステップで構成。ステップを進むか他のユースケースに移るかはリクエスト次第。ということはWikiに書かれているリンク次第。%%
→ クライアント側だけで対処するので、ステップ分割はしない。REST APIアクセスと、クライアント側コードを返すケースだけ。
***ユースケースとビュー [#k45ee21e]
ユースケースはMVCのController. ビューはMVCのView.

ビューを呼ばないユースケース(のステップ)と、ビューを呼ぶユースケース(のステップ)。どれをどういう順番で呼ぶかはリクエスト次第。

ユースケース+ステップで最上位のコードが決まる。

例えば、編集ステップ1…編集フォーム生成、編集ステップ2…投稿受け付け・ビューなし、編集ステップ3…閲覧ビューへリダイレクト。
*** [[:/ユースケースで何を返すかは別途指定]] [#z6538876]
***いろいろなユースケース [#tf59d46e]
権限(錠)別になる。

-閲覧
-編集
2ステップ構成。
1.NotationTextを含む編集ビューを返す。
2.投稿・更新・リダイレクトコードを返す。リダイレクト先はリクエストにある。
-履歴

***一時的なページ [#s61d3807]
ページ/要素の公開API(WebAPI)を呼び出す方法。ページ/要素を直接呼びたいときに使う。実装では一時的なページに特定の要素を配置して呼び出す。[[→:埋め込み]]

一時的ページにページ/ページ/要素/ページ/属性を埋め込んで(これが永続的なページを読み込むことに相当する)そのページをいずれかのビューに渡してレンダリング。
というユースケースが''[[→:jot]]''
ページ/要素プラグインごとにユースケースを用意しなくていい。実装ではページに記述されたときと処理を統合できる。
***[[:i/ユースケーススコープ]] [#med0ad44]
***[[:i/何に錠をかけるのか]] [#f4549e77]

***[[:i/権限と拒否]] [#oc720b27]
権限判定をするなら拒否判定も必要。



***[[:i/ユースケースチェイン]] [#zb7a37c0]
複数のユースケースを一度に呼ぶとレスポンスも一度に返ってくる…ように見えるビュー。
下位展開と同種でいい。「複数のリクエストをサーバーに送る」ためのビューを返すだけ。
→ APIアクセスとビューにリクエストに分けるので、もういい。ユースケース間でデータ共有すべきでもないので、やるなら「やることを選べるユースケース」を作るべき。
***[[:/ユースケースチェイン]] [#zb7a37c0]
*** URLクエリーをページ化するユースケース [#z7460dd2]
[[ページ/要素#m56b6643]]