• 追加された行はこの色です。
  • 削除された行はこの色です。
RIGHT:[[:t/ユースケース]] [[:t/Web]] [[:t/Wiki]] [[:t/権限]]

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

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

実装は[[X/Usecase]]. MVCのControllerクラス。
実装は[[X/Usecase]]. MVCのController(コントローラー)クラス。
自身にあったMVCのViewクラスを呼ぶ。

%%ユースケース名にはステップ番号が付く。''register_user.3''など。%%

ビューを呼ぶのはGETリクエストのみ。他のサーバー側に副作用を及ぼすリクエストにはビューを呼ぶ代わりにリダイレクト。副作用を与えずにビューを呼ぶだけのユースケースにリダイレクトする。一般的なリロード対策。

----

#contents

***ステップ [#f098c9cb]
1回のリクエストで終わらないユースケースは複数ステップで構成。ステップを進むか他のユースケースに移るかはリクエスト次第。ということはWikiに書かれているリンク次第。

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

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

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

例えば、編集ステップ1…編集フォーム生成、編集ステップ2…投稿受け付け・ビューなし、編集ステップ3…閲覧ビューへリダイレクト。
***何を返すかは別途指定 [#tfe8d468]
→ [[:i/選べるビュー]]
ユースケースとビューを別々に指定。
ユースケースは編集のステップ2にページ名とNotationTextを付けて要求、レスポンスはリダイレクトで同じページの閲覧ビュー/編集ビューを要求するとか。それぞれにパラメーターが必要。ユースケース名/レスポンス名でも必要なパラメーターが異なる。

でも型を揃えるために、ビューは必ずユースケースから呼ぶこと。ビューを呼ぶだけのユースケース(のステップ)を作る。
指定できるのはユースケースと(ビューを呼ぶ)ユースケース→ユースケースだけということになる。
*** [[:/ユースケースで何を返すかは別途指定]] [#z6538876]
***いろいろなユースケース [#tf59d46e]
権限(錠)別になる。

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

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

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

***[[:i/権限と拒否]] [#oc720b27]
***[[:/何に錠をかけるのか]] [#f4549e77]
***[[:/権限と拒否]] [#oc720b27]
権限判定をするなら拒否判定も必要。



***[[:i/ユースケースチェイン]] [#zb7a37c0]
複数のユースケースを一度に呼ぶとレスポンスも一度に返ってくる…ように見えるビュー。
下位展開と同種でいい。「複数のリクエストをサーバーに送る」ためのビューを返すだけ。



***[[:/ユースケースチェイン]] [#zb7a37c0]
*** URLクエリーをページ化するユースケース [#z7460dd2]
[[ページ/要素#m56b6643]]