Solon v3.2.0

statefulflow - 接口参考

</> markdown

1、有状态流引擎(StatefulFlowEngine)

是在 FlowEngine 的基础上,增加了“包装性”的接口。也兼容无状态(通过 context.getInstanceId() 是否为空来区别)。

主要实现有:StatefulFlowEngineDefault

返回数据类型描述
getDriver()StatefulFlowDriver获取驱动器
clearState(context) 清空状态
  • 强制单步前进或后退
返回数据类型描述
stepForward(chainId, context)StatefulNode单步前进
stepForward(chain, context)StatefulNode单步前进
stepBack(chainId, context)StatefulNode单步后退
stepBack(chain, context)StatefulNode单步后退

可以使用 BlockStateController 或 ActorStateController 。

  • 有参与者的活动获取与提交
返回数据类型描述
getActivityNodes(chainId, context)Collection<StatefulNode>获取多个活动节点
getActivityNodes(chain, context)Collection<StatefulNode>获取多个活动节点
getActivityNode(chainId, context)StatefulNode获取当前活动节点
getActivityNode(chain, context)StatefulNode获取当前活动节点
getActivityNode(chain, context)StatefulNode获取当前活动节点
postActivityStateIfWaiting(context, chainId, activityNodeId, state)boolean提交活动状态,并作参与者状态确认
postActivityStateIfWaiting(context, activity, state)boolean提交活动状态,并作参与者状态确认
postActivityState(context, chainId, activityNodeId, state)boolean提交活动状态
postActivityState(context, activity, state)boolean提交活动状态

需要使用 ActorStateController 配套。

@Configuration
public class DemoCom {
    //替换掉默认的引擎实例
    @Bean
    public StatefulFlowEngine flowEngine() {
        return StatefulFlowEngine.newInstance(StatefulSimpleFlowDriver.builder()
                .stateController(new ActorStateController())
                .build());
    }
}

2、有状态流驱动器(StatefulFlowDriver),可自由定制

public interface StatefulFlowDriver extends FlowDriver {
    /**
     * 获取状态仓库
     */
    StateRepository getStateRepository();

    /**
     * 获取状态控制器
     */
    StateController getStateController();

    /**
     * 提交处理任务
     *
     * @param context 流上下文
     * @param task    任务
     */
    void postHandleTask(FlowContext context, Task task) throws Throwable;
}

主要实现有:StatefulSimpleFlowDriverr