Solon v3.5.0

statefulflow - 有状态的流上下文(定制)

</> markdown

有状态的流上下文定制,有两种方式

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() {

    }
}