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

时间:2018-09-05 20:17:10

标签: oop design-patterns domain-driven-design cascading-deletes ddd-service

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

  • 有时候我们确实需要删除,用户(领域专家)要求提供delete功能(真实含义)以获取错误的数据,假设HR用户有一个添加员工的表格,并且他插入了错误的员工数据,想要删除此数据,它尚未在业务中使用,它与Retire or Fire an employee完全不同。在执行中如何处理这两种情况?
  • 在这种情况下,如何使UI更具代表性?使用两个按钮一个仅在我们可以DELETE雇员的情况下显示,另一个在我们想RETIRE雇员的情况下显示?

1 个答案:

答案 0 :(得分:2)

如果企业需要此功能,并且他们说这些话,则表示它们是通用语言的一部分。在这种情况下,您可以添加delete命令。但是,建议使意图更明确;您可以将命令命名为deleteUserBecauseOfInvalidRegistration左右。在这种情况下,删除命令是域模型的一部分;这意味着您可以根据其他属性轻松限制用户的删除;例如,如果某位用户已获得人力资源经理的批准,则无法再将其删除。然后,如果不允许该操作,则UI可以通过隐藏删除按钮轻松反映此行为。

另一种选择是,当业务专家听到IT人员使用的“删除”一词,而不是真正的域名时,您可以仅在Admin UI中公开此功能,作为删除行的低级命令从数据库中。然后,只有人力资源经理等高级人员才能访问管理界面。