gpt4 book ai didi

spring - 如何在Spring State Machine上检索和找到当前状态?

转载 作者:行者123 更新时间:2023-12-02 13:23:36 25 4
gpt4 key购买 nike

我正在创建一个需要FSM的项目,并且我选择Spring State Machine来帮助我解决问题。我正在使用JPA,并尝试根据从JPA存储库中检索状态的当前状态来启动状态机。我在文档中发现了这种方法:
state machine persist

但是我也对这种方法感到困惑:persisting state machine

我不是要坚持所有状态机配置,而只是根据我的实体状态启动和发送事件。但是在两种情况下,我都不知道如何放置jpa存储库以查找我的当前状态。

现在我正在尝试这种方法:

class StateMachineAdapter<S, E, T> {

lateinit var stateMachineFactory: StateMachineFactory<S, E>

lateinit var persister: StateMachinePersister<S, E, T>

fun stateMachineRestore(contextObject: T): StateMachine<S, E> {
val stateMachine: StateMachine<S, E> = stateMachineFactory.getStateMachine()
return persister.restore(stateMachine, contextObject)
}


fun persist(stateMachine: StateMachine<S, E>, contestation: T) {
persister.persist(stateMachine, contestation)
}

fun create(): StateMachine<S, E> {
val stateMachine: StateMachine<S, E> = stateMachineFactory.getStateMachine()
stateMachine.start()
return stateMachine
}


}

我在Spring文档中找到了这段代码,我认为可以将其替换为JpaRepository:
public void change(int order, String event) {
Order o = jdbcTemplate.queryForObject("select id, state from orders where id = ?", new Object[] { order },
new RowMapper<Order>() {
public Order mapRow(ResultSet rs, int rowNum) throws SQLException {
return new Order(rs.getInt("id"), rs.getString("state"));
}
});
handler.handleEventWithState(MessageBuilder.withPayload(event).setHeader("order", order).build(), o.state);
}

最佳答案

使用现有功能确实很尴尬,因为您可能已经从示例和文档中看到了很多可移动的部分。

我目前正在努力在下一个1.2.8版本中对此问题进行大修,以使持久化变得更容易。如果您愿意使用快照(在1.2.x分支中)直到1.2.8退出,请首先检查新的示例datajpapersist sample。基于与存储配置相同的概念,但在spring-statemachine-data中具有新的persistent类。有关此1.2.8 gh issues的问题。

对此有一些反馈是很好的。

关于spring - 如何在Spring State Machine上检索和找到当前状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47553460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com