1

ドメインモデルを少し理解し、設計に正しくアプローチしていることを確認するために、いくつかの助けを借りることができます。

Departmentという集約ルートがあります。Departmentオブジェクトには、「department」のビジネス概念を定義するのに役立ついくつかの子値タイプがあります。私のUIでは、ユーザーは部門オブジェクトを一覧表示、作成、編集、および削除できます。

Projectという別の集約ルートがあります。プロジェクトにはいくつかの子値タイプがありますが、各プロジェクトが部門によって「所有」されているという点で部門とも関係があります。プロジェクトは作成、編集、削除などが可能であり、そうしても部門に影響はありませんが、部門を削除すると、所有しているプロジェクトもすべて削除されます。

私のUIには、現在のユーザーがアクセスを許可されている部門に基づいたプロジェクトのリストが表示されます。複数の部門にアクセスできる場合があります。リストアイテムと詳細の両方として表示される場合、プロジェクトで部門のロゴを表示する必要があります。

私が最初に考えたのは、プロジェクトは、部門を「検索」するために使用できる単純なDepartmentIDプロパティを持つ集約ルートであるということでした。しかし今、私は実際には1つの集約ルート(Department)しか持っていないと考え始めています。

どう思いますか?

アップデート

それが議論の鍵なのか、何かを変えるのかはわかりませんが、最初のいくつかの答えを読んだ後、次のような考えが浮かびました。

部門には2つのコンテキストがあるようです。

  1. 変更をサポートするスタンドアロンエンティティとして。
  2. プロジェクトの子として、この場合は読み取り専用データが含まれ、動作はありません。

これにより、モデルに2つの「オブジェクト」(ケース#1の集約ルートとケース#2の値型)が必要だと思います。私は正しい方向に進んでいますか?

4

3 に答える 3

1

プロジェクトは部門なしでは存在できないため、おそらく集約ルートではありません。あなたの説明によると、AR は 1 つだけのように思えます。それは、部門内のプロジェクトを管理するために使用する部門です。

あなたの行動が主に CRUD である場合、より簡単なアプローチがおそらくあるので、本格的なドメイン モデルを構築することはお勧めしません。

UPDATE あなたが言及したように、ここには2つの境界付けられたコンテキストがあるかもしれません。部門が AR であり、プロジェクトがこの AR のエンティティである場合。このコンテキストでは、部門に対して操作を実行します。2 番目の BC では、プロジェクトが AR になり、部門がエンティティまたは VO になる可能性があります。これにより、プロジェクトを直接操作できます。

また、ドメインの専門家に相談して、これらの概念が UL に適合するかどうかを確認するか、モデルを明確にするために不足している概念を検索することをお勧めします。私は特に、プロジェクトを部門に結び付けるようなコンセプトを探しています。

于 2011-05-20T08:43:49.753 に答える
1

Project と Department の両方を集約ルートにすることは完全に弁護できると思います。これらは両方とも独立して管理されているからです。

つまり、すべてのプロジェクトとすべての部門には何らかの一意の識別子があり、プロジェクトを部門に追加することはできますが、プロジェクト自体は (独自のライフサイクル、独自の子オブジェクトなどを使用して) 集約ルート ステータスを保証するほど複雑です。

各プロジェクトの部門への参照を保持するだけです。

于 2011-05-20T11:50:08.180 に答える
0

答えられるいくつかの簡単な質問:

1) 部門ドメイン オブジェクトは、プロジェクト ドメイン オブジェクトなしで単独で動作できますか。- はいの場合、部門は集合体です。

2) プロジェクト ドメイン オブジェクトは単独で存在できますか - 存在する場合、プロジェクトも集合体です

3) プロジェクトは 1 つの部門と関係がありますか - その場合、それは、プロパティ部門として公開されるプロジェクト集計の一部である必要があります

4) 部門には 1 つ以上のプロジェクト オブジェクトとの関係がありますか - プロジェクト集計は、部門集計オブジェクトの一部である必要があります。

したがって、Department 集約オブジェクトを使用すると、Project(s) オブジェクトのリストにアクセスする必要がある場合があり、Project オブジェクトを取得したら、Department オブジェクトにアクセスする必要がある場合があります。廃止された循環参照です。

従業員にはマネージャーがいて、マネージャーには従業員のリストがある典型的な例です

于 2011-05-20T23:11:13.387 に答える