问题标签 [domain-events]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
160 浏览

domain-driven-design - ApplicationEvent 与 DomainEvent 有何不同?

在 DDD Sample, Cargo Tracking 应用程序中,有“ApplicationEvents”和 DomainEvents。

ApplicationEvents 示例:“cargoHasArrived”、“cargoWasMishandled”

DomainEvent 示例:“HandlingEvent.LOAD”、“HandlingEvent.RECEIVE”、“HandlingEvent.UNLOAD”等。

应用程序和域事件在语义上应该如何不同,您使用哪些准则来确定它是进入 ApplicationEvent 还是 DomainEvent?

0 投票
1 回答
224 浏览

asynchronous - ACL 和 BoundedContext 之间的异步通信

我们正在为一个项目关注 DDD……我们需要从有界上下文访问遗留应用程序。所以我们创建了一个反腐败层..但是我们有一个问题......我们在ACL中执行的方法是异步的,并通过事件返回结果......调用的结果用于更新数据库中的数据库绑定上下文...

在这种情况下,我们可以使用域事件在 ACL 和有界上下文之间进行通信吗?

提前致谢

0 投票
1 回答
54 浏览

domain-driven-design - 领域事件是客户定义的,不是硬编码的

我们的 SaaS 产品的要求是构建一个域层,其中任何属性或属性组合的更改都可能触发域事件 - 并随后启动自定义流程或通知。

因此,我犹豫是否要向域层添加大量代码,这些代码会启动大量 DomainEvent 对象,这对许多租户来说可能没有意义。

每个租户将有能力(通过 UI 屏幕): 1. 定义他们关心的属性(例如“金额”)以及原因(例如金额现在大于 100 美元) 2. 定义当他们改变时会发生什么(例如踢关闭审批程序)

对我来说,这似乎是一个业务规则引擎集成以及一个 BPMS。有人对更轻量级的框架或解决方案有想法吗?

0 投票
2 回答
913 浏览

domain-driven-design - 聚合可以成为领域事件的一部分吗?

考虑具有许多属性的聚合。例如用户组。如果我想发布一个 UserGroupCreatedEvent 我可以做两件事:

  1. 将刚刚创建的 UserGroup 中的属性复制到 UserGroupCreatedEvent 并复制它们的值。或者:

  2. 在 UserGroupCreatedEvent 中引用新的 UserGroup

在许多示例中,例如 Axon 的联系人应用程序,我看到了属性重复。我想知道为什么,如果在现实世界的 CQRS 应用程序中,这不是很多开销,开发人员选择引用聚合来代替。

0 投票
1 回答
838 浏览

domain-driven-design - DDD 中本地消费的领域事件

我最近熟悉了 DDD 并试图掌握关键概念,并且我有一个查询是否要为本地订阅者发布域事件,所以我可以假设事件发布者通过 AQMP 负责向远程订阅者发布同时还利用 observable 将其发布给本地订阅者,这是一个可扩展的解决方案吗?还是有一个熟悉的模式来处理这个?(如果有prblm的反应解决方案,可能是RxJava或类似的)

0 投票
1 回答
678 浏览

java - DDD - 领域事件存储和发布的架构

我正在为我们的应用程序实现域事件框架,下面是相同的伪代码,想知道是否有任何明显的警告

该框架将设计为 2 步,以便持久化领域事件(以便稍后重建模型状态以防万一,或者我们可能会添加一个报告系统)和发布基础设施

存储

出版

这是我根据一些研究可以想出的最简单的方法,只是不想忽略任何东西。

持久性将是连接池 Postgres,如前所述,RabbitMQ 将是消息传递基础。

0 投票
2 回答
543 浏览

c# - DDD 通用与特定领域事件

我正在研究领域事件,特别是两种可能性:

A. 使用这样的“通用”事件:

然后消费者会找出新的状态并做一些事情。由于我使用的是 Rx,所以这并不难(并且比开关/外壳更好):

B. 使用特定事件:

这将导致更多的事件类,一方面可能会太多,另一方面事件类名称包含语言,这可能是一个加分点。

你有什么建议?我对领域事件没有经验,也无法在这里真正做出合格的决定(两者似乎都没有任何重大缺点)

0 投票
2 回答
363 浏览

domain-driven-design - 每个对象都应该在 DDD 中建模为聚合、实体还是值对象?

我在社交网络网站的设计中使用 DDD(包括域事件)和 CQRS(没有事件溯源)。

我有聚合根,如User, FriendRequest, Friendship。我也有像UserAddressChanged,之类的领域事件FriendRequestAccepted。其中一些事件需要通知相关用户。所以我正在考虑Notification上课,比如:

但是我应该将Notification类建模为聚合根吗?如果是,则当User聚合更改地址并引发UserAddressChanged域事件时,在相应的事件处理程序中,Notification将创建一个新聚合并随后通过NotificationRepository. 但是在事件处理程序中创建新的聚合对我来说听起来很可疑

同时,我也觉得对于一个简单的类来说太重了Notification。我无法确定通知是域问题还是基础设施问题。

0 投票
1 回答
142 浏览

php - 领域事件如何获得额外的数据?

我正在使用 DDD 构建电子商务系统。在这个系统中,我有两个有界上下文:Identity & AccessSales.

客户可以通过填写姓名、电子邮件和密码的表格进行注册。然后在Sales上下文中,我注册了一个客户:

Customer聚合引发事件CustomerWasRegistered

上下文对此Identity & Access事件做出反应并SystemUser为该客户创建一个聚合:

我的问题:因为Customer聚合不知道密码(也不知道CustomerWasRegistered事件)。如何从请求到Identity & Access上下文中获取此密码?

0 投票
3 回答
1743 浏览

domain-driven-design - 如果域事件失败了怎么办?

我是 DDD 的新手。现在我正在查看域事件。我不确定我是否正确理解了这个领域事件,但我只是在想如果发布的领域事件失败会发生什么?

我这里有个案子。当买家从我的网站订购东西时,首先我们将创建一个对象,Order with line of items。将发布域事件 OrderWasMade 以扣除 Inventory 中的库存。那么情况就是这样,如果在处理事件时,会扣除商品数量,但如果系统尝试扣除库存时,发现该商品没有剩余库存怎么办(金额= 0) . 因此,无法扣除项目金额,但订单已提交。

这种情况会发生吗?

很抱歉在这里挤进了另外两个问题。

  1. 似乎每个事件都在自己的事务范围内,这意味着系统需要一次打开多个到数据库的连接。因此,如果我使用 IIS 服务器,我必须启用 DTC,对吗?

  2. 领域事件和领域服务之间有什么关系吗?