StateController 接口，状态控制器接口。提供状态控制（是否可操作，是否自动前进）。内置的实现有：

* ActorStateController，参与者状态控制器（节点元数据匹配参与者后有权操作，没有配置的会自动前进）
* BlockStateController，阻塞状态控制器（所有节点有权操作，类似超级管理员）
* NotBlockStateController，不阻塞状态控制器（所有节点自动前进，除非在任务内中断或停止）

默认情况：



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


### 1、StateController 使用示例

```java
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 接口字典（定制参考）


```java
public interface StateController {
    /**
     * 是否可操作的
     */
    boolean isOperatable(FlowContext context, Node node);

    /**
     * 是否自动前进
     */
    default boolean isAutoForward(FlowContext context, Node node) {
        return node.getType() != NodeType.ACTIVITY;
    }
}
```