问题标签 [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.
domain-driven-design - ApplicationEvent 与 DomainEvent 有何不同?
在 DDD Sample, Cargo Tracking 应用程序中,有“ApplicationEvents”和 DomainEvents。
ApplicationEvents 示例:“cargoHasArrived”、“cargoWasMishandled”
DomainEvent 示例:“HandlingEvent.LOAD”、“HandlingEvent.RECEIVE”、“HandlingEvent.UNLOAD”等。
应用程序和域事件在语义上应该如何不同,您使用哪些准则来确定它是进入 ApplicationEvent 还是 DomainEvent?
asynchronous - ACL 和 BoundedContext 之间的异步通信
我们正在为一个项目关注 DDD……我们需要从有界上下文访问遗留应用程序。所以我们创建了一个反腐败层..但是我们有一个问题......我们在ACL中执行的方法是异步的,并通过事件返回结果......调用的结果用于更新数据库中的数据库绑定上下文...
在这种情况下,我们可以使用域事件在 ACL 和有界上下文之间进行通信吗?
提前致谢
domain-driven-design - 领域事件是客户定义的,不是硬编码的
我们的 SaaS 产品的要求是构建一个域层,其中任何属性或属性组合的更改都可能触发域事件 - 并随后启动自定义流程或通知。
因此,我犹豫是否要向域层添加大量代码,这些代码会启动大量 DomainEvent 对象,这对许多租户来说可能没有意义。
每个租户将有能力(通过 UI 屏幕): 1. 定义他们关心的属性(例如“金额”)以及原因(例如金额现在大于 100 美元) 2. 定义当他们改变时会发生什么(例如踢关闭审批程序)
对我来说,这似乎是一个业务规则引擎集成以及一个 BPMS。有人对更轻量级的框架或解决方案有想法吗?
domain-driven-design - 聚合可以成为领域事件的一部分吗?
考虑具有许多属性的聚合。例如用户组。如果我想发布一个 UserGroupCreatedEvent 我可以做两件事:
将刚刚创建的 UserGroup 中的属性复制到 UserGroupCreatedEvent 并复制它们的值。或者:
在 UserGroupCreatedEvent 中引用新的 UserGroup
在许多示例中,例如 Axon 的联系人应用程序,我看到了属性重复。我想知道为什么,如果在现实世界的 CQRS 应用程序中,这不是很多开销,开发人员选择引用聚合来代替。
domain-driven-design - DDD 中本地消费的领域事件
我最近熟悉了 DDD 并试图掌握关键概念,并且我有一个查询是否要为本地订阅者发布域事件,所以我可以假设事件发布者通过 AQMP 负责向远程订阅者发布同时还利用 observable 将其发布给本地订阅者,这是一个可扩展的解决方案吗?还是有一个熟悉的模式来处理这个?(如果有prblm的反应解决方案,可能是RxJava或类似的)
java - DDD - 领域事件存储和发布的架构
我正在为我们的应用程序实现域事件框架,下面是相同的伪代码,想知道是否有任何明显的警告
该框架将设计为 2 步,以便持久化领域事件(以便稍后重建模型状态以防万一,或者我们可能会添加一个报告系统)和发布基础设施
存储
出版
这是我根据一些研究可以想出的最简单的方法,只是不想忽略任何东西。
持久性将是连接池 Postgres,如前所述,RabbitMQ 将是消息传递基础。
c# - DDD 通用与特定领域事件
我正在研究领域事件,特别是两种可能性:
A. 使用这样的“通用”事件:
然后消费者会找出新的状态并做一些事情。由于我使用的是 Rx,所以这并不难(并且比开关/外壳更好):
B. 使用特定事件:
这将导致更多的事件类,一方面可能会太多,另一方面事件类名称包含语言,这可能是一个加分点。
你有什么建议?我对领域事件没有经验,也无法在这里真正做出合格的决定(两者似乎都没有任何重大缺点)
domain-driven-design - 每个对象都应该在 DDD 中建模为聚合、实体还是值对象?
我在社交网络网站的设计中使用 DDD(包括域事件)和 CQRS(没有事件溯源)。
我有聚合根,如User
, FriendRequest
, Friendship
。我也有像UserAddressChanged
,之类的领域事件FriendRequestAccepted
。其中一些事件需要通知相关用户。所以我正在考虑Notification
上课,比如:
但是我应该将Notification
类建模为聚合根吗?如果是,则当User
聚合更改地址并引发UserAddressChanged
域事件时,在相应的事件处理程序中,Notification
将创建一个新聚合并随后通过NotificationRepository
. 但是在事件处理程序中创建新的聚合对我来说听起来很可疑。
同时,我也觉得对于一个简单的类来说太重了Notification
。我无法确定通知是域问题还是基础设施问题。
php - 领域事件如何获得额外的数据?
我正在使用 DDD 构建电子商务系统。在这个系统中,我有两个有界上下文:Identity & Access
和Sales
.
客户可以通过填写姓名、电子邮件和密码的表格进行注册。然后在Sales
上下文中,我注册了一个客户:
Customer
聚合引发事件CustomerWasRegistered
。
上下文对此Identity & Access
事件做出反应并SystemUser
为该客户创建一个聚合:
我的问题:因为Customer
聚合不知道密码(也不知道CustomerWasRegistered
事件)。如何从请求到Identity & Access
上下文中获取此密码?
domain-driven-design - 如果域事件失败了怎么办?
我是 DDD 的新手。现在我正在查看域事件。我不确定我是否正确理解了这个领域事件,但我只是在想如果发布的领域事件失败会发生什么?
我这里有个案子。当买家从我的网站订购东西时,首先我们将创建一个对象,Order with line of items。将发布域事件 OrderWasMade 以扣除 Inventory 中的库存。那么情况就是这样,如果在处理事件时,会扣除商品数量,但如果系统尝试扣除库存时,发现该商品没有剩余库存怎么办(金额= 0) . 因此,无法扣除项目金额,但订单已提交。
这种情况会发生吗?
很抱歉在这里挤进了另外两个问题。
似乎每个事件都在自己的事务范围内,这意味着系统需要一次打开多个到数据库的连接。因此,如果我使用 IIS 服务器,我必须启用 DTC,对吗?
领域事件和领域服务之间有什么关系吗?