Solon v3.8.3

workflow - StateController 状态控制

</> markdown
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;
    }
}