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