From 5204ec5e3a4206ccc94223b58b4dd19c9f02ce74 Mon Sep 17 00:00:00 2001 From: Xuxiaotuan Date: Wed, 4 Sep 2024 00:54:59 +0800 Subject: [PATCH 1/5] 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 --- .../impl/WorkflowLineageServiceImpl.java | 5 +- .../dependencies/use-dependencies.ts | 108 ++++++++++-------- 2 files changed, 64 insertions(+), 49 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 4a2ea2ee274a..b81a570d00a9 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 List queryDependentWorkflowDefinitions(long project if (project == null) { throw new ServiceException(Status.PROJECT_NOT_FOUND, projectCode); } + List dependentLineageTaskList = new ArrayList<>(); List workflowTaskLineageList = workflowTaskLineageDao.queryWorkFlowLineageByDept(projectCode, workflowDefinitionCode, taskCode == null ? 0 : taskCode); + if (workflowTaskLineageList.isEmpty()) { + return dependentLineageTaskList; + } List workflowDefinitionList = workflowDefinitionMapper.queryByCodes(workflowTaskLineageList.stream() .map(WorkflowTaskLineage::getWorkflowDefinitionCode).distinct().collect(Collectors.toList())); List taskDefinitionList = taskDefinitionMapper.queryByCodeList(workflowTaskLineageList.stream() .map(WorkflowTaskLineage::getTaskDefinitionCode).filter(code -> code != 0).distinct() .collect(Collectors.toList())); - List 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 9de2bef762b4..efc0356f4aac 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,18 @@ export function useDependencies() { workFlowCode: workflowCode, taskCode: taskCode } as DependentTaskReq - const res = await queryDependentTasks(projectCode, dependentTaskReq) - res - .filter((item: any) => item.processDefinitionCode !== workflowCode) - .forEach((item: any) => { - tasks.push( - item.processDefinitionName + '->' + item.taskDefinitionName - ) - }) + await queryDependentTasks(projectCode, dependentTaskReq) + .then((res: any) => { + if (res?.data?.length > 0) { + res.data + .filter((item: any) => item.processDefinitionCode !== workflowCode) + .forEach((item: any) => { + tasks.push( + item.processDefinitionName + '->' + item.taskDefinitionName + ) + }) + } + }) } return tasks } @@ -51,14 +55,18 @@ export function useDependencies() { const dependentTaskReq = { workFlowCode: workflowCode } as DependentTaskReq - const res = await queryDependentTasks(projectCode, dependentTaskReq) - res - .filter((item: any) => item.processDefinitionCode !== workflowCode) - .forEach((item: any) => { - tasks.push( - item.processDefinitionName + '->' + item.taskDefinitionName - ) - }) + await queryDependentTasks(projectCode, dependentTaskReq) + .then((res: any) => { + if (res?.data?.length > 0) { + res.data + .filter((item: any) => item.processDefinitionCode !== workflowCode) + .forEach((item: any) => { + tasks.push( + item.processDefinitionName + '->' + item.taskDefinitionName + ) + }) + } + }) } return tasks } @@ -110,25 +118,27 @@ export function useDependencies() { if (workflowCode && projectCode) { await queryDependentTasks(projectCode, dependentTaskReq).then( (res: any) => { - res.data - .filter((item: any) => { - if (item.processDefinitionCode) { - return item.processDefinitionCode !== workflowCode - } else { - return false - } - }) - .forEach((item: any) => { - dependentTaskLinks.push({ - text: - item.processDefinitionName + '->' + item.taskDefinitionName, - show: true, - action: () => { - const url = `/projects/${item.projectCode}/workflow/definitions/${item.processDefinitionCode}` - window.open(url, '_blank') - } - }) - }) + if (res?.data?.length > 0) { + res.data + .filter((item: any) => { + if (item.processDefinitionCode) { + return item.processDefinitionCode !== workflowCode + } else { + return false + } + }) + .forEach((item: any) => { + dependentTaskLinks.push({ + text: + item.processDefinitionName + '->' + item.taskDefinitionName, + show: true, + action: () => { + const url = `/projects/${item.projectCode}/workflow/definitions/${item.processDefinitionCode}` + window.open(url, '_blank') + } + }) + }) + } } ) } @@ -148,19 +158,21 @@ export function useDependencies() { if (workflowCode && projectCode) { await queryDependentTasks(projectCode, dependentTaskReq).then( (res: any) => { - res - .filter((item: any) => item.processDefinitionCode !== workflowCode) - .forEach((item: any) => { - dependentTaskLinks.push({ - text: - item.processDefinitionName + '->' + item.taskDefinitionName, - show: true, - action: () => { - const url = `/projects/${item.projectCode}/workflow/definitions/${item.processDefinitionCode}` - window.open(url, '_blank') - } - }) - }) + if (res?.data?.length > 0) { + res.data + .filter((item: any) => item.processDefinitionCode !== workflowCode) + .forEach((item: any) => { + dependentTaskLinks.push({ + text: + item.processDefinitionName + '->' + item.taskDefinitionName, + show: true, + action: () => { + const url = `/projects/${item.projectCode}/workflow/definitions/${item.processDefinitionCode}` + window.open(url, '_blank') + } + }) + }) + } } ) } From f232ae05a5bdaaa7fce055db3c3e1f05544cca03 Mon Sep 17 00:00:00 2001 From: Xuxiaotuan Date: Wed, 4 Sep 2024 16:01:43 +0800 Subject: [PATCH 2/5] `pnpm run lint` to format the code --- .../dependencies/use-dependencies.ts | 110 ++++++++++-------- 1 file changed, 59 insertions(+), 51 deletions(-) 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 efc0356f4aac..115e79e615f2 100644 --- a/dolphinscheduler-ui/src/views/projects/components/dependencies/use-dependencies.ts +++ b/dolphinscheduler-ui/src/views/projects/components/dependencies/use-dependencies.ts @@ -30,18 +30,21 @@ export function useDependencies() { workFlowCode: workflowCode, taskCode: taskCode } as DependentTaskReq - await queryDependentTasks(projectCode, dependentTaskReq) - .then((res: any) => { - if (res?.data?.length > 0) { - res.data - .filter((item: any) => item.processDefinitionCode !== workflowCode) - .forEach((item: any) => { - tasks.push( - item.processDefinitionName + '->' + item.taskDefinitionName - ) - }) - } - }) + await queryDependentTasks(projectCode, dependentTaskReq).then( + (res: any) => { + if (res?.data?.length > 0) { + res.data + .filter( + (item: any) => item.processDefinitionCode !== workflowCode + ) + .forEach((item: any) => { + tasks.push( + item.processDefinitionName + '->' + item.taskDefinitionName + ) + }) + } + } + ) } return tasks } @@ -55,18 +58,21 @@ export function useDependencies() { const dependentTaskReq = { workFlowCode: workflowCode } as DependentTaskReq - await queryDependentTasks(projectCode, dependentTaskReq) - .then((res: any) => { - if (res?.data?.length > 0) { - res.data - .filter((item: any) => item.processDefinitionCode !== workflowCode) - .forEach((item: any) => { - tasks.push( - item.processDefinitionName + '->' + item.taskDefinitionName - ) - }) - } - }) + await queryDependentTasks(projectCode, dependentTaskReq).then( + (res: any) => { + if (res?.data?.length > 0) { + res.data + .filter( + (item: any) => item.processDefinitionCode !== workflowCode + ) + .forEach((item: any) => { + tasks.push( + item.processDefinitionName + '->' + item.taskDefinitionName + ) + }) + } + } + ) } return tasks } @@ -120,24 +126,24 @@ export function useDependencies() { (res: any) => { if (res?.data?.length > 0) { res.data - .filter((item: any) => { - if (item.processDefinitionCode) { - return item.processDefinitionCode !== workflowCode - } else { - return false + .filter((item: any) => { + if (item.processDefinitionCode) { + return item.processDefinitionCode !== workflowCode + } else { + return false + } + }) + .forEach((item: any) => { + dependentTaskLinks.push({ + text: + item.processDefinitionName + '->' + item.taskDefinitionName, + show: true, + action: () => { + const url = `/projects/${item.projectCode}/workflow/definitions/${item.processDefinitionCode}` + window.open(url, '_blank') } }) - .forEach((item: any) => { - dependentTaskLinks.push({ - text: - item.processDefinitionName + '->' + item.taskDefinitionName, - show: true, - action: () => { - const url = `/projects/${item.projectCode}/workflow/definitions/${item.processDefinitionCode}` - window.open(url, '_blank') - } - }) - }) + }) } } ) @@ -160,18 +166,20 @@ export function useDependencies() { (res: any) => { if (res?.data?.length > 0) { res.data - .filter((item: any) => item.processDefinitionCode !== workflowCode) - .forEach((item: any) => { - dependentTaskLinks.push({ - text: - item.processDefinitionName + '->' + item.taskDefinitionName, - show: true, - action: () => { - const url = `/projects/${item.projectCode}/workflow/definitions/${item.processDefinitionCode}` - window.open(url, '_blank') - } - }) + .filter( + (item: any) => item.processDefinitionCode !== workflowCode + ) + .forEach((item: any) => { + dependentTaskLinks.push({ + text: + item.processDefinitionName + '->' + item.taskDefinitionName, + show: true, + action: () => { + const url = `/projects/${item.projectCode}/workflow/definitions/${item.processDefinitionCode}` + window.open(url, '_blank') + } }) + }) } } ) From 58a08b682c114d5617988c6db877dec3633ae145 Mon Sep 17 00:00:00 2001 From: xxt Date: Thu, 5 Sep 2024 10:36:22 +0800 Subject: [PATCH 3/5] Update dolphinscheduler-ui/src/views/projects/components/dependencies/use-dependencies.ts fix Co-authored-by: xiangzihao --- .../projects/components/dependencies/use-dependencies.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 115e79e615f2..53a09e0de3ac 100644 --- a/dolphinscheduler-ui/src/views/projects/components/dependencies/use-dependencies.ts +++ b/dolphinscheduler-ui/src/views/projects/components/dependencies/use-dependencies.ts @@ -35,11 +35,11 @@ export function useDependencies() { if (res?.data?.length > 0) { res.data .filter( - (item: any) => item.processDefinitionCode !== workflowCode + (item: any) => item.workflowDefinitionCode !== workflowCode ) .forEach((item: any) => { tasks.push( - item.processDefinitionName + '->' + item.taskDefinitionName + item.workflowDefinitionName + '->' + item.taskDefinitionName ) }) } From d747b14d099515973d93e00a5517df2937691666 Mon Sep 17 00:00:00 2001 From: Xuxiaotuan Date: Tue, 17 Sep 2024 21:42:27 +0800 Subject: [PATCH 4/5] =?UTF-8?q?fix:=20replace=20processDefinitionCode?= =?UTF-8?q?=E3=80=81processDefinitionName=20to=20workflowDefinitionCode?= =?UTF-8?q?=E3=80=81workflowDefinitionName?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dependencies/use-dependencies.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) 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 53a09e0de3ac..96ba63867041 100644 --- a/dolphinscheduler-ui/src/views/projects/components/dependencies/use-dependencies.ts +++ b/dolphinscheduler-ui/src/views/projects/components/dependencies/use-dependencies.ts @@ -63,11 +63,11 @@ export function useDependencies() { if (res?.data?.length > 0) { res.data .filter( - (item: any) => item.processDefinitionCode !== workflowCode + (item: any) => item.workflowDefinitionCode !== workflowCode ) .forEach((item: any) => { tasks.push( - item.processDefinitionName + '->' + item.taskDefinitionName + item.workflowDefinitionName + '->' + item.taskDefinitionName ) }) } @@ -127,8 +127,8 @@ export function useDependencies() { if (res?.data?.length > 0) { res.data .filter((item: any) => { - if (item.processDefinitionCode) { - return item.processDefinitionCode !== workflowCode + if (item.workflowDefinitionCode) { + return item.workflowDefinitionCode !== workflowCode } else { return false } @@ -136,10 +136,10 @@ export function useDependencies() { .forEach((item: any) => { dependentTaskLinks.push({ text: - item.processDefinitionName + '->' + item.taskDefinitionName, + item.workflowDefinitionName + '->' + item.taskDefinitionName, show: true, action: () => { - const url = `/projects/${item.projectCode}/workflow/definitions/${item.processDefinitionCode}` + const url = `/projects/${item.projectCode}/workflow/definitions/${item.workflowDefinitionCode}` window.open(url, '_blank') } }) @@ -167,15 +167,15 @@ export function useDependencies() { if (res?.data?.length > 0) { res.data .filter( - (item: any) => item.processDefinitionCode !== workflowCode + (item: any) => item.workflowDefinitionCode !== workflowCode ) .forEach((item: any) => { dependentTaskLinks.push({ text: - item.processDefinitionName + '->' + item.taskDefinitionName, + item.workflowDefinitionName + '->' + item.taskDefinitionName, show: true, action: () => { - const url = `/projects/${item.projectCode}/workflow/definitions/${item.processDefinitionCode}` + const url = `/projects/${item.projectCode}/workflow/definitions/${item.workflowDefinitionCode}` window.open(url, '_blank') } }) From 6d2c77e90e144244b63a773435802ca942b409ee Mon Sep 17 00:00:00 2001 From: Xuxiaotuan Date: Thu, 19 Sep 2024 14:50:04 +0800 Subject: [PATCH 5/5] `pnpm run lint` to format the code --- .../projects/components/dependencies/use-dependencies.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) 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 96ba63867041..4db5136bda24 100644 --- a/dolphinscheduler-ui/src/views/projects/components/dependencies/use-dependencies.ts +++ b/dolphinscheduler-ui/src/views/projects/components/dependencies/use-dependencies.ts @@ -136,7 +136,9 @@ export function useDependencies() { .forEach((item: any) => { dependentTaskLinks.push({ text: - item.workflowDefinitionName + '->' + item.taskDefinitionName, + item.workflowDefinitionName + + '->' + + item.taskDefinitionName, show: true, action: () => { const url = `/projects/${item.projectCode}/workflow/definitions/${item.workflowDefinitionCode}` @@ -172,7 +174,9 @@ export function useDependencies() { .forEach((item: any) => { dependentTaskLinks.push({ text: - item.workflowDefinitionName + '->' + item.taskDefinitionName, + item.workflowDefinitionName + + '->' + + item.taskDefinitionName, show: true, action: () => { const url = `/projects/${item.projectCode}/workflow/definitions/${item.workflowDefinitionCode}`