statefulflow - 接口参考
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;
}
主要实现有:StatefulSimpleFlowDriver
3、状态控制器(StateController),可自由定制
public interface StateController {
/**
* 是否可操作的
*/
boolean isOperatable(FlowContext context, Node node);
/**
* 是否自动前进
*/
default boolean isAutoForward(FlowContext context, Node node) {
return node.getType() == NodeType.END;
}
}
主要实现有:ActorStateController, BlockStateController
4、状态仓库(StateRepository),可自由定制
public interface StateRepository {
/**
* 获取状态
*/
StateType getState(FlowContext context, Node node);
/**
* 推入状态
*/
void putState(FlowContext context, Node node, StateType state);
/**
* 移除状态
*/
void removeState(FlowContext context, Node node);
/**
* 清空
*/
void clearState(FlowContext context);
/**
* 活动状态提交时(有些状态不需要推入)
*/
default void onPostActivityState(FlowContext context, Node node, StateType state) {
}
}
主要实现有:InMemoryStateRepository, RedisStateRepository