私はEventSourcingを使用したDDDプロジェクトを持っています。そして、現在のところ、多くの集合体を持つ多くの集合ルートがあります。さらに、一部のエンティティには他のエンティティのコレクションがあります。EventSourcingとDDDエンティティイベント
問題:監査の目的でEventSourcingイベントログを読み込んでいます。
質問:エンティティが更新/作成/削除されたときにEventStoreのイベントを保存する最良の方法は、これらのことを念頭に置いています。これらは読みやすいものでなければならず、バージョンではなく、おそらくドメインイベントがクロスドメイン通信に使用されることになります。
は私の中にRootChangedEventなどのエンティティのすべてのコレクションと完全ルートをストリーミングするルートに保存すべきか?
私は2つのイベントEntityChangedEvent/EntityCreatedEvent/EntityRemovedEvent
としてルートストリームで削除更新されたエンティティー/作成されたが、/ Iは、ルート・ストリームに保存すべきのみ保存すべき - ルートの1 - RootChangedEvent EntityCreatedEventのみidがEntityRemovedEventがあればあればそのようなものがEntityChangedEventまたはエンティティ全体で変更した場合にのみ、単一のプロパティを持つことになりますエンティティのための唯一のバージョンプロパティ+秒と(どのように処理するかの作成したエンティティのエンティティ/更新/削除?)
ここは例です私のプロジェクトでは:
ルートパイプライン。
public class Pipeline : AggregateRoot<IPipelineState>
エンティティの集合 - public IList<Status> Statuses
を持っています。
各ステータスには、エンティティの集合 - public IList<Logic> Logics
があります。
すべてのコレクションには多くのエンティティを格納できます。そして今、私はPipelineCreatedEvent、PipelineChangedEvent(Pipelineが変更されたときだけでなく、ステータスやロジックを追加、更新、削除するときだけでなく)やPipelineRemovedEventのようなイベントを発生させます。
イベントがCRUDに関するものであれば、悪い匂いです。 Event Sourcingを使用すると、事象がエンティティ特有のものではなくビジネス特有のものである場合、後でドメインモデルを変更する柔軟性が得られます。 –