statefulflow - 有状态的流上下文(定制)
有状态的流上下文定制,有两种方式
1、使用 StatefulFlowContext 进行组合
构建时,组合:实例ID(instanceId),状态控制器(stateController),状态仓库(stateRepository)
构建参数 | 描述 |
---|---|
instanceId | 实例ID,标识一个流程的运行实例 |
stateController | 状态控制器,用于检测是否有权操作、是否要可以前进 |
stateRepository | 状态仓库,用于持久化流程实例的节点状态 |
构建方式:
FlowContext context = FlowContext.of("i1", stateController, stateRepository)
2、定制专属流上下文
StatefulFlowContext 作为一个内置组件,需要把可变接口外放,所以才有的 stateController,stateRepository 。定制的专属流上下文,只需要实现 StatefulSupporter 接口即可。
预期构建方式:
FlowContext context = new ApprovalFlowContext("i1")
定制示例:
public class ApprovalFlowContext extends AbstractFlowContext implements FlowContext, StatefulSupporter {
private final String instanceId;
public ApprovalFlowContext(String instanceId){
super(instanceId);
this.instanceId = instanceId;
}
@Override
public boolean isStateful() {
return true;
}
@Override
public StatefulSupporter statefulSupporter() {
return this;
}
@Override
public boolean isOperatable(Node node) {
return false;
}
@Override
public boolean isAutoForward(Node node) {
return StatefulSupporter.super.isAutoForward(node);
}
@Override
public StateType stateGet(Node node) {
return null;
}
@Override
public void statePut(Node node, StateType state) {
}
@Override
public void stateRemove(Node node) {
}
@Override
public void stateClear() {
}
}