鉴别器字段和数据建模

时间:2018-10-29 11:34:51

标签: oop design-patterns model domain-driven-design

我有以下情况。

预订,此预订被取消,可以重新创建,可以确认可以拒绝。

可能有不同的取消原因。可以说预订已过期,或者在一定时限或其他原因下可能尚未处理。

为了确认预订,应执行多个子事务。这意味着确认本身中存在一个流程。我的团队提供的解决方案是一种具有许多不同状态的工作表。没关系我感到需要通过声明一个字段ReservationStatus来唯一标识保留状态,该字段描述了表中已定义的某些状态变化。在这种情况下,预留状态将为NEW,CONFIRMED,CANCELED,REJECTED。每个状态将在工作表中描述状态的某些变化。

我的团队确信这会增加额外的复杂性。我认为这与简化流程相反。它还声明了自然的区分和多态性。我们应该使用队列和异步进程。

我实际上如何确定我们应该有这样的专栏,以取代我已经提到的论点还不够,并且深入我的内心,我知道我是对的:)?

1 个答案:

答案 0 :(得分:2)

想将此作为评论,但发表时间太长了,所以就可以了。

@AlexandarPetrov我要添加以下问题:

  • 所有状态都具体代表预订可能拥有的每个州吗?
  • 所有状态迁移路径是否都有明确的规则?例如已过期->已确认,依此类推。
  • 您需要对状态变化进行建模吗?这是一个有限状态机吗?

我将公开状态字段,但前提是状态字段本身足够具体以定义状态。例如我已经看到了两层状态-状态和子状态的情况。在这样的情况下,边界会丢失,状态变成复杂的VO而不是简单的字段,并且状态转换规则可能变得模糊。

此外: 对我来说,事件搜寻和CQRS似乎很适合所有这些预定。特别要记住您提到的复杂流程。然后过渡将是应用的事件和状态-公开状态的一种简单方法。由于事件流可保存所有历史数据,因此也无需单独跟踪状态更改。

最后:

  

我实际上如何确定我们应该有这样的专栏,以取代我已经提到的论点还不够,并且深入我的内心,我知道我是对的:)?

最后,您始终可以放下脚步并承担责任。如果事实证明是错误的及时决定,则要承担责任并承认错误。