feat: 3.1.0

1. 修复工作流节点排序问题
This commit is contained in:
byteblogs168 2024-02-03 09:18:50 +08:00
parent e7f37e4fd5
commit 71438543f6

View File

@ -49,6 +49,8 @@ import com.aizuda.easy.retry.template.datasource.persistence.po.WorkflowNode;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
import com.google.common.collect.Lists;
import com.google.common.graph.ElementOrder;
import com.google.common.graph.Graph;
import com.google.common.graph.GraphBuilder;
import com.google.common.graph.MutableGraph;
import lombok.RequiredArgsConstructor;
@ -85,7 +87,8 @@ public class WorkflowServiceImpl implements WorkflowService {
@Transactional
public boolean saveWorkflow(WorkflowRequestVO workflowRequestVO) {
log.info("保存工作流信息:{}", JsonUtil.toJsonString(workflowRequestVO));
MutableGraph<Long> graph = GraphBuilder.directed().allowsSelfLoops(false).build();
MutableGraph<Long> graph = createGraph();
// 添加虚拟头节点
graph.addNode(SystemConstants.ROOT);
@ -118,6 +121,17 @@ public class WorkflowServiceImpl implements WorkflowService {
return true;
}
private MutableGraph<Long> createGraph() {
return GraphBuilder.directed().nodeOrder(ElementOrder.sorted((Comparator<Long>) (o1, o2) -> {
if (o1 - o2 > 0) {
return 1;
} else if (o1 - o2 < 0) {
return -1;
} else {
return 0;
}
})).incidentEdgeOrder(ElementOrder.stable()).allowsSelfLoops(false).build();
}
private static Long calculateNextTriggerAt(final WorkflowRequestVO workflowRequestVO, Long time) {
checkExecuteInterval(workflowRequestVO);
@ -231,7 +245,8 @@ public class WorkflowServiceImpl implements WorkflowService {
Workflow workflow = workflowMapper.selectById(workflowRequestVO.getId());
Assert.notNull(workflow, () -> new EasyRetryServerException("工作流不存在"));
MutableGraph<Long> graph = GraphBuilder.directed().allowsSelfLoops(false).build();
MutableGraph<Long> graph = createGraph();
// 添加虚拟头节点
graph.addNode(SystemConstants.ROOT);