2016-07-06 14 views
2

私たちのアプリケーションは、私たちが扱っている第三者との間で多くのデータを送受信します。
ドメインモデルには、主にそのデータが入力されています。ドメインIDとしての外部ID

「問題」は、「良い」候補をドメインIDとして識別して集計することです。我々は3つのオプションがあるよう

に思える:

  1. がドメインアイデンティティ(UUIDまたはDB-sequenceを...)を生成します。
  2. 外部IDをドメインソースIDとして使用すると、外部ソースのすべてのデータが取得されます。
  3. 内部ドメインIDと外部IDを個別のIDとして使用します()。これは検索操作に使用される可能性があります。内部IDは、常に外部-IDについて

をリードしています:

  • それは100%がIDが
  • IDが外部を常に管理さを変更することはありませんが保証されますソース
  • 他のドメイン私たちのシステムは、ext上記ernal-ID検索操作のための

特に最後の点は、外部-idはインフラ心配はありませんが、実際にドメインに属していることを私たちに確信させました。

どのオプションを選択する必要がありますか?

** UPDATE **

たぶん私は、用語「第3回党について明確ではありませんでした。
実際、外部ソースは、自動車業界で活躍しているクライアントです。
私たちのアプリケーションは、クライアントのマスターデータを使用していくつかの「もの」を完成させます。私たちは、私たちのクライアントは、私たち何かを説明する「タスク」を送信し

など
「メンテナンス」「クライアント管理」のような有界コンテキスト(BC)、いくつか、「調査」「予定」を持っていますが必要です。

  • クライアントYのための
  • のスケジュール/クライアントXのために予約をキャンセル "
  • 「車のX位置XYZでメンテナンスを予定している「クライアントXの完全な調査Yましょう」は「何か」のかもしれないと '

これらの「タスク」には、常に一意であることが保証された「タスクID」があります。 すべての着信「タスク」をデータベースに格納します(アクティブレコードスタイル)。タスクに対するすべての可能なアクションは、ドメイン・イベントを使用してマップされます。

すべてのBCには、ドメインイベントを他のBCに配布する1つまたは複数の集約が含まれています(複数のBCが同じタスクに関心を持つ可能性があります)。たとえば、予定が取り消されると、ドメインイベントがトリガされ、メンテナンスはそのイベントを聴いて何らかの処理を行います。

ただし、クライアントには、タスクに関連するすべてのアクションの後にいくつかのメッセージが表示されます。したがって、常に 'task-id'を使用する必要があります。

は、物事を要約すると:

  • タスク
  • タスクを複数のBC
  • すべてのBCは、関連タスク-idを持つクライアントにいくつかの「結果メッセージ」を送るに関連するかもしれないタスクIDを持っています
  • タスクIDは、ドメインのイベントで配布されている我々は、すべての(内部)タスクを持続し続ける
  • 最新


うまくいけば、私はexternal-id(= task-id)と異なるBCの使用について十分に分かりました。

答えて

2

私の直感は、あなた自身のアイデンティティを管理し、これに対して第三者のサービスに依存しないようにするため、上記のオプション3です。しかし、文脈なしで言うのは難しい。第三者システムとは何ですか?あなたのドメインは何ですか?

サードパーティのサービスを切り替えることはできますか?

ドメインの他の部分が外部IDを使用してクエリを実行する可能性があるとします。内部システムまたは第三者サービス?

[更新]

新しい情報に基づいて、correlationIdのように聞こえます。私は集計に関連する他の情報と一緒にそれを保存します。

2

一般的なルールとして、DB-sequence番号を識別子として使用することを拒否します。ドメインモデルは永続性の選択とは独立している必要があります。ドメインモデルは識別子をデータベースに書き出します(DBが独自の目的のためにシーケンス番号をトラッキングしたい場合、それは問題ありません)。

一部の状況では意味がありますが、外部識別子を使用することは嫌です。 「顧客」のような所与のエンティティは、多数の異なる境界のあるコンテキスト内に表現を有する可能性があり、それらのすべてに対して同じ識別子を使用することが理にかなっている可能性がある。

デフォルト:外部IDをシードの一部として使用して、外部から内部への簡単なマッピングを提供するname based uuidに届きます。

関連する問題