从数据库中获取弹簧状态机

时间:2017-10-30 21:47:31

标签: spring-boot spring-statemachine

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

其次,我对弹簧状态机提供的persist功能感到有些困惑。是否根据导致某些状态转换的用户执行哪些操作来保留历史/活动日志信息?或者它是状态机的一些内部状态,有助于重新加载它。如果我想在数据库中使用这样的活动日志,那么spring-state-machine框架是否提供了存储该数据的功能?

1 个答案:

答案 0 :(得分:0)

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

您可以从该表中读取数据,对其进行循环并以“非流畅”的方式构建转换。我没有尝试过,但这是一个想法。