CQRS如何处理用户/陈旧数据的任务

时间:2011-10-12 21:36:44

标签: user-interface cqrs

我知道数据总是陈旧的。

处理工作流任务的方法是什么,例如批准发票。该任务允许用户执行一次。当这由异步服务处理时,它可能需要几秒钟(或更长时间)。与此同时,用户可以再次批准同一发票,因为该任务尚未在数据库中更新。

对此有任何想法都表示赞赏。

1 个答案:

答案 0 :(得分:1)

域模型必须强制实施一致性。写入侧的模型不应该被认为是陈旧的,只有读取侧的投影。

如果未将批准事件预测到读取模型中,则无关紧要。但是,如果用户基于陈旧数据发送无效命令,则域模型需要知道批准已经发生。

您的域的存储库应始终将聚合根置于其lates状态(无论您是使用事件源还是某些基于状态的持久性作为SQL db)。