状态机是交易系统的神经系统。 它决定了:订单现在在哪,能去哪,不能去哪。 设计好状态机,非法的业务逻辑就无法执行。


一、状态机的设计哲学

在第一章,我们提到了一个判断标准:

交易域只记录"推动交易合同从一个履行步骤走向下一个履行步骤"的关键状态。

这句话,直接指导了状态机的设计原则:

原则 1:状态数量要克制

交易状态机不应该是一个反映"所有业务系统当前情况"的大杂烩。物流状态(配货中、揽件中、运输中、派送中)属于履约域,不属于交易域。交易域只需要知道"已发货"这一个履约事实,其余的物流细节不需要感知。

原则 2:状态语义要清晰

每个状态,代表一个清晰的业务语义,而不是系统内部的技术阶段。

比如,"CLOSED"和"CANCELLED"都是终态,但语义完全不同:

这两个状态对结算的影响截然不同,必须区分。

原则 3:状态只能前进,不能后退

这是状态机最重要的约束。一旦订单进入某个状态,它只能推进到后续状态,不能回退。

这个约束的意义:状态是已发生事实的记录,事实不能被"撤销"。已付款的事实不能被"取消"(只能通过退款流程来处理),已发货的事实不能被"回退"(只能通过退货流程来处理)。


二、完整状态集

2.1 主订单状态