#关于使用状态机中的问题
#如下支付订单时,我想根据数据库中订单的状态,把当前的状态机stateMachine的状态更改为和数据库状态一直,然后执行操作,这样就省去了
if(order.getStatus()!=States.UNPAID.getValue()){
throw new RuntimeException("当前状态不支持付款");
}else{
stateMachine.start();
}
这段if-else的代码判断,请问我的思路是否正确,如果不正确那么状态机的状态判断如何和数据库流程
/**
* 支付订单
* @param order
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void payOrder(GoodOrder order) {
/**
* 当为条件判断,如果可以正常执行,则再处理对应的业务逻辑,否则不做数据库处理
*/
if(order.getStatus()!=States.UNPAID.getValue()){
throw new RuntimeException("当前状态不支持付款");
}else{
stateMachine.start();
}
boolean b = stateMachine.sendEvent(Events.PAY);
if (!b) {
throw new RuntimeException("支付异常");
}
/**
* 执行数据库操作
*/
System.out.println("执行数据库操作:修改当前状态为:"+stateMachine.getState().getId());
}