私は最近開始しようとしている緑色のフィールドプロジェクトのCQRSとDDDの調査を開始しました。私はUdi Dahan、Greg Young、Mark Nijhof他から多くの資料を勉強しました。これらは本当に非常に役に立ち、私はその概念をよく理解していると思います。しかし、私が自分のドメインにこれらをどのように適用できるかについては、まだまだ疑問が残っています。ルールは、特定の製品の最終的な価格が決まるする -CQRS - シナリオ実行システムをモデル化する方法
私のシステムは、基本的には、複雑なルールエンジンとなります。製品の定義とルールは管理者によってシステムに入力されます。ルールは、年齢ように、事前に定義されたセットからの値を持つことができる特性、例えば「購入の目的」として(再販は、貸し出す)または自由形式の値の所定のセットを使用して管理者が設計されます。
各製品は、基本価格を持っていますし、ルールは基本的に、彼らが適用された場合に基本価格から削除/追加されます。
非常に簡単なサンプルルールは次のようになります。製品Xについては
は、IF(購入目的=再販と年齢> 25)は基本料金に25 $を追加します。
だから製品、ルールベースの価格を定義するシステムを使用するユーザー、管理者、の2種類があります。 what-if UIを介して入力したシナリオに基づいて価格をクエリする他のユーザーが含まれます。
シナリオを実行してもドメインの状態はまったく変更されません。シナリオの実行結果に関心のある外部システム/ユーザーは誰もいません。実行中のユーザー自身です。指定されたシナリオに適用されるルールを実行した後の価格計算の結果。例えば、ユーザは、商品Xを選択し、所定のシナリオの価格、など(購入目的=再販と年齢= 40)を照会するかもしれません。繰り返しますが、この操作でドメインの状態はまったく変更されないため、クエリであると思います。しかし、最終的な価格を計算するためにシナリオ上で動作するルールエンジンがあります。これは、ドメインロジックが実行されていると分類できます。だから - この論理はどこに属しているのですか?これは、読んだモデルからちょうどうまくいくクエリか、シナリオをドメインモデルで実行する必要のあるコマンドを実行していますか?ここでも、ドメイン層がこれらのルールのための場所であると感じますが、シナリオ実行の結果をユーザーに渡すにはどうすればいいですか(このように考えているクエリのように感じます)。あるいは、CQRSはこの問題の正しい解決策ではありませんか?
+1私は聞いたことがない[cqrs](http://blog.fossmo.net/post/Command-and-Query-Responsibility-Segregation-%28CQRS%29.aspx)パターンがある前。ただ、明確にする – k3b