![]() |
1
1
因此,首先要做的是与您的领域专家核实,以了解这种无处不在的语言是否具有发票状态在冲销和还款之间的概念。 根据我在这里看到的情况,我希望逆转本身会再次将状态置于账单上。我们认为它已支付,但该条目是一个错误,因此我们会将对象恢复到其以前的状态。
如果这是正确的,那么我们的状态为
但它可能不是--这不是撤销,而是您域内的行为。这可能会将域移动到状态机以前未发现的部分。
这里可能隐藏着两个不同的问题——我将对每个问题进行总结。 如果您担心下游消费者对 事件 ,设计您的消费者时,如果他们需要了解整个历史,那么他们就要从历史中阅读,这一点很重要。对历史记录中的更改作出反应的使用者将从事件存储中读取有序的历史记录,而不是对消息传输中出现的消息作出反应。换句话说,发布的事件就像通知一样,告诉消费者刷新其历史记录副本。 如果你担心如果命令出现错误,你会得到“错误”的历史记录,那么你需要回顾和整合Udi Dahan的文章 Race Conditions Don't Exist
|