我需要相同的SM来提供来自同一个db-table的各种记录(不能为每个记录创建SM)。这是否是从另一条记录中重新初始化SM的新方式,或者您能建议更好的方法吗?
public static <S, E> void reinitStateMachine(Integer key, IStateMachineEnabledService sees, StateMachine<S, E> stateMachine, Class<? extends Enum> statesClazz) {
String dbReadState;
try {
dbReadState = sees.findStateById(key);
} catch (Exception e) {
throw new MissingResourceException("Error while trying to load record with state, no record found: "+key+". Extra info:"+e.getMessage(),sees.toString(),String.valueOf(key));
}
S currentState = (S) Enum.valueOf(statesClazz, dbReadState);
stateMachine.stop();
((AbstractStateMachine<S, E>) stateMachine).resetStateMachine(new DefaultStateMachineContext<S, E>(currentState, null, null, null));
stateMachine.start();
}
谢谢!
PS:我知道1.1.0中的持久化和恢复接口,但是持久化SMContext仅适用于字符串状态机,而我使用枚举。