私はCQRS/ESのアイデア全体を頭に入れようとしており、現行のアプリケーションで実装する方法の概念と技術仕様書を書くことを検討しています。CQRS/ES:一括操作/インポート
問題のある操作(CQRS/ESにマップする方法)は、ファイルインポートによる複雑な記事データの一括更新 - 記事ファイル、記事、ヘッダー、ユニット、およびプロパティ、バイヤー品揃えをサプライヤー品揃えにリンクするファイルの一括読み込み、および揃え品の一部または全部のエクスポートを行います。
記事のインポートBC(Excelファイルやその他のグリッドファイルを読み込みます)をモデル化する最良の方法は、インポートされたデータの1行を作成することだと思っています(DDDCQRS Googleグループでした)。集計、およびインポート全体が集約ルートになります。こうすることで、ファイルを解析した後、インポート集約を作成し、各行に対してその行をインポートに追加するだけです。これにより、BCのイベントストアにイベントが保存され、BCが購読する予定のイベントが公開されます。これは理にかなっていますか?
現在のシステムでは、インポートは1つの長期実行トランザクションで実行されます。ロングランニングは、インポートされるデータの量と、以前にインポートされたファイルおよび現在のデータと比較されるため、特定のユーザーに既に存在するデータの量に応じて、5〜40分の間で読み取る必要があります。操作の途中で失敗すると、現在は操作全体がロールバックされます。 CQRS/ESではどのように機能しますか?
私はこの回答に同意します。モデルをどのように設計しても、インポートを実行する方法は、コマンドが何であるか把握し、インポートファイル内のデータ用に作成し、ハンドラを使用して実行することです。行ごとに1つのコマンドであるか、それとも多くのコマンドであるかは、モデルとトランザクションコマンドによって決まります。インポート用にモデルを書き込まず、モデルの周りにインポートを書き込んでください。 – Dan