第一个是 State ,状态。一个状态机至少要包含两个状态。例如上面自动门的例子,有 open 和 closed 两个状态。
第二个是 Event ,事件。事件就是执行某个操作的触发条件或者口令。对于自动门,“按下开门按钮”就是一个事件。
第三个是 Action ,动作。事件发生以后要执行动作。例如事件是“按开门按钮”,动作是“开门”。编程的时候,一个 Action一般就对应一个函数。
第四个是 Transition ,变换。也就是从一个状态变化为另一个状态。例如“开门过程”就是一个变换。
六种元素:起始、终止、现态、次态(目标状态)、动作、条件
以订单为例:以从待支付状态转换为待发货状态为例
WAIT_PAYMENT(1, “待支付”),
WAIT_DELIVER(2, “待发货”),
WAIT_RECEIVE(3, “待收货”),
FINISH(4, “已完成”);
PAYED, 支付
DELIVERY, 发货
RECEIVED; 确认收货
待支付-》待发货 PAYED
待发货-》待收货 DELIVERY
待收货-》已完成 RECEIVED
/**
- 配置状态
- @param states
- @throws Exception
*/
public void configure(StateMachineStateConfigurer<OrderStatus, OrderStatusChangeEvent> states) throws Exception {
states.withStates()
.initial(OrderStatus.WAIT_PAYMENT) 初始状态
.states(EnumSet.allOf(OrderStatus.class));
}
/**
- 配置状态转换事件关系
- @param transi

文章介绍了状态机的四个基本元素(状态、事件、动作和变换),并以订单流程为例,展示了如何在Java中配置状态机,包括初始状态、状态转换及其触发事件。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



