我们如何在域模型中处理删除的不同含义

问题描述 投票:1回答:1

我有两个与Udi Dahan的文章有关的问题:Don’t Delete – Just Don’t

  • 有时我们确实需要删除,用户(领域专家)请求错误数据的delete功能(真正意义),说HR用户有一个表单添加员工,他插入错误的员工数据,他想删除这些数据,它是尚未在商业中使用,它与Retire or Fire an employee完全不同。如何处理这两个案例的实施?
  • 如何使UI更具代表性?使用两个按钮一个只有我们可以DELETE员工和另一个如果我们想要RETIRE员工?
oop design-patterns domain-driven-design cascading-deletes ddd-service
1个回答
2
投票

如果企业想要这个功能,如果他们说出这个词,那么这意味着他们是普遍存在的语言的一部分。在这种情况下,您可以添加删除命令。但是,建议使意图更清楚;你可以将命令命名为deleteUserBecauseOfInvalidRegistration左右。在这种情况下,delete命令是域模型的一部分;这意味着您可以根据其他属性轻松限制用户的删除;例如,如果用户已经由HR经理批准,则不能再删除用户。然后,如果不允许操作,则UI可以通过隐藏删除按钮来轻松地反映此行为。

另一种选择是,当业务专家听到IT人员使用“删除”一词而不是来自真实域时,您可能只在管理界面中公开此功能,作为从数据库中删除行的低级命令。然后,管理员界面只能由一些更高级别的人员访问,例如人力资源经理。

© www.soinside.com 2019 - 2024. All rights reserved.