diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessDefinitionServiceImpl.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessDefinitionServiceImpl.java index 269c488be8..014dce8a98 100644 --- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessDefinitionServiceImpl.java +++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessDefinitionServiceImpl.java @@ -43,8 +43,6 @@ import org.apache.dolphinscheduler.common.enums.WarningType; import org.apache.dolphinscheduler.common.graph.DAG; import org.apache.dolphinscheduler.common.model.TaskNode; import org.apache.dolphinscheduler.common.model.TaskNodeRelation; -import org.apache.dolphinscheduler.common.process.ResourceInfo; -import org.apache.dolphinscheduler.common.task.AbstractParameters; import org.apache.dolphinscheduler.common.thread.Stopper; import org.apache.dolphinscheduler.common.utils.CollectionUtils; import org.apache.dolphinscheduler.common.utils.DateUtils; @@ -53,7 +51,6 @@ import org.apache.dolphinscheduler.common.utils.SnowFlakeUtils; import org.apache.dolphinscheduler.common.utils.SnowFlakeUtils.SnowFlakeException; import org.apache.dolphinscheduler.common.utils.StreamUtils; import org.apache.dolphinscheduler.common.utils.StringUtils; -import org.apache.dolphinscheduler.common.utils.TaskParametersUtils; import org.apache.dolphinscheduler.dao.entity.ProcessData; import org.apache.dolphinscheduler.dao.entity.ProcessDefinition; import org.apache.dolphinscheduler.dao.entity.ProcessDefinitionLog; @@ -80,7 +77,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.HashMap; -import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -218,45 +214,6 @@ public class ProcessDefinitionServiceImpl extends BaseServiceImpl implements Pro } - - /** - * get resource ids - * - * @param processData process data - * @return resource ids - */ - private String getResourceIds(ProcessData processData) { - List tasks = processData.getTasks(); - Set resourceIds = new HashSet<>(); - StringBuilder sb = new StringBuilder(); - if (CollectionUtils.isEmpty(tasks)) { - return sb.toString(); - } - for (TaskNode taskNode : tasks) { - String taskParameter = taskNode.getParams(); - AbstractParameters params = TaskParametersUtils.getParameters(taskNode.getType(), taskParameter); - if (params == null) { - continue; - } - if (CollectionUtils.isNotEmpty(params.getResourceFilesList())) { - Set tempSet = params.getResourceFilesList(). - stream() - .filter(t -> t.getId() != 0) - .map(ResourceInfo::getId) - .collect(Collectors.toSet()); - resourceIds.addAll(tempSet); - } - } - - for (int i : resourceIds) { - if (sb.length() > 0) { - sb.append(","); - } - sb.append(i); - } - return sb.toString(); - } - /** * query process definition list * @@ -278,7 +235,7 @@ public class ProcessDefinitionServiceImpl extends BaseServiceImpl implements Pro List resourceList = processDefinitionMapper.queryAllDefinitionList(project.getCode()); - resourceList.stream().forEach(processDefinition -> { + resourceList.forEach(processDefinition -> { ProcessData processData = processService.genProcessData(processDefinition); processDefinition.setProcessDefinitionJson(JSONUtils.toJsonString(processData)); }); @@ -317,7 +274,7 @@ public class ProcessDefinitionServiceImpl extends BaseServiceImpl implements Pro page, searchVal, userId, project.getCode(), isAdmin(loginUser)); List records = processDefinitionIPage.getRecords(); - records.stream().forEach(processDefinition -> { + records.forEach(processDefinition -> { ProcessData processData = processService.genProcessData(processDefinition); processDefinition.setProcessDefinitionJson(JSONUtils.toJsonString(processData)); }); @@ -1264,7 +1221,7 @@ public class ProcessDefinitionServiceImpl extends BaseServiceImpl implements Pro Project project = projectMapper.selectById(projectId); List resourceList = processDefinitionMapper.queryAllDefinitionList(project.getCode()); - resourceList.stream().forEach(processDefinition -> { + resourceList.forEach(processDefinition -> { ProcessData processData = processService.genProcessData(processDefinition); processDefinition.setProcessDefinitionJson(JSONUtils.toJsonString(processData)); }); @@ -1461,9 +1418,7 @@ public class ProcessDefinitionServiceImpl extends BaseServiceImpl implements Pro } else { ProcessData processData = processService.genProcessData(processDefinition); List taskNodeList = processData.getTasks(); - taskNodeList.stream().forEach(taskNode -> { - taskNode.setCode(0L); - }); + taskNodeList.forEach(taskNode -> taskNode.setCode(0L)); processData.setTasks(taskNodeList); String processDefinitionJson = JSONUtils.toJsonString(processData); return createProcessDefinition( @@ -1757,4 +1712,3 @@ public class ProcessDefinitionServiceImpl extends BaseServiceImpl implements Pro } } - diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ResourcesServiceImpl.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ResourcesServiceImpl.java index f61996223e..704c972eea 100644 --- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ResourcesServiceImpl.java +++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ResourcesServiceImpl.java @@ -695,7 +695,7 @@ public class ResourcesServiceImpl extends BaseServiceImpl implements ResourcesSe // get all resource id of process definitions those is released List> list = processDefinitionMapper.listResources(); - Map> resourceProcessMap = ResourceProcessDefinitionUtils.getResourceProcessDefinitionMap(list); + Map> resourceProcessMap = ResourceProcessDefinitionUtils.getResourceProcessDefinitionMap(list); Set resourceIdSet = resourceProcessMap.keySet(); // get all children of the resource List allChildren = listAllChildren(resource,true); diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/UsersServiceImpl.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/UsersServiceImpl.java index 865f4c329a..72c1c5c71d 100644 --- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/UsersServiceImpl.java +++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/UsersServiceImpl.java @@ -597,7 +597,7 @@ public class UsersServiceImpl extends BaseServiceImpl implements UsersService { // get all resource id of process definitions those is released List> list = processDefinitionMapper.listResourcesByUser(userId); - Map> resourceProcessMap = ResourceProcessDefinitionUtils.getResourceProcessDefinitionMap(list); + Map> resourceProcessMap = ResourceProcessDefinitionUtils.getResourceProcessDefinitionMap(list); Set resourceIdSet = resourceProcessMap.keySet(); resourceIdSet.retainAll(oldAuthorizedResIds); diff --git a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/utils/ResourceProcessDefinitionUtils.java b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/utils/ResourceProcessDefinitionUtils.java index fd0fba9e57..45315791f7 100644 --- a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/utils/ResourceProcessDefinitionUtils.java +++ b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/utils/ResourceProcessDefinitionUtils.java @@ -18,7 +18,12 @@ package org.apache.dolphinscheduler.dao.utils; import org.apache.dolphinscheduler.common.utils.CollectionUtils; -import java.util.*; +import java.util.Arrays; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; import java.util.stream.Collectors; /** @@ -26,35 +31,37 @@ import java.util.stream.Collectors; */ public class ResourceProcessDefinitionUtils { /** - * get resource process map key is resource id,value is the set of process definition - * @param list the map key is process definition id and value is resource_ids - * @return resource process definition map + * get resource process map key is resource id,value is the set of process definition code + * + * @param resourceList the map key is process definition code and value is resource_ids + * @return resource process definition map (resourceId -> processDefinitionCodes) */ - public static Map> getResourceProcessDefinitionMap(List> list) { - Map map = new HashMap<>(); - Map> result = new HashMap<>(); - if (CollectionUtils.isNotEmpty(list)) { - for (Map tempMap : list) { - map.put((Integer) tempMap.get("id"), (String)tempMap.get("resource_ids")); - } - } + public static Map> getResourceProcessDefinitionMap(List> resourceList) { + + // resourceId -> processDefinitionCodes + Map> resourceResult = new HashMap<>(); - for (Map.Entry entry : map.entrySet()) { - Integer mapKey = entry.getKey(); - String[] arr = entry.getValue().split(","); - Set mapValues = Arrays.stream(arr).map(Integer::parseInt).collect(Collectors.toSet()); - for (Integer value : mapValues) { - if (result.containsKey(value)) { - Set set = result.get(value); - set.add(mapKey); - result.put(value, set); - } else { - Set set = new HashSet<>(); - set.add(mapKey); - result.put(value, set); + if (CollectionUtils.isNotEmpty(resourceList)) { + for (Map resourceMap : resourceList) { + Long code = (Long) resourceMap.get("code"); + String[] resourceIds = ((String) resourceMap.get("resource_ids")) + .split(","); + + Set resourceIdSet = Arrays.stream(resourceIds).map(Integer::parseInt).collect(Collectors.toSet()); + for (Integer resourceId : resourceIdSet) { + Set codeSet; + if (resourceResult.containsKey(resourceId)) { + codeSet = resourceResult.get(resourceId); + } else { + codeSet = new HashSet<>(); + } + codeSet.add(code); + resourceResult.put(resourceId, codeSet); } + } } - return result; + + return resourceResult; } } diff --git a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapper.xml b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapper.xml index 6953e9ae61..afafa8221e 100644 --- a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapper.xml +++ b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapper.xml @@ -123,6 +123,7 @@ group by td.user_id,tu.user_name + -