世界線航跡蔵

Mad web programmerのYuguiが技術ネタや日々のあれこれをお送りします。

2006年07月11日

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

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

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

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

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

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

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

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

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

トラックバック

http://yugui.jp/articles/482/ping
[rails][workflow] Railsとワークフロー (moroの日記)
to Yuguiさん ワークステートエンジン欲すぃ。 *いま*のRails wayだとControllerへの実装になるのは致し方ないかと。ABDでやれば大抵のお仕事はCRUDと関連テーブルへの命名でなんとかなるんでしょうけど、結局「ある関連をCRUDする」というルールをどう表現するか、なんです

コメント

blog comments powered by Disqus

ご案内

前の記事
次の記事

タグ一覧

過去ログ

  1. 2016年07月
  2. 2016年01月
  3. 2015年09月
  4. 2015年08月
  5. 過去ログ一覧

フィード

フィードとは

その他

Powered by "rhianolethe" the blog system