遷移の表現を探る2

default = Action.Input;

Action.Input -> View.InputForm#
  • > View.Confirm#
  • > Action.Complete -> View.Complete#
* << Request.regist; Request.* >> Converter.UTF8; View.InternalError# View.Confirm(prev) -> Action.Input; Action.Complete(false) -> View.InternalError; View.Confirm << v1::Validate.regist; v1(false) -> Action.Input; Action.Complete << v2::Validate.regist; v2(false) -> View.InternalError;

「カテゴリ.名称」という形式のフィルタを順次実行するものである。
デフォルトのフィルタはAction.Input。
Action.Inputを実行したら、View.InputFormを実行。いったん区切り(#)。
すべてのフィルタ(*)の実行前にはRequest.registの実行が必要。
Requestカテゴリのすべてのフィルタの実行後にはConverter.UTF8が必要。
そこで、デフォルトの実行順は、

Request.regist, Converter.UTF8, Action.Input, View.InputForm

となる。

View.InputFormの次はデフォルトでView.Confirm。
View.Confirmの実行前にはValidate.registの実行が必要。ここで、Validate.registにはv1という別名が付けられている。
v1がfalseだとAction.Inputへ。
実行順は、

Request.regist, Converter.UTF8, Validate.regist, View.Confirm

または

Request.regist, Converter.UTF8, Validate.regist, Action.Input, View.InputForm

このような設定ファイルを個別ユースケースごとと、アプリ共通のものとを書いてやるようにする。

Request.* >> Converter.UTF8;

なんてところはアプリ共通の設定ファイルに書いてやるようにすれば、アプリ全体をEUCにするとか、この一行をかえるだけ。

フィルタもカテゴリ別に、個別ユースケースごとのものがなければ、アプリ共通のものを読みに行くようにすればよい。