This is an automated email from the ASF dual-hosted git repository.

wenjun pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git


The following commit(s) were added to refs/heads/dev by this push:
     new f56a311849 [Fix-16567] Unable to delete copied nodes in unsaved 
workflow (#16576)
f56a311849 is described below

commit f56a311849af805801f359f6f7bb29003b3261be
Author: xxt <[email protected]>
AuthorDate: Tue Sep 24 09:37:58 2024 +0800

    [Fix-16567] Unable to delete copied nodes in unsaved workflow (#16576)
    
    1. Fix the handling logic for when the backend API returns an empty array
    2. If the dependent Lineage Task List is empty, no further query is required
---
 .../service/impl/WorkflowLineageServiceImpl.java   |   5 +-
 .../components/dependencies/use-dependencies.ts    | 114 +++++++++++++--------
 2 files changed, 73 insertions(+), 46 deletions(-)

diff --git 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/WorkflowLineageServiceImpl.java
 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/WorkflowLineageServiceImpl.java
index c32be6a061..4f4f6b4c05 100644
--- 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/WorkflowLineageServiceImpl.java
+++ 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/WorkflowLineageServiceImpl.java
@@ -260,16 +260,19 @@ public class WorkflowLineageServiceImpl extends 
BaseServiceImpl implements Workf
         if (project == null) {
             throw new ServiceException(Status.PROJECT_NOT_FOUND, projectCode);
         }
+        List<DependentLineageTask> dependentLineageTaskList = new 
ArrayList<>();
         List<WorkflowTaskLineage> workflowTaskLineageList =
                 workflowTaskLineageDao.queryWorkFlowLineageByDept(projectCode,
                         workflowDefinitionCode, taskCode == null ? 0 : 
taskCode);
+        if (workflowTaskLineageList.isEmpty()) {
+            return dependentLineageTaskList;
+        }
         List<WorkflowDefinition> workflowDefinitionList =
                 
workflowDefinitionMapper.queryByCodes(workflowTaskLineageList.stream()
                         
.map(WorkflowTaskLineage::getWorkflowDefinitionCode).distinct().collect(Collectors.toList()));
         List<TaskDefinition> taskDefinitionList = 
taskDefinitionMapper.queryByCodeList(workflowTaskLineageList.stream()
                 .map(WorkflowTaskLineage::getTaskDefinitionCode).filter(code 
-> code != 0).distinct()
                 .collect(Collectors.toList()));
-        List<DependentLineageTask> dependentLineageTaskList = new 
ArrayList<>();
         for (WorkflowTaskLineage workflowTaskLineage : 
workflowTaskLineageList) {
             DependentLineageTask dependentLineageTask = new 
DependentLineageTask();
             taskDefinitionList.stream()
diff --git 
a/dolphinscheduler-ui/src/views/projects/components/dependencies/use-dependencies.ts
 
b/dolphinscheduler-ui/src/views/projects/components/dependencies/use-dependencies.ts
index a16a3c00f3..4db5136bda 100644
--- 
a/dolphinscheduler-ui/src/views/projects/components/dependencies/use-dependencies.ts
+++ 
b/dolphinscheduler-ui/src/views/projects/components/dependencies/use-dependencies.ts
@@ -30,14 +30,21 @@ export function useDependencies() {
         workFlowCode: workflowCode,
         taskCode: taskCode
       } as DependentTaskReq
-      const res = await queryDependentTasks(projectCode, dependentTaskReq)
-      res
-        .filter((item: any) => item.workflowDefinitionCode !== workflowCode)
-        .forEach((item: any) => {
-          tasks.push(
-            item.workflowDefinitionName + '->' + item.taskDefinitionName
-          )
-        })
+      await queryDependentTasks(projectCode, dependentTaskReq).then(
+        (res: any) => {
+          if (res?.data?.length > 0) {
+            res.data
+              .filter(
+                (item: any) => item.workflowDefinitionCode !== workflowCode
+              )
+              .forEach((item: any) => {
+                tasks.push(
+                  item.workflowDefinitionName + '->' + item.taskDefinitionName
+                )
+              })
+          }
+        }
+      )
     }
     return tasks
   }
@@ -51,14 +58,21 @@ export function useDependencies() {
       const dependentTaskReq = {
         workFlowCode: workflowCode
       } as DependentTaskReq
-      const res = await queryDependentTasks(projectCode, dependentTaskReq)
-      res
-        .filter((item: any) => item.workflowDefinitionCode !== workflowCode)
-        .forEach((item: any) => {
-          tasks.push(
-            item.workflowDefinitionName + '->' + item.taskDefinitionName
-          )
-        })
+      await queryDependentTasks(projectCode, dependentTaskReq).then(
+        (res: any) => {
+          if (res?.data?.length > 0) {
+            res.data
+              .filter(
+                (item: any) => item.workflowDefinitionCode !== workflowCode
+              )
+              .forEach((item: any) => {
+                tasks.push(
+                  item.workflowDefinitionName + '->' + item.taskDefinitionName
+                )
+              })
+          }
+        }
+      )
     }
     return tasks
   }
@@ -110,25 +124,29 @@ export function useDependencies() {
     if (workflowCode && projectCode) {
       await queryDependentTasks(projectCode, dependentTaskReq).then(
         (res: any) => {
-          res.data
-            .filter((item: any) => {
-              if (item.workflowDefinitionCode) {
-                return item.workflowDefinitionCode !== workflowCode
-              } else {
-                return false
-              }
-            })
-            .forEach((item: any) => {
-              dependentTaskLinks.push({
-                text:
-                  item.workflowDefinitionName + '->' + item.taskDefinitionName,
-                show: true,
-                action: () => {
-                  const url = 
`/projects/${item.projectCode}/workflow/definitions/${item.workflowDefinitionCode}`
-                  window.open(url, '_blank')
+          if (res?.data?.length > 0) {
+            res.data
+              .filter((item: any) => {
+                if (item.workflowDefinitionCode) {
+                  return item.workflowDefinitionCode !== workflowCode
+                } else {
+                  return false
                 }
               })
-            })
+              .forEach((item: any) => {
+                dependentTaskLinks.push({
+                  text:
+                    item.workflowDefinitionName +
+                    '->' +
+                    item.taskDefinitionName,
+                  show: true,
+                  action: () => {
+                    const url = 
`/projects/${item.projectCode}/workflow/definitions/${item.workflowDefinitionCode}`
+                    window.open(url, '_blank')
+                  }
+                })
+              })
+          }
         }
       )
     }
@@ -148,19 +166,25 @@ export function useDependencies() {
     if (workflowCode && projectCode) {
       await queryDependentTasks(projectCode, dependentTaskReq).then(
         (res: any) => {
-          res
-            .filter((item: any) => item.workflowDefinitionCode !== 
workflowCode)
-            .forEach((item: any) => {
-              dependentTaskLinks.push({
-                text:
-                  item.workflowDefinitionName + '->' + item.taskDefinitionName,
-                show: true,
-                action: () => {
-                  const url = 
`/projects/${item.projectCode}/workflow/definitions/${item.workflowDefinitionCode}`
-                  window.open(url, '_blank')
-                }
+          if (res?.data?.length > 0) {
+            res.data
+              .filter(
+                (item: any) => item.workflowDefinitionCode !== workflowCode
+              )
+              .forEach((item: any) => {
+                dependentTaskLinks.push({
+                  text:
+                    item.workflowDefinitionName +
+                    '->' +
+                    item.taskDefinitionName,
+                  show: true,
+                  action: () => {
+                    const url = 
`/projects/${item.projectCode}/workflow/definitions/${item.workflowDefinitionCode}`
+                    window.open(url, '_blank')
+                  }
+                })
               })
-            })
+          }
         }
       )
     }

Reply via email to