業務ロジック
blancoStrutsはActionは自動生成の対象としていません。もちろんActionから呼ばれる業務ロジックにおいても同じです。ただ業務ロジックについてPGにそのデザインを任せるのは非常にリスクが高いということを実感しました。
そこでstrutsにおける業務ロジックのデザインを考えてみましたが、なかなかに難易度が高いです。
まず必要なコンセプトをあげると
・ActionはMVCでいうControlに値する機能のみを持たせる。
・業務ロジッククラスのソースは、詳細設計書(プログラム設計書)と
対比できることが必須。
・ActionFormは業務ロジックに渡してしまう。
Strutsと業務ロジックを分割することも考えましたが、画面へのデータ
受け渡しがstrutsの場合ActionFormを使用するため、分割は不可能と
判断。
※ここで中間的なBEANを生成するのは百害あって一理なし。
※渡したActionFormはビジネスロジッククラスのクラス変数として保持。
・ついでにConnection,request,responseもコンストラクタで渡してしまう。
※responseが必要かどうかは再考する余地あり
※こっちもビジネスロジッククラスのクラス変数として保持。
・業務ロジッククラスはvaildateとprocessのメソッドを持つ。
vaidateは業務チェックロジック、processは業務ロジックそのものである。
・vaidateはstrutsのvalidateと類似したIFとする。
(引数はどうても異なってしまうが戻り値はActionErrorsとする)
・processの戻り値はvoid。基本的にエラーはExceptionで対応。
このあたりまでblancoStrutsが雛形を生成してくれるとありがたいが、
そこまでさせるとかえってやっかいになるのでひとまず置いておこう。