ratio - rational - irrational

« 10秒でわかるJavaとRubyの使い分け | Main | Collatz予想step数の最大値 »

2006年07月11日

ワークステートエンジン欲すぃ。

やっぱりRailsにワークステートエンジンが欲しいよなー。blog程度のものを作ってても思う。id:moroさんがワークステートエンジン、ワークステートエンジンといってた理由が脳に少しだけ染みわたってきた。

モデルオブジェクトにメッセージを送ったときに、他のオブジェクトに連鎖的に副作用が波及するのは別にいいんだ。それがオブジェクト指向だし。そうやって自律的なオブジェクトの間でメッセージが飛び交って、その結果として処理が為されていくっていうのはSmalltalkの意味でのOOから言って正しい。

で、ActiveRecordの、ビジネスロジックを全部モデルオブジェクトに詰め込むやりかたはこのOOと相性がいいと思う。そのやりかたを徹底する限り、ビジネスロジックはモデルオブジェクト同士のメッセージングの連鎖で表現するしかないんだもの。

問題は、「ビジネスロジックじゃないもの」だよね。自律的オブジェクトとしてそのオブジェクトの固有の性質ではないのだけれども、実際の処理にあたっては実行させたい実行手順みたいなやつ。概念分析においてはそのオブジェクトの責務では無いにもかかわらず、そのオブジェクトへのメッセージに付随して行いたい何か。

そういうものがが「ワークフロー」に関わるあたりでは頻出する。それから、あとはある種のロギングやレポーティングもここに含めてもいいかもしれない。だから、これはモデルクラスからは分離して管理したいんだよね。それでワークステートエンジンか。

とりあえずRails的には、これもorchestrationの一種だと開きなおって無理矢理Controllerに実装してしまうほうがまだましかなぁ。モデルクラスのビジネスロジックを汚染するよりはそのほうがいい。ティアを増やすのはRailsではやり辛いし、そこまで大袈裟にすることもない気がする。

DHHは「それCRUDでいいんじゃね?」というけど、でも現実にはCRUDに付随する何かしらの、概念レベルから見たら不正規なロジックが張りついていてそれを実行しなくしちゃいけないケースがあるんだよね。「現実」とか言ってる私はDHHから見るとマトリックスに支配されてるのかなぁ。赤いカプセルを飲む心の準備はできてるつもりなんだけどなぁ。

でも、やっぱりRailsがワークステートエンジンをサポートしてくれないものだろうか。そうすればきっと、綺麗に書けると思うんだけれど。



トラックバック

この記事のトラックバックpingのURL:
http://idm.s9.xrea.com/blog/mt-tb.cgi/480

Ping元:[rails][workflow] Railsとワークフロー

概要:
to Yuguiさん ワークステートエンジン欲すぃ。 *いま*のRails wayだとControllerへの実装になるのは致し方ないかと。ABDでやれば大抵のお仕事はCRUDと関連テーブルへの命名でなんとかなるんでしょうけど、結局「ある関連をCRUDする」というルールをどう表現するか、なんです
Weblog:
moroの日記
日時:
2006年07月12日 00:24

コメント

新しくコメントをつける

よくわからない理由により、コメントが即座には反映されないかもしれませんか゛、ボタンを押して元の画面に戻ってきたならたぶん正しく送信されています。




blog操作

検索


カテゴリー

このブログについて

あわせて読みたい

follow yugui at http://twitter.com
© 2006 Yugui

Powered by Movable Type 3.2-ja-2