从数据库派生弹簧状态机



是否可以将spring-state-machine的状态、操作和转换的配置信息存储在数据库中?这个想法是在启动时加载该配置数据,并使用该数据创建状态机。这样,我们可以随时修改状态、动作和转换,并重新加载应用程序以修改状态机图。

其次,我对弹簧状态机提供的persist功能有点困惑。是否要保留历史记录/活动日志信息,即哪个用户执行了哪些操作,从而导致某些状态转换?还是状态机的某种内部状态有助于重新加载它。如果我希望数据库中提供此类活动日志,Spring 状态机框架是否提供存储该数据的功能?

从关于 Medium 的文章中,它说要配置状态机

@Override
public void configure(StateMachineTransitionConfigurer<States, Events> transitions) 
throws Exception {
    transitions
   .withExternal()
   .source(States.ORDERED)
   .target(States.ASSEMBLED)
   .event(Events.assemble)
   .and()
   .withExternal()
   .source(States.ASSEMBLED)
   .target(States.DELIVERED)
   .event(Events.deliver)
   .and()
   .withExternal()
   .source(States.DELIVERED)
   .target(States.INVOICED)
   .event(Events.release_invoice)

所以我的想法是,如果你有一个名为 tbl_transitions 的表,其中有列

id | from_state | to_state | event
-----------------------------------
1  | ORDERED    | ASSEMBELED | assemble
2  | ASSEMBLED  | DELIVERED  | deliver
3  | DELIVERED  | INVOICED   | release_invoice

您可以从此表中读取数据,循环访问它并以"不流畅"的方式构建转换。我没有尝试过,但这是一个想法。

相关内容

  • 没有找到相关文章

最新更新