使用不同数据集重新加载和重新启动State Machine的正确方法

时间:2016-07-08 08:57:22

标签: spring-statemachine

我需要相同的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仅适用于字符串状态机,而我使用枚举。

0 个答案:

没有答案