Solon v3.7.3

statefulflow - 手动与自动组合

</> markdown
2025年12月5日 上午11:52:00

StateController 接口,状态控制器接口。提供状态控制(是否可操作,是否自动前进)。内置的实现有:

  • ActorStateController,参与者状态控制器(节点元数据匹配参与者后有权操作,没有配置的会自动前进)
  • BlockStateController,阻塞状态控制器(所有节点有权操作,类似超级管理员)
  • NotBlockStateController,不阻塞状态控制器(所有节点自动前进,除非在任务内中断或停止)

默认情况:

状态控制器手动提交前进自动前进
ActorStateController有 actor 配置时无 actor 配置时
BlockStateController所有节点需要重写方法(+配置)
NotBlockStateController需要重写方法(+配置)所有节点

示例(自动前进+手动前进组合)

BlockStateController 默认所有节点需要手动操作前进。可以通过重写方法。比如,当 meta.autoForward 为 true 的自动前进:

@Configuration
public class DemoCom {
    //构建状态控制器
    @Bean
    public StateController stateController() {
        return new BlockStateController() { //节点可配置自动前进
                    @Override
                    public boolean isAutoForward(FlowContext context, Node node) {
                        return super.isAutoForward(context, node) || 
                                node.getMetaOrDefault("autoForward", false);
                    }
                };
    }
    
    //构建状态仓库(持久化状态)
    @Bean
    public StateRepository stateRepository() {
        return new InMemoryStateRepository();
    }
}