2017-04-20 1 views
0

SignupRequestと呼ばれる集計があり、この集計履歴を追跡する必要があります。リクエストは受け入れられたり禁止されたりします。 これらのビジネスコンセプトをモデル化するのに望ましいソリューションはどれですか? 1- signupRequestの履歴を管理するために使用されるsignupRequestHistory集計を作成しますか? 2- SignupRequestには、SignupRequestHistory値オブジェクトのコレクションが含まれます。DDD: - コンセプトをその歴史とともにモデル化する方法?

  • SignupRequestHistoryはリクエスト自体のトラッキング履歴(不変のデータ) であることに注意してください。これらの履歴データにはビジネスインバリアントは存在しません
  • また、同じ概念が多くの場所で適用されています。たとえば、SubscriberとSubscriberHistoryのように、その機能を実装するにはクリーンなパターンが必要です
  • また、あなたが言及したように目的
+0

イベントソースを検討するhttps://www.youtube.com/watch?v=8JKjvY4etTY –

答えて

3

は、あなたがSignupRequestの状況と変化の日付/時刻を保持SignupRequestHistory集計を作成することができます。

SignupRequestには、SignupRequestHistory値オブジェクトのコレクションが含まれます。

コレクションをSignupRequestに追加する前に、その理由を考える必要があります。あなたはSignupRequestHistoryのコレクションを必要としないと最初に示した "no business invariants exist"を指定しました。SignupRequest

正確なドメインはわかりませんが、SignupRequestHistoryはおそらくその部分ではありません。ビジネス上の問題を解決するために使用されるものではなく、厳密にはレポート/ビジュアルのニーズです。 SignupRequestHistoryが実際に表しているのはドメインイベントです。これはドメイン内の状態の変化です。これは、あなたがEvent Sourcingのメリットがあると信じさせてくれます。

すべてのドメインイベントをソーシングすると、集約ルートのレイズはイベントストアに順に格納されます。集約の状態が変更されるたびに、将来の使用のために格納されるイベントが発生します。これにより、集約ルートがあったすべての異なる状態の履歴が得られます。イベントストアからイベント(イベントストリーム)を順番に読み込んで履歴の任意の日時に読み込むことで、集約ルートを再構築することができます歴史のその時のように見えた。

さまざまな格納されたドメインイベントを使用して、効率的なビューモデルを構築することができます。

イベントソーシングは、多くの作業の前に行うことができます。あなたが多分最初のアプローチと一緒に行く時間が長くない場合は最高です。それぞれの方法に長所と短所があります。あなたは間違いなくあなたの暇な時間にイベントソーシングを調べる必要があります。

+0

@ ConstantinGALBENUこれは、「別の「束縛されたコンテキスト」を除いて言ったこととほぼ同じです。このために別のBCを持つことは、「あまりにも多くのオーバーヘッド」とみなすこともできます。私たちはOPの正確なドメインと彼/彼女の状況を知りませんので、彼/彼女は何が妥当であるかを知っています。 – daviomey

+0

私はコメント –

+0

を削除しましたイベントソーシングは実際にはいくつかの作業を必要としますが、イベントソーシングフレームワークを構築する人は通常それについて知識を得るため、無駄ではありません。より長期的には、イベントソースのアプリケーションはイベントの監査ログのために保守が容易ですが、移行は少し難しくなります。 –

2

境界のあるコンテキストの境界をもう一度修正することをお勧めします。おそらく、この履歴は別の境界のあるコンテキストに保持する必要があります。

CQRSを使用して、書き込みモデル(集約)によって生成された関連するドメインイベントをリッスンすることによって、すべての集約状態の履歴を含む特定の読み取りモデルを作成できます。

Event sourcingは素晴らしいですが、この状況には適していません。エンティティ履歴の恩恵を受けるにはあまりにも多くのオーバーヘッドがあります。

UPDATE

イベントソーシング平野CQRS以上の2つの主な利点があります。

  1. トランザクションを使用する必要はありませんが
  2. あなたでし後者あなたが
  3. を望む限り多くの読み取りモデルを追加

また、が大きいマイナス:

  1. イベントバージョニング

二つの利点のいずれかのアプリケーションであなたを助けるならばそれはあなたの呼び出しです。

+0

ドメインイベントを公開したり保存したりするのにフル・フェッジ・イベントのソーシングは必須ではないと主張しています。現在の状態を記憶することと、履歴追跡目的のためにいくつかのイベントを使用することとの間のハイブリッド手法を使用することができる。 – plalx

+0

はい、ちょうど最後の段落の私のポイント。 –

+0

@plalx私はESに関する説明を追加しました –