public interface SuggestionNodeAdaptor extends InitializingBean {
/**
* 用于适配建议列表tableId查询条件,替换旧的tableId条件或添加新的tableId查询条件
* {@link SuggestionSelectRequest#setWrapper(QueryWrapper)}
*
* @param query 列表查询条件对象
* @param request 列表查询参数对象
* @return 适配成功
*/
boolean completeTableWrapper(QueryWrapper<Suggestion> query, SuggestionSelectRequest request);
/**
* 用以替换启动建议流程时,默认跳转到哪个节点
* {@link SuggestionFlowContext#ofStart(Suggestion, Integer)} }
*
* @return 替换的节点nodeId
*/
default String exchangeStartNextNodeId() {
return null;
}
/**
* 用来向SuggestionFlowNode的values方法添加额外的节点
* {@link SuggestionFlowNode#values()}
*
* @param values 扩展的额外节点
*/
default void extNodeDefinition(List<SuggestionFlowNode> values) {
}
/**
* 用来适配建议序列号生成的时机,介于当前节点和下一个节点之前。比如审核之后,办理之前
*
* @param currentNodeId 当前节点
* @param nextNodeId 接下来要处理的节点
* @return 适配是否成功
*/
default boolean adapterGenSuggestionNumber(String currentNodeId, String nextNodeId) {
return false;
}
/**
* 启动项目时,对默认节点做一些修改
* {@link #afterPropertiesSet()}
*
* @param suggestionFlowNodes 建议所有产口自带的默认节点
*/
default void exchangeDefaultNode(List<SuggestionFlowNode> suggestionFlowNodes) {
}
/**
* 适配建议接下来需要处理的节点,修改节点名称或配置
* {@link FindSuggestionNextNodesLogic}
*
* @param currentNodeId 当前节点
* @param nodeVos 接下来要处理的节点
*/
default void adaptorNextNodeId(String currentNodeId, List<NodeVo> nodeVos) {
}
/**
* 项目启动时,调用exchangeDefaultNode方法,修改建议的默认配置
*/
@Override
default void afterPropertiesSet() {
List<SuggestionFlowNode> defaultNodes = SuggestionFlowNode.defaultFlowNodes();
exchangeDefaultNode(defaultNodes);
}
}