statefulflow - 手动与自动组合
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());
}
}