主要观点:
- 反对“软删除”,认为应关注业务场景和用户意图,而非仅依赖数据库的 IsDeleted 列。
- 以营销部门删除商品为例,指出实际业务中不应简单地删除相关订单、发票等,而应根据具体业务规则处理,如产品停产、订单取消等。
- 强调应建模任务而非数据,关注用户希望执行的任务,而不是对单个实体的技术操作,多个实体需同时考虑。
- 提到状态的重要性,用相关业务状态替代技术上的“删除”,不同用户在不同时间需看到不同状态。
- 规则和验证更为复杂,决定实体的下一步状态需考虑当前业务状态和上下文,可能涉及多个实体的检查和状态更改。
关键信息:
- 2009 年 9 月 1 日周二,读完 Ayende 关于反对“软删除”的文章后,作者认为应补充业务语义方面的内容。
- 营销部门删除商品不应导致相关订单和发票消失,需考虑多个业务方面。
- 用户常以“删除”表达需求,但实际意图可能是停产等,应提供更明确的用户界面表示。
- 各种业务场景中,应关注任务而非数据,如订单取消、员工解雇、工作填充等。
- 用明确的业务状态替代隐藏的技术“删除”状态,不同用户在不同时间看到不同状态。
- 规则和验证更复杂,决定实体状态需考虑多方面,可能涉及多个实体。
重要细节:
- 以营销部门删除商品为例,详细阐述了可能涉及的多个业务方面及不应简单删除的原因。
- 列举了多个不同业务场景下的具体例子,如订单、员工、工作等的处理方式。
- 介绍了 Udi Dahan 受到多位业内人士的高度推荐,其在 SOA 等领域有深入的理解和卓越的贡献,能帮助解决复杂的架构问题等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。