我想了解有限上下文集成的建议。 我有一个把我放在角落里的用例:
Contract
管理层有一个有限的背景。我可以在合同中添加各方(例如各种外部组织)。为每一方选择他们的投资/贡献(例如:总数的10%)。 SO合同管理有两个方面:一个是行政管理(添加方,管理多个日期,......)另一个是财务(计划多年的捐款,检查捐款消费,......)。Budget
的另一个有界背景。此上下文负责组织级别的费用管理。示例:服务A将具有1000€的费用容量。我们可以计划预算,然后每个组织方可以消费,购买东西,他们的一部分。为了建立预算,负责企业预算的用户可以直接分配资金或整合年度合同财务部分。当我们在预算中集成合同部分时,我们冻结了预算内的数据,即我们从另一个数据库表中复制货币数据(添加一些审计信息)。我们有一个数据库。这是我奋斗的最后一部分。每个有界上下文都是专用的应用程序。在budget
应用程序中,在将合同部分集成到当前预算中之后,我需要显示预算明细行。不幸的是,在预算表中我只有钱数据,而不是关于合同的一些基本信息(对象,参考,......)。
我在想什么:
budget context
内进行。但这里存在的问题是数据重复。今天我需要对象/ refrerence,如果明天我需要更多字段......我将需要域事件管理来保持合同/预算之间的数据同步。contract
服务。这使每个上下文保持自治,但我需要发出大量数据库请求来丰富budget details line
个对象。contract
结构。我没有在上下文之间签订程序化合同。我的问题是:
如何构建需要budget context
数据的UI屏幕,每个详细信息行都需要来自contract context
的数据?
附注:
答案 0 :(得分:1)
这是一个额外的,独特的有界背景。它与现有的有界上下文有一些重叠,这很容易导致你走错路径(合并上下文或在其不属于的上下文中添加其他行为)。
有时可以让实体处于不同的有界上下文中,这些上下文指的是同一个逻辑实体,但它们只是为了特定场景的目的而提供该实体的不同视图(例如,在特定的上下文中) )。
这方面的一个很好的例子是电子商务场景。在大多数电子商务应用程序中,您将拥有Order
的概念,但没有关于" order"的全局,明确的概念。是。在财务环境中 - 订单只是一张发票。在履行环境中 - 订单只是一个装箱单和一个发送货物的地址。在营销环境中 - 订单代表了客户感兴趣的一小部分情报,可用于未来的目标营销。
有一个贯穿所有这些实体的共性线程,但您可能会看到至少3个单独的Order
类,每个类都捕获上下文中的订单的概念
因此,在您的情况下,您有Contract
的有界上下文和Budget
的有界上下文。在我看来,你现在有另一种方式来看待这些实体,特别是它们彼此互动的方式。这是实体的新视图,可以在其自己的上下文中捕获视图。这个新的上下文可能会有自己的Contract
和Budget
个实体,并且会与上下文和预算上下文重叠,但是那里还会有其他的关系和行为,这些关系和行为不会出现。在其他情境中有意义。
这是一个很难解释的想法:)我前一段时间写了一个类似问题的答案:DDD - How to design associations between different bounded contexts