Solon v3.4.0

statefulflow - 手动与自动组合

</> markdown

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

  • BlockStateController,阻塞状态控制器(所有节点有权操作,类似超级管理员)
  • ActorStateController,参与者状态控制器(节点元数据匹配参与者后有权操作,没有配置的会自动前进)

默认情况:

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

示例

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

@Configuration
public class DemoCom {
    @Bean
    public FlowEngine flowEngine() {
        return FlowEngine.newInstance(StatefulSimpleFlowDriver.builder()
                .stateController(new BlockStateController() { //节点可配置自动前进
                    @Override
                    public boolean isAutoForward(FlowContext context, Node node) {
                        return super.isAutoForward(context, node) || 
                                node.getMetaOrDefault("autoForward", false);
                    }
                })
                .stateRepository(new InMemoryStateRepository())
                .build());
    }
}