workflow - StateController 状态控制
2026年1月13日 下午6:56:46
StateController 接口,状态控制器接口。提供状态控制(是否可操作,是否自动前进)。内置的实现有:
- ActorStateController,参与者状态控制器(节点元数据匹配参与者后有权操作,没有配置的会自动前进)
- BlockStateController,阻塞状态控制器(所有节点有权操作,类似超级管理员)
- NotBlockStateController,不阻塞状态控制器(所有节点自动前进,除非在任务内中断或停止)
默认情况:
| 状态控制器 | 手动提交前进 | 自动前进 |
|---|---|---|
| ActorStateController | 有 actor 配置时 | 无 actor 配置时 |
| BlockStateController | 所有节点 | 需要重写方法(+配置) |
| NotBlockStateController | 需要重写方法(+配置) | 所有节点 |
1、StateController 使用示例
WorkflowExecutor work = WorkflowExecutor.of(engine,
new ActorStateController(),
new InMemoryStateRepository());
FlowContext context = FlowContext.of("i1").put("actor", "@admin");
Graph graph = engine.getGraph("g1");
//1. 认领任务
Task task = work.claimTask(graph, context);
//2. 提交任务
work.submitTask(task, TaskAction.FORWARD, context);
2、StateController 接口字典(定制参考)
public interface StateController {
/**
* 是否可操作的
*/
boolean isOperatable(FlowContext context, Node node);
/**
* 是否自动前进
*/
default boolean isAutoForward(FlowContext context, Node node) {
return node.getType() != NodeType.ACTIVITY;
}
}