スタラジ補足 ビジネスロジック

チャットからの質問で,「ビジネスロジックはサービス層に置くか,エンティティ層に置くか?」といった感じの質問がありました.答えられるような立場ではありませんが...
ここで言うビジネスロジックとはどういうものなのか? を考えることが大切だと思います.ビジネスロジックを一つの大きな固まりだと考えると,「どちらに置くか?」という二者択一的な問題だと考えてしまいがちです.そうではなくて,ビジネスロジックも実際には様々な要素に分解することが出来ると思うのです.といっても私自身,確固たるモデルを持っているわけではありません.試行錯誤が全然足りていないので.
とりあえず,「UMLによるビジネスモデリング (isbn:479731382x)」をスタート地点として考えることが出来るのではないかと思っています.この書籍には,ビジネスモデルのメタモデルというのが提示されています.ビジネスモデルという言葉も使われ方の幅が広い用語ですが,ここで言うビジネスモデルはビジネスプロセス+リソースという感じのもので,それを構成する要素とその関係を図示してくれているのです.
そのうちいわゆるビジネスロジックとひとまとめにされていそうなものをピックアップすると...

  • プロセス(Process)
  • 状態変化(State Change)
  • ルール(Rule)
    • 制約的(Constraint)
    • 派生的(Derivation)
    • 存在的Existence)

これらについてさらに粒度もいろいろあり,それがまた階層的な関係(コンポジットパターンみたいな)を作り上げるのではないかと思っています.
そのうち細粒度のもの,特に特定のエンティティに閉じたものであればエンティティ層に配置するでしょうし,プロセスのようにより粒度の大きなものはサービス層に配置することになるでしょう.
という感じで,同書はいろいろと想像力を刺激してくれて,悪くないと思います.
おっと,LIVEで喋った以上の内容を書いてないぞ.これじゃ補足じゃないじゃん.無念だ.