我想听听你对有限上下文集成的建议。我有一个实用程序把我放在一个角落里:
Contract管理,我有一个有限度的上下文。我可以将各方(例如各种外部组织)添加到合同中。为每一方选择他们的投资/贡献(例如:总投资的10% )。因此,合同管理是双重的:一是行政管理(添加一方,管理多个日期,.)另一个是财务方面(计划他们的缴款跨越数年,检查缴款消费,.)。Budget提供了另一个有界的上下文。这一背景负责组织一级的费用管理。一项服务A将有1000欧元的消费能力。我们可以计划一个预算,然后每个组织党可以消费,购买东西,他们的一部分。为了建立一个预算,负责企业预算的用户可以直接分配资金,或者集成一个年度合同财务组件。当我们在预算中集成合同部分时,我们会冻结预算中的数据,即将货币数据从一个数据库表复制到另一个数据库表中(添加一些审计信息)。我们只有一个数据库。这是我挣扎的最后一部分。每个有界的上下文都是一个专用的应用程序。在budget应用程序中,在当前预算中集成了合同部分之后,我需要显示预算详细信息行。不幸的是,在预算表中,我只有货币数据,而没有关于合同的一些基本信息(object,reference,.)。
我在想什么:
budget context中进行。但是这里有问题的是数据的重复。今天我需要对象/refrerence,如果明天我需要更多字段..。我需要域事件管理,以保持合同/预算之间的数据保持同步。contract服务,它将返回所需的数据。这使得每个上下文都是自治的,但是我需要发出大量的数据库请求来丰富budget details line对象。contract结构。我在上下文之间没有程序契约。我的问题是:
如何构建这个需要来自budget context的数据的UI屏幕,而每个细节行都需要来自contract context的数据?
附带说明:
发布于 2015-02-22 13:24:08
这是一个额外的、不同的有界上下文。它与现有的有界上下文有一些重叠,这很容易导致您选择错误的路径(合并上下文或在不属于上下文的上下文中放置附加行为)。
有时,在不同的有界上下文中有实体是可以的,这些实体指的是同一个逻辑实体,但它们只是为特定场景的目的提供了一个不同的实体视图(例如在特定的上下文中)。
这方面的一个很好的例子是在电子商务场景中。在大多数电子商务应用程序中,您将有一个Order的概念,但是对于“订单”是什么,还没有一个全球性的、明确的概念。在金融背景下,订单只是一张发票。在履行方面-订单只是装箱单和发送货物的地址。在营销环境中--订单代表了一小部分关于客户感兴趣的信息,可以用于未来有针对性的营销。
所有这些实体都有一个公共线程,但是您可能会看到至少3个单独的Order类,每个类都在上下文中捕获订单的概念。
因此,在您的例子中,Contract有一个有界的上下文,Budget有一个有界的上下文。在我看来,你现在有了另一种方式来看待这些实体,特别是它们之间相互作用的方式。这是实体的一个新视图,它可以在自己的上下文中捕获。这个新的上下文可能有自己的Contract和Budget实体,并且将与上下文和预算上下文重叠,但在上下文和预算上下文中也会有额外的关系和行为,这在其他上下文中是没有意义的。
这是一个很难解释的想法:)不久前我在这里写了一个类似的问题的答案:DDD - How to design associations between different bounded contexts
https://stackoverflow.com/questions/28655668
复制相似问题