我有以下情况。
预订,此预订被取消,可以重新创建,可以确认可以拒绝。
可能有不同的取消原因。可以说预订已过期,或者在一定时限或其他原因下可能尚未处理。
为了确认预订,应执行多个子事务。这意味着确认本身中存在一个流程。我的团队提供的解决方案是一种具有许多不同状态的工作表。没关系我感到需要通过声明一个字段ReservationStatus来唯一标识保留状态,该字段描述了表中已定义的某些状态变化。在这种情况下,预留状态将为NEW,CONFIRMED,CANCELED,REJECTED。每个状态将在工作表中描述状态的某些变化。
我的团队确信这会增加额外的复杂性。我认为这与简化流程相反。它还声明了自然的区分和多态性。我们应该使用队列和异步进程。
我实际上如何确定我们应该有这样的专栏,以取代我已经提到的论点还不够,并且深入我的内心,我知道我是对的:)?
答案 0 :(得分:2)
想将此作为评论,但发表时间太长了,所以就可以了。
@AlexandarPetrov我要添加以下问题:
我将公开状态字段,但前提是状态字段本身足够具体以定义状态。例如我已经看到了两层状态-状态和子状态的情况。在这样的情况下,边界会丢失,状态变成复杂的VO而不是简单的字段,并且状态转换规则可能变得模糊。
此外: 对我来说,事件搜寻和CQRS似乎很适合所有这些预定。特别要记住您提到的复杂流程。然后过渡将是应用的事件和状态-公开状态的一种简单方法。由于事件流可保存所有历史数据,因此也无需单独跟踪状态更改。
最后:
我实际上如何确定我们应该有这样的专栏,以取代我已经提到的论点还不够,并且深入我的内心,我知道我是对的:)?
最后,您始终可以放下脚步并承担责任。如果事实证明是错误的及时决定,则要承担责任并承认错误。