私は、DDD と境界コンテキストの使用にどのようにアプローチするかを理解しようとしています。
私の質問を説明するために、例を考え出そうとしました。(迅速にするために貧血クラスを使用しています)。
私は、異なる境界付けられたコンテキスト内でドメイン オブジェクトを分離する方法を計画しようとしています。
従業員になり得るドメイン オブジェクトについて考えました。
人事部と財務部という 2 つの境界付けられたコンテキストがあるとします。
一般に、財務部門は、人事部門よりも従業員に関するより多くの情報を必要とします。人事部は、従業員の銀行の詳細、国民保険番号、または契約時間に関する情報を必要としません。(一部のビジネスでは、これは完全に真実ではないかもしれませんが、例ではこれを想定してみましょう)。
したがって、2 つの異なるコンテキストでは、従業員に必要な動作/相互作用が異なります。
人事部門。
public class Employee
{
public int Id { get; set; }
public Title Title { get; set; }
public string Forename { get; set; }
public string Surname { get; set; }
public Address Address { get; set; }
public DateTime DateOfBrith { get; set; }
public DateTime EmploymentStartDate { get; set; }
}
財務部。
public class Employee
{
public int Id { get; set; }
public Title Title { get; set; }
public string Forename { get; set; }
public string Surname { get; set; }
public Address Address { get; set; }
public DateTime DateOfBrith { get; set; }
public string NationalInsuranceNumber { get; set; }
public BankAccount BankAccountDetails { get; set; }
public double ContractedHours { get; set; }
}
この例では、HR コンテキストの Employee オブジェクトを制限して、必要な動作のみを行い、Finance コンテキストには拡張動作を持たせるにはどうすればよいでしょうか。
アプリケーションが複数のコンテキストに分割され、そのすべてが Employee に関連付けられたカスタム動作を持っている場合、Employee オブジェクトをどのようにモデル化すればよいでしょうか。
コンテキスト マップを作成するさまざまな方法を調べましたが、共有カーネルが有望に思えますが、それはすべてのコンテキストが Employee Domain オブジェクトに関連付けられたすべての動作を共有することを意味します。
それぞれの文脈は限られていると思います。
ヘルプ!