チーム、開発者、およびチームが実行するタスクがある DDD を使用してシナリオをモデル化しようとしています。
基本的に、私は次のことを想定しています。
Team
実体である (例えば、新しい開発者を参加させることによって変化する可能性があるため)Developer
エンティティでもあります(どの開発者が何をしたかが重要です)Story
エンティティです (たとえば、ワーク アイテムをストーリーに予約することによって変更される可能性があるため)Work
値オブジェクトです(一度変更すると変更できないため)
非常に明白なのは、エンティティTeam
を含む集合体であることです。Developer
また、値オブジェクトStory
を含む集約です。Work
したがって、最初は次のコードから始めます。
var team = Team.FoundTeam();
team.WelcomeDeveloper("John Doe");
team.WelcomeDeveloper("Jane Doe");
var story = Story.WriteDownStory("Publish website");
story.AssignTeam(team);
ここまでは順調ですね。さて、次のステップでは、ストーリーの作業を請求したいと思います。基本的に、これは次のように簡単です。
story.ChargeWork(new TimeSpan(2, 0, 0));
残念ながら、この作業は開発者に割り当てる必要があります。そして、これが私の問題です。これをどのようにモデル化すればよいでしょうか? 私ができないことは次のとおりです。
story.ChargeWork("Jane Doe", new TimeSpan(2, 0, 0));
同じ名前の開発者が 2 人いる場合、これは失敗します。特定の開発者エンティティにアクセスせずに割り当てるにはどうすればよいですか (開発者はTeam
集約ルートを使用してのみアクセスできるため)。
これに関するヒントはありますか?
私のモデルは完全に壊れていますか、それとも何か重要なものが欠けていますか?