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 a074f7e2e6 Delete workflow will delete workflow instance (#13336)
a074f7e2e6 is described below
commit a074f7e2e6cccc0370e817e784022e86fc2cef04
Author: Wenjun Ruan <[email protected]>
AuthorDate: Wed Jan 4 22:22:03 2023 +0800
Delete workflow will delete workflow instance (#13336)
---
.../controller/ProcessDefinitionController.java | 12 +---
.../api/service/ProcessDefinitionService.java | 9 +--
.../api/service/ProcessInstanceService.java | 5 ++
.../api/service/ProcessTaskRelationService.java | 4 ++
.../api/service/TaskDefinitionLogService.java | 12 +---
.../api/service/TaskDefinitionService.java | 2 +
.../api/service/TaskInstanceService.java | 2 +
.../service/impl/ProcessDefinitionServiceImpl.java | 72 ++++++++-----------
.../service/impl/ProcessInstanceServiceImpl.java | 80 +++++++++++++++-------
.../impl/ProcessTaskRelationServiceImpl.java | 12 ++++
.../api/service/impl/ResourcesServiceImpl.java | 5 ++
.../service/impl/TaskDefinitionLogServiceImpl.java | 61 +++++++++++++++++
.../service/impl/TaskDefinitionServiceImpl.java | 23 +++++++
.../api/service/impl/TaskInstanceServiceImpl.java | 35 ++++++++--
.../api/service/ProcessDefinitionServiceTest.java | 45 +++++-------
.../api/service/ProcessInstanceServiceTest.java | 10 ++-
.../org/apache/dolphinscheduler/dao/AlertDao.java | 9 +++
.../dolphinscheduler/dao/mapper/AlertMapper.java | 2 +
.../dao/mapper/AlertSendStatusMapper.java | 4 ++
.../dao/mapper/DqExecuteResultMapper.java | 2 +
.../dao/mapper/ProcessDefinitionLogMapper.java | 2 +
.../dao/mapper/ProcessInstanceMapMapper.java | 1 +
.../dao/mapper/ProcessTaskRelationLogMapper.java | 4 ++
.../dao/mapper/ProcessTaskRelationMapper.java | 3 +
.../dao/mapper/TaskDefinitionLogMapper.java | 3 +
.../dao/mapper/TaskDefinitionMapper.java | 2 +
.../DqExecuteResultDao.java} | 12 +---
.../dao/repository/ProcessDefinitionDao.java | 7 ++
.../ProcessDefinitionLogDao.java} | 12 +---
.../dao/repository/ProcessInstanceDao.java | 7 ++
.../dao/repository/ProcessInstanceMapDao.java | 5 ++
.../ProcessTaskRelationLogDao.java} | 10 +--
.../dao/repository/TaskDefinitionDao.java | 4 ++
.../dao/repository/TaskDefinitionLogDao.java | 2 +
.../impl/DqExecuteResultDaoImpl.java} | 19 +++--
.../repository/impl/ProcessDefinitionDaoImpl.java | 17 +++++
.../impl/ProcessDefinitionLogDaoImpl.java} | 19 +++--
.../repository/impl/ProcessInstanceDaoImpl.java | 17 +++++
.../repository/impl/ProcessInstanceMapDaoImpl.java | 12 ++++
...mpl.java => ProcessTaskRelationLogDaoImpl.java} | 31 +++------
.../dao/repository/impl/TaskDefinitionDaoImpl.java | 17 +++++
.../repository/impl/TaskDefinitionLogDaoImpl.java | 10 +++
.../dolphinscheduler/dao/mapper/AlertMapper.xml | 6 ++
.../dao/mapper/AlertSendStatusMapper.xml | 9 +++
.../dao/mapper/DqExecuteResultMapper.xml | 24 ++++---
.../dao/mapper/ProcessDefinitionLogMapper.xml | 6 ++
.../dao/mapper/ProcessInstanceMapMapper.xml | 6 ++
.../dao/mapper/ProcessTaskRelationLogMapper.xml | 12 ++++
.../dao/mapper/ProcessTaskRelationMapper.xml | 20 +++---
.../dao/mapper/TaskDefinitionLogMapper.xml | 14 +++-
50 files changed, 519 insertions(+), 200 deletions(-)
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ProcessDefinitionController.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ProcessDefinitionController.java
index 27c6dd3a02..5a5d8613b7 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ProcessDefinitionController.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ProcessDefinitionController.java
@@ -634,14 +634,6 @@ public class ProcessDefinitionController extends
BaseController {
return returnDataList(result);
}
- /**
- * delete process definition by code
- *
- * @param loginUser login user
- * @param projectCode project code
- * @param code process definition code
- * @return delete result code
- */
@Operation(summary = "deleteByCode", description =
"DELETE_PROCESS_DEFINITION_BY_ID_NOTES")
@Parameters({
@Parameter(name = "code", description = "PROCESS_DEFINITION_CODE",
schema = @Schema(implementation = int.class, example = "100"))
@@ -652,8 +644,8 @@ public class ProcessDefinitionController extends
BaseController {
@AccessLogAnnotation(ignoreRequestArgs = "loginUser")
public Result deleteProcessDefinitionByCode(@Parameter(hidden = true)
@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@Parameter(name =
"projectCode", description = "PROJECT_CODE", required = true) @PathVariable
long projectCode,
- @PathVariable("code") long
code) {
- processDefinitionService.deleteProcessDefinitionByCode(loginUser,
code);
+ @PathVariable("code") long
workflowDefinitionCode) {
+ processDefinitionService.deleteProcessDefinitionByCode(loginUser,
workflowDefinitionCode);
return new Result(Status.SUCCESS);
}
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionService.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionService.java
index 64df82f8c9..0fc682d403 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionService.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionService.java
@@ -248,14 +248,7 @@ public interface ProcessDefinitionService {
long projectCode,
String codes);
- /**
- * delete process definition by code
- *
- * @param loginUser login user
- * @param code process definition code
- */
- void deleteProcessDefinitionByCode(User loginUser,
- long code);
+ void deleteProcessDefinitionByCode(User loginUser, long
workflowDefinitionCode);
/**
* release process definition: online / offline
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProcessInstanceService.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProcessInstanceService.java
index 20bea9b600..5b8bab32c0 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProcessInstanceService.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProcessInstanceService.java
@@ -221,4 +221,9 @@ public interface ProcessInstanceService {
*/
List<ProcessInstance> queryByProcessDefineCode(Long processDefinitionCode,
int size);
+
+ void deleteProcessInstanceByWorkflowDefinitionCode(long
workflowDefinitionCode);
+
+ void deleteProcessInstanceById(int workflowInstanceId);
+
}
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProcessTaskRelationService.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProcessTaskRelationService.java
index f5a1f7a082..57502afae8 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProcessTaskRelationService.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProcessTaskRelationService.java
@@ -158,4 +158,8 @@ public interface ProcessTaskRelationService {
*/
Map<String, Object> deleteEdge(User loginUser, long projectCode, long
processDefinitionCode, long preTaskCode,
long postTaskCode);
+
+ List<ProcessTaskRelation> queryByWorkflowDefinitionCode(long
workflowDefinitionCode, int workflowDefinitionVersion);
+
+ void deleteByWorkflowDefinitionCode(long workflowDefinitionCode, int
workflowDefinitionVersion);
}
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/AlertSendStatusMapper.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/TaskDefinitionLogService.java
similarity index 70%
copy from
dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/AlertSendStatusMapper.java
copy to
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/TaskDefinitionLogService.java
index b1a5fea153..72c5890d9a 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/AlertSendStatusMapper.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/TaskDefinitionLogService.java
@@ -15,15 +15,9 @@
* limitations under the License.
*/
-package org.apache.dolphinscheduler.dao.mapper;
+package org.apache.dolphinscheduler.api.service;
-import org.apache.dolphinscheduler.dao.entity.AlertSendStatus;
+public interface TaskDefinitionLogService {
-import java.util.List;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-
-public interface AlertSendStatusMapper extends BaseMapper<AlertSendStatus> {
-
- int batchInsert(List<AlertSendStatus> alertSendStatuses);
+ void deleteTaskByWorkflowDefinitionCode(long workflowDefinitionCode);
}
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/TaskDefinitionService.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/TaskDefinitionService.java
index 8e76925667..00ebbc64e5 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/TaskDefinitionService.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/TaskDefinitionService.java
@@ -253,4 +253,6 @@ public interface TaskDefinitionService {
long projectCode,
long code,
ReleaseState releaseState);
+
+ void deleteTaskByWorkflowDefinitionCode(long workflowDefinitionCode, int
workflowDefinitionVersion);
}
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/TaskInstanceService.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/TaskInstanceService.java
index ed23d3695e..b9d7e91e98 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/TaskInstanceService.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/TaskInstanceService.java
@@ -110,4 +110,6 @@ public interface TaskInstanceService {
* @return
*/
TaskInstanceRemoveCacheResponse removeTaskInstanceCache(User loginUser,
long projectCode, Integer taskInstanceId);
+
+ void deleteByWorkflowInstanceId(Integer workflowInstanceId);
}
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 5b87f20069..5afc8b32ea 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
@@ -58,6 +58,8 @@ import
org.apache.dolphinscheduler.api.service.ProcessDefinitionService;
import org.apache.dolphinscheduler.api.service.ProcessInstanceService;
import org.apache.dolphinscheduler.api.service.ProjectService;
import org.apache.dolphinscheduler.api.service.SchedulerService;
+import org.apache.dolphinscheduler.api.service.TaskDefinitionLogService;
+import org.apache.dolphinscheduler.api.service.TaskDefinitionService;
import org.apache.dolphinscheduler.api.service.WorkFlowLineageService;
import org.apache.dolphinscheduler.api.utils.CheckUtils;
import org.apache.dolphinscheduler.api.utils.FileUtils;
@@ -111,6 +113,7 @@ import org.apache.dolphinscheduler.dao.mapper.TenantMapper;
import org.apache.dolphinscheduler.dao.mapper.UserMapper;
import org.apache.dolphinscheduler.dao.model.PageListingResult;
import org.apache.dolphinscheduler.dao.repository.ProcessDefinitionDao;
+import org.apache.dolphinscheduler.dao.repository.ProcessDefinitionLogDao;
import org.apache.dolphinscheduler.dao.repository.TaskDefinitionLogDao;
import org.apache.dolphinscheduler.plugin.task.api.TaskPluginManager;
import org.apache.dolphinscheduler.plugin.task.api.enums.SqlType;
@@ -198,6 +201,8 @@ public class ProcessDefinitionServiceImpl extends
BaseServiceImpl implements Pro
@Autowired
private ProcessDefinitionDao processDefinitionDao;
+ @Autowired
+ private ProcessDefinitionLogDao processDefinitionLogDao;
@Lazy
@Autowired
private ProcessInstanceService processInstanceService;
@@ -223,6 +228,13 @@ public class ProcessDefinitionServiceImpl extends
BaseServiceImpl implements Pro
@Autowired
TaskDefinitionLogMapper taskDefinitionLogMapper;
+ @Lazy
+ @Autowired
+ private TaskDefinitionService taskDefinitionService;
+
+ @Autowired
+ private TaskDefinitionLogService taskDefinitionLogService;
+
@Autowired
private TaskDefinitionMapper taskDefinitionMapper;
@@ -1044,19 +1056,9 @@ public class ProcessDefinitionServiceImpl extends
BaseServiceImpl implements Pro
}
}
- /**
- * delete process definition by code
- *
- * @param loginUser login user
- * @param code process definition code
- */
- @Override
- @Transactional
public void deleteProcessDefinitionByCode(User loginUser, long code) {
- ProcessDefinition processDefinition =
processDefinitionMapper.queryByCode(code);
- if (processDefinition == null) {
- throw new ServiceException(Status.PROCESS_DEFINE_NOT_EXIST,
String.valueOf(code));
- }
+ ProcessDefinition processDefinition =
processDefinitionDao.queryByCode(code)
+ .orElseThrow(() -> new
ServiceException(PROCESS_DEFINE_NOT_EXIST, String.valueOf(code)));
Project project =
projectMapper.queryByCode(processDefinition.getProjectCode());
// check user access for project
@@ -1082,38 +1084,22 @@ public class ProcessDefinitionServiceImpl extends
BaseServiceImpl implements Pro
throw new ServiceException(Status.SCHEDULE_STATE_ONLINE,
scheduleObj.getId());
}
}
- List<ProcessTaskRelation> processTaskRelations =
processTaskRelationMapper
- .queryByProcessCode(project.getCode(),
processDefinition.getCode());
- if (CollectionUtils.isNotEmpty(processTaskRelations)) {
- Set<Long> taskCodeList = new HashSet<>(processTaskRelations.size()
* 2);
- for (ProcessTaskRelation processTaskRelation :
processTaskRelations) {
- if (processTaskRelation.getPreTaskCode() != 0) {
- taskCodeList.add(processTaskRelation.getPreTaskCode());
- }
- if (processTaskRelation.getPostTaskCode() != 0) {
- taskCodeList.add(processTaskRelation.getPostTaskCode());
- }
- }
- if (CollectionUtils.isNotEmpty(taskCodeList)) {
- int i = taskDefinitionMapper.deleteByBatchCodes(new
ArrayList<>(taskCodeList));
- if (i != taskCodeList.size()) {
- logger.error("Delete task definition error,
processDefinitionCode:{}.", code);
- throw new
ServiceException(Status.DELETE_TASK_DEFINE_BY_CODE_ERROR);
- }
- }
- }
- int delete =
processDefinitionMapper.deleteById(processDefinition.getId());
- if (delete == 0) {
- logger.error("Delete process definition error,
processDefinitionCode:{}.", code);
- throw new
ServiceException(Status.DELETE_PROCESS_DEFINE_BY_CODE_ERROR);
- }
- int deleteRelation =
processTaskRelationMapper.deleteByCode(project.getCode(),
processDefinition.getCode());
- if (deleteRelation == 0) {
- logger.warn(
- "The process definition has not relation, it will be
delete successfully, processDefinitionCode:{}.",
- code);
- }
+
+ // delete workflow instance, will delete workflow instance, sub
workflow instance, task instance, alert
+
processInstanceService.deleteProcessInstanceByWorkflowDefinitionCode(processDefinition.getCode());
+ // delete task definition
+
taskDefinitionService.deleteTaskByWorkflowDefinitionCode(processDefinition.getCode(),
+ processDefinition.getVersion());
+ // delete task definition log
+
taskDefinitionLogService.deleteTaskByWorkflowDefinitionCode(processDefinition.getCode());
+ // delete workflow definition log
+
processDefinitionLogDao.deleteByWorkflowDefinitionCode(processDefinition.getCode());
deleteOtherRelation(project, new HashMap<>(), processDefinition);
+
+ // we delete the workflow definition at last to avoid using
transaction here.
+ // If delete error, we can call this interface again.
+
processDefinitionDao.deleteByWorkflowDefinitionCode(processDefinition.getCode());
+ logger.info("Success delete workflow definition
workflowDefinitionCode: {}", code);
}
/**
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessInstanceServiceImpl.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessInstanceServiceImpl.java
index 5b8cfb0eeb..0adf53cd89 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessInstanceServiceImpl.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessInstanceServiceImpl.java
@@ -39,6 +39,7 @@ import org.apache.dolphinscheduler.api.service.LoggerService;
import org.apache.dolphinscheduler.api.service.ProcessDefinitionService;
import org.apache.dolphinscheduler.api.service.ProcessInstanceService;
import org.apache.dolphinscheduler.api.service.ProjectService;
+import org.apache.dolphinscheduler.api.service.TaskInstanceService;
import org.apache.dolphinscheduler.api.service.UsersService;
import org.apache.dolphinscheduler.api.utils.PageInfo;
import org.apache.dolphinscheduler.api.utils.Result;
@@ -71,6 +72,7 @@ import
org.apache.dolphinscheduler.dao.mapper.TaskDefinitionMapper;
import org.apache.dolphinscheduler.dao.mapper.TaskInstanceMapper;
import org.apache.dolphinscheduler.dao.mapper.TenantMapper;
import org.apache.dolphinscheduler.dao.repository.ProcessInstanceDao;
+import org.apache.dolphinscheduler.dao.repository.ProcessInstanceMapDao;
import org.apache.dolphinscheduler.dao.repository.TaskInstanceDao;
import org.apache.dolphinscheduler.dao.utils.WorkflowUtils;
import org.apache.dolphinscheduler.plugin.task.api.TaskPluginManager;
@@ -102,6 +104,7 @@ import java.util.stream.Collectors;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -133,12 +136,19 @@ public class ProcessInstanceServiceImpl extends
BaseServiceImpl implements Proce
@Autowired
TaskInstanceDao taskInstanceDao;
+ @Lazy
+ @Autowired
+ private TaskInstanceService taskInstanceService;
+
@Autowired
ProcessInstanceMapper processInstanceMapper;
@Autowired
ProcessInstanceDao processInstanceDao;
+ @Autowired
+ private ProcessInstanceMapDao processInstanceMapDao;
+
@Autowired
ProcessDefinitionMapper processDefineMapper;
@@ -816,29 +826,7 @@ public class ProcessInstanceServiceImpl extends
BaseServiceImpl implements Proce
throw new ServiceException(PROCESS_INSTANCE_STATE_OPERATION_ERROR,
processInstance.getName(),
processInstance.getState(), "delete");
}
-
- // delete database cascade
- int delete =
processService.deleteWorkProcessInstanceById(processInstanceId);
-
- processService.deleteAllSubWorkProcessByParentId(processInstanceId);
- processService.deleteWorkProcessMapByParentId(processInstanceId);
- // We need to remove the task log file before deleting the task
instance
- // because the task log file is query from task instance.
- // When delete task instance error, the task log file will also be
deleted, this may cause data inconsistency.
- processService.removeTaskLogFile(processInstanceId);
- taskInstanceDao.deleteByWorkflowInstanceId(processInstanceId);
- alertDao.deleteByWorkflowInstanceId(processInstanceId);
-
- if (delete > 0) {
- logger.info(
- "Delete process instance complete,
ProcessDefinitionCode{}, processInstanceId:{}.",
- processInstance.getProcessDefinitionCode(),
processInstanceId);
- } else {
- logger.error(
- "Delete process instance error, ProcessDefinitionCode{},
processInstanceId:{}.",
- processInstance.getProcessDefinitionCode(),
processInstanceId);
- throw new
ServiceException(Status.DELETE_PROCESS_INSTANCE_BY_ID_ERROR);
- }
+ deleteProcessInstanceById(processInstanceId);
}
/**
@@ -1032,4 +1020,50 @@ public class ProcessInstanceServiceImpl extends
BaseServiceImpl implements Proce
public List<ProcessInstance> queryByProcessDefineCode(Long
processDefinitionCode, int size) {
return
processInstanceMapper.queryByProcessDefineCode(processDefinitionCode, size);
}
+
+ @Override
+ public void deleteProcessInstanceByWorkflowDefinitionCode(long
workflowDefinitionCode) {
+ while (true) {
+ List<ProcessInstance> processInstances =
+
processInstanceMapper.queryByProcessDefineCode(workflowDefinitionCode, 100);
+ if (CollectionUtils.isEmpty(processInstances)) {
+ break;
+ }
+ logger.info("Begin to delete workflow instance, workflow
definition code: {}", workflowDefinitionCode);
+ for (ProcessInstance processInstance : processInstances) {
+ if (!processInstance.getState().isFinished()) {
+ logger.warn("Workflow instance is not finished cannot
delete, process instance id:{}",
+ processInstance.getId());
+ throw new
ServiceException(PROCESS_INSTANCE_STATE_OPERATION_ERROR,
processInstance.getName(),
+ processInstance.getState(), "delete");
+ }
+ deleteProcessInstanceById(processInstance.getId());
+ }
+ logger.info("Success delete workflow instance, workflow definition
code: {}, size: {}",
+ workflowDefinitionCode, processInstances.size());
+ }
+ }
+
+ @Override
+ public void deleteProcessInstanceById(int workflowInstanceId) {
+ // delete task instance
+ taskInstanceService.deleteByWorkflowInstanceId(workflowInstanceId);
+ // delete sub process instances
+ deleteSubWorkflowInstanceIfNeeded(workflowInstanceId);
+ // delete alert
+ alertDao.deleteByWorkflowInstanceId(workflowInstanceId);
+ // delete process instance
+ processInstanceDao.deleteById(workflowInstanceId);
+ }
+
+ private void deleteSubWorkflowInstanceIfNeeded(int workflowInstanceId) {
+ List<Integer> subWorkflowInstanceIds =
processInstanceMapDao.querySubWorkflowInstanceIds(workflowInstanceId);
+ if
(org.apache.commons.collections4.CollectionUtils.isEmpty(subWorkflowInstanceIds))
{
+ return;
+ }
+ for (Integer subWorkflowInstanceId : subWorkflowInstanceIds) {
+ deleteProcessInstanceById(subWorkflowInstanceId);
+ }
+ processInstanceMapDao.deleteByParentId(workflowInstanceId);
+ }
}
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessTaskRelationServiceImpl.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessTaskRelationServiceImpl.java
index 4feff61e4a..dbbcedb465 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessTaskRelationServiceImpl.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessTaskRelationServiceImpl.java
@@ -913,6 +913,18 @@ public class ProcessTaskRelationServiceImpl extends
BaseServiceImpl implements P
return result;
}
+ @Override
+ public List<ProcessTaskRelation> queryByWorkflowDefinitionCode(long
workflowDefinitionCode,
+ int
workflowDefinitionVersion) {
+ return
processTaskRelationMapper.queryProcessTaskRelationsByProcessDefinitionCode(workflowDefinitionCode,
+ workflowDefinitionVersion);
+ }
+
+ @Override
+ public void deleteByWorkflowDefinitionCode(long workflowDefinitionCode,
int workflowDefinitionVersion) {
+
processTaskRelationMapper.deleteByWorkflowDefinitionCode(workflowDefinitionCode,
workflowDefinitionVersion);
+ }
+
/**
* build task definition
*
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 3ef1d18b1f..f1821fcb63 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
@@ -856,6 +856,11 @@ public class ResourcesServiceImpl extends BaseServiceImpl
implements ResourcesSe
@Override
public Map<String, Object> queryResourceList(User loginUser, ResourceType
type, String fullName) {
Map<String, Object> result = new HashMap<>();
+ if (storageOperate == null) {
+ result.put(Constants.DATA_LIST, Collections.emptyList());
+ result.put(Constants.STATUS, Status.SUCCESS);
+ return result;
+ }
User user = userMapper.selectById(loginUser.getId());
if (user == null) {
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/TaskDefinitionLogServiceImpl.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/TaskDefinitionLogServiceImpl.java
new file mode 100644
index 0000000000..44c57c07f0
--- /dev/null
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/TaskDefinitionLogServiceImpl.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.dolphinscheduler.api.service.impl;
+
+import org.apache.dolphinscheduler.api.service.TaskDefinitionLogService;
+import org.apache.dolphinscheduler.dao.entity.ProcessTaskRelation;
+import org.apache.dolphinscheduler.dao.entity.ProcessTaskRelationLog;
+import org.apache.dolphinscheduler.dao.repository.ProcessTaskRelationLogDao;
+import org.apache.dolphinscheduler.dao.repository.TaskDefinitionLogDao;
+
+import org.apache.commons.collections4.CollectionUtils;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Component
+public class TaskDefinitionLogServiceImpl implements TaskDefinitionLogService {
+
+ @Autowired
+ private ProcessTaskRelationLogDao processTaskRelationLogDao;
+
+ @Autowired
+ private TaskDefinitionLogDao taskDefinitionLogDao;
+
+ @Override
+ public void deleteTaskByWorkflowDefinitionCode(long
workflowDefinitionCode) {
+ List<ProcessTaskRelationLog> processTaskRelations =
+
processTaskRelationLogDao.findByWorkflowDefinitionCode(workflowDefinitionCode);
+ if (CollectionUtils.isEmpty(processTaskRelations)) {
+ return;
+ }
+ // delete task definition
+ Set<Long> needToDeleteTaskDefinitionCodes = new HashSet<>();
+ for (ProcessTaskRelation processTaskRelation : processTaskRelations) {
+
needToDeleteTaskDefinitionCodes.add(processTaskRelation.getPreTaskCode());
+
needToDeleteTaskDefinitionCodes.add(processTaskRelation.getPostTaskCode());
+ }
+
taskDefinitionLogDao.deleteByTaskDefinitionCodes(needToDeleteTaskDefinitionCodes);
+ // delete task workflow relation
+
processTaskRelationLogDao.deleteByWorkflowDefinitionCode(workflowDefinitionCode);
+ }
+}
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/TaskDefinitionServiceImpl.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/TaskDefinitionServiceImpl.java
index 6e10493200..7dd38bba05 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/TaskDefinitionServiceImpl.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/TaskDefinitionServiceImpl.java
@@ -63,6 +63,7 @@ import
org.apache.dolphinscheduler.dao.mapper.ProcessTaskRelationMapper;
import org.apache.dolphinscheduler.dao.mapper.ProjectMapper;
import org.apache.dolphinscheduler.dao.mapper.TaskDefinitionLogMapper;
import org.apache.dolphinscheduler.dao.mapper.TaskDefinitionMapper;
+import org.apache.dolphinscheduler.dao.repository.TaskDefinitionDao;
import org.apache.dolphinscheduler.plugin.task.api.TaskPluginManager;
import org.apache.dolphinscheduler.plugin.task.api.parameters.ParametersNode;
import org.apache.dolphinscheduler.service.process.ProcessService;
@@ -77,6 +78,7 @@ import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -111,6 +113,9 @@ public class TaskDefinitionServiceImpl extends
BaseServiceImpl implements TaskDe
@Autowired
private TaskDefinitionMapper taskDefinitionMapper;
+ @Autowired
+ private TaskDefinitionDao taskDefinitionDao;
+
@Autowired
private TaskDefinitionLogMapper taskDefinitionLogMapper;
@@ -1220,4 +1225,22 @@ public class TaskDefinitionServiceImpl extends
BaseServiceImpl implements TaskDe
putMsg(result, Status.SUCCESS);
return result;
}
+
+ @Override
+ public void deleteTaskByWorkflowDefinitionCode(long
workflowDefinitionCode, int workflowDefinitionVersion) {
+ List<ProcessTaskRelation> processTaskRelations =
processTaskRelationService
+ .queryByWorkflowDefinitionCode(workflowDefinitionCode,
workflowDefinitionVersion);
+ if (CollectionUtils.isEmpty(processTaskRelations)) {
+ return;
+ }
+ // delete task definition
+ Set<Long> needToDeleteTaskDefinitionCodes = new HashSet<>();
+ for (ProcessTaskRelation processTaskRelation : processTaskRelations) {
+
needToDeleteTaskDefinitionCodes.add(processTaskRelation.getPreTaskCode());
+
needToDeleteTaskDefinitionCodes.add(processTaskRelation.getPostTaskCode());
+ }
+
taskDefinitionDao.deleteByTaskDefinitionCodes(needToDeleteTaskDefinitionCodes);
+ // delete task workflow relation
+
processTaskRelationService.deleteByWorkflowDefinitionCode(workflowDefinitionCode,
workflowDefinitionVersion);
+ }
}
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/TaskInstanceServiceImpl.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/TaskInstanceServiceImpl.java
index d0bee2ae39..d8e8de5b90 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/TaskInstanceServiceImpl.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/TaskInstanceServiceImpl.java
@@ -23,7 +23,6 @@ import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationCon
import
org.apache.dolphinscheduler.api.dto.taskInstance.TaskInstanceRemoveCacheResponse;
import org.apache.dolphinscheduler.api.enums.Status;
-import org.apache.dolphinscheduler.api.service.ProcessInstanceService;
import org.apache.dolphinscheduler.api.service.ProjectService;
import org.apache.dolphinscheduler.api.service.TaskInstanceService;
import org.apache.dolphinscheduler.api.service.UsersService;
@@ -40,6 +39,7 @@ import org.apache.dolphinscheduler.dao.entity.User;
import org.apache.dolphinscheduler.dao.mapper.ProjectMapper;
import org.apache.dolphinscheduler.dao.mapper.TaskDefinitionMapper;
import org.apache.dolphinscheduler.dao.mapper.TaskInstanceMapper;
+import org.apache.dolphinscheduler.dao.repository.DqExecuteResultDao;
import org.apache.dolphinscheduler.dao.repository.TaskInstanceDao;
import org.apache.dolphinscheduler.dao.utils.TaskCacheUtils;
import org.apache.dolphinscheduler.plugin.task.api.enums.TaskExecutionStatus;
@@ -47,6 +47,7 @@ import
org.apache.dolphinscheduler.remote.command.TaskKillRequestCommand;
import org.apache.dolphinscheduler.remote.command.TaskSavePointRequestCommand;
import org.apache.dolphinscheduler.remote.processor.StateEventCallbackService;
import org.apache.dolphinscheduler.remote.utils.Host;
+import org.apache.dolphinscheduler.service.log.LogClient;
import org.apache.dolphinscheduler.service.process.ProcessService;
import org.apache.commons.lang3.StringUtils;
@@ -91,9 +92,6 @@ public class TaskInstanceServiceImpl extends BaseServiceImpl
implements TaskInst
@Autowired
TaskInstanceDao taskInstanceDao;
- @Autowired
- ProcessInstanceService processInstanceService;
-
@Autowired
UsersService usersService;
@@ -103,6 +101,12 @@ public class TaskInstanceServiceImpl extends
BaseServiceImpl implements TaskInst
@Autowired
private StateEventCallbackService stateEventCallbackService;
+ @Autowired
+ private LogClient logClient;
+
+ @Autowired
+ private DqExecuteResultDao dqExecuteResultDao;
+
/**
* query task list by project, process instance, task name, task start
time, task end time, task status, keyword paging
*
@@ -361,4 +365,27 @@ public class TaskInstanceServiceImpl extends
BaseServiceImpl implements TaskInst
return new TaskInstanceRemoveCacheResponse(result, cacheKey);
}
+ @Override
+ public void deleteByWorkflowInstanceId(Integer workflowInstanceId) {
+ List<TaskInstance> needToDeleteTaskInstances =
+
taskInstanceDao.findTaskInstanceByWorkflowInstanceId(workflowInstanceId);
+ if
(org.apache.commons.collections4.CollectionUtils.isEmpty(needToDeleteTaskInstances))
{
+ return;
+ }
+ for (TaskInstance taskInstance : needToDeleteTaskInstances) {
+ // delete log
+ if (StringUtils.isNotEmpty(taskInstance.getLogPath())) {
+ try {
+ logClient.removeTaskLog(Host.of(taskInstance.getHost()),
taskInstance.getLogPath());
+ } catch (Exception e) {
+ logger.error(
+ "Remove task log error, meet an unknown exception,
taskInstanceId: {}, host: {}, logPath: {}",
+ taskInstance.getId(), taskInstance.getHost(),
taskInstance.getLogPath(), e);
+ }
+ }
+ }
+ dqExecuteResultDao.deleteByWorkflowInstanceId(workflowInstanceId);
+ taskInstanceDao.deleteByWorkflowInstanceId(workflowInstanceId);
+ }
+
}
diff --git
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionServiceTest.java
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionServiceTest.java
index 11407c5979..1d59ba8c58 100644
---
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionServiceTest.java
+++
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionServiceTest.java
@@ -71,6 +71,7 @@ import org.apache.dolphinscheduler.dao.mapper.TenantMapper;
import org.apache.dolphinscheduler.dao.mapper.UserMapper;
import org.apache.dolphinscheduler.dao.model.PageListingResult;
import org.apache.dolphinscheduler.dao.repository.ProcessDefinitionDao;
+import org.apache.dolphinscheduler.dao.repository.ProcessDefinitionLogDao;
import org.apache.dolphinscheduler.dao.repository.TaskDefinitionLogDao;
import org.apache.dolphinscheduler.service.process.ProcessService;
import org.apache.dolphinscheduler.spi.enums.DbType;
@@ -88,6 +89,7 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.zip.ZipEntry;
@@ -173,6 +175,15 @@ public class ProcessDefinitionServiceTest extends
BaseServiceTestTool {
@Mock
private WorkFlowLineageService workFlowLineageService;
+ @Mock
+ private TaskDefinitionService taskDefinitionService;
+
+ @Mock
+ private TaskDefinitionLogService taskDefinitionLogService;
+
+ @Mock
+ private ProcessDefinitionLogDao processDefinitionLogDao;
+
@Mock
private UserMapper userMapper;
@@ -476,7 +487,7 @@ public class ProcessDefinitionServiceTest extends
BaseServiceTestTool {
Assertions.assertEquals(Status.PROCESS_DEFINE_NOT_EXIST.getCode(),
((ServiceException) exception).getCode());
// project check auth fail
-
Mockito.when(processDefinitionMapper.queryByCode(6L)).thenReturn(this.getProcessDefinition());
+
Mockito.when(processDefinitionDao.queryByCode(6L)).thenReturn(Optional.of(getProcessDefinition()));
Mockito.doThrow(new
ServiceException(Status.PROJECT_NOT_FOUND)).when(projectService)
.checkProjectAndAuthThrowException(user, project,
WORKFLOW_DEFINITION_DELETE);
exception = Assertions.assertThrows(ServiceException.class,
@@ -486,14 +497,14 @@ public class ProcessDefinitionServiceTest extends
BaseServiceTestTool {
// project check auth success, instance not exist
Mockito.doNothing().when(projectService).checkProjectAndAuthThrowException(user,
project,
WORKFLOW_DEFINITION_DELETE);
- Mockito.when(processDefinitionMapper.queryByCode(1L)).thenReturn(null);
+
Mockito.when(processDefinitionDao.queryByCode(1L)).thenReturn(Optional.empty());
exception = Assertions.assertThrows(ServiceException.class,
() ->
processDefinitionService.deleteProcessDefinitionByCode(user, 1L));
Assertions.assertEquals(Status.PROCESS_DEFINE_NOT_EXIST.getCode(),
((ServiceException) exception).getCode());
ProcessDefinition processDefinition = getProcessDefinition();
// user no auth
-
Mockito.when(processDefinitionMapper.queryByCode(46L)).thenReturn(processDefinition);
+
Mockito.when(processDefinitionDao.queryByCode(46L)).thenReturn(Optional.of(processDefinition));
exception = Assertions.assertThrows(ServiceException.class,
() ->
processDefinitionService.deleteProcessDefinitionByCode(user, 46L));
Assertions.assertEquals(Status.USER_NO_OPERATION_PERM.getCode(),
((ServiceException) exception).getCode());
@@ -501,19 +512,16 @@ public class ProcessDefinitionServiceTest extends
BaseServiceTestTool {
// process definition online
user.setUserType(UserType.ADMIN_USER);
processDefinition.setReleaseState(ReleaseState.ONLINE);
-
Mockito.when(processDefinitionMapper.queryByCode(46L)).thenReturn(processDefinition);
+
Mockito.when(processDefinitionDao.queryByCode(46L)).thenReturn(Optional.of(processDefinition));
exception = Assertions.assertThrows(ServiceException.class,
() ->
processDefinitionService.deleteProcessDefinitionByCode(user, 46L));
Assertions.assertEquals(Status.PROCESS_DEFINE_STATE_ONLINE.getCode(),
((ServiceException) exception).getCode());
// scheduler list elements > 1
processDefinition.setReleaseState(ReleaseState.OFFLINE);
-
Mockito.when(processDefinitionMapper.queryByCode(46L)).thenReturn(processDefinition);
+
Mockito.when(processDefinitionDao.queryByCode(46L)).thenReturn(Optional.of(processDefinition));
Mockito.when(scheduleMapper.queryByProcessDefinitionCode(46L)).thenReturn(getSchedule());
Mockito.when(scheduleMapper.deleteById(46)).thenReturn(1);
-
Mockito.when(processDefinitionMapper.deleteById(processDefinition.getId())).thenReturn(1);
- Mockito.when(processTaskRelationMapper.deleteByCode(project.getCode(),
processDefinition.getCode()))
- .thenReturn(1);
Mockito.when(workFlowLineageService.queryTaskDepOnProcess(project.getCode(),
processDefinition.getCode()))
.thenReturn(Collections.emptySet());
processDefinitionService.deleteProcessDefinitionByCode(user, 46L);
@@ -538,24 +546,12 @@ public class ProcessDefinitionServiceTest extends
BaseServiceTestTool {
// delete success
schedule.setReleaseState(ReleaseState.OFFLINE);
- Mockito.when(processTaskRelationMapper.queryByProcessCode(1, 11))
- .thenReturn(getProcessTaskRelation());
-
Mockito.when(taskDefinitionMapper.deleteByBatchCodes(Arrays.asList(100L,
200L))).thenReturn(2);
- Mockito.when(processDefinitionMapper.deleteById(46)).thenReturn(1);
-
Mockito.when(scheduleMapper.deleteById(schedule.getId())).thenReturn(1);
- Mockito.when(processTaskRelationMapper.deleteByCode(project.getCode(),
processDefinition.getCode()))
- .thenReturn(1);
Mockito.when(scheduleMapper.queryByProcessDefinitionCode(46L)).thenReturn(getSchedule());
+
Mockito.when(scheduleMapper.deleteById(schedule.getId())).thenReturn(1);
Mockito.when(workFlowLineageService.queryTaskDepOnProcess(project.getCode(),
processDefinition.getCode()))
.thenReturn(Collections.emptySet());
Assertions.assertDoesNotThrow(() ->
processDefinitionService.deleteProcessDefinitionByCode(user, 46L));
- // delete fail
-
Mockito.when(taskDefinitionMapper.deleteByBatchCodes(Arrays.asList(100L,
200L))).thenReturn(1);
- exception = Assertions.assertThrows(ServiceException.class,
- () ->
processDefinitionService.deleteProcessDefinitionByCode(user, 46L));
-
Assertions.assertEquals(Status.DELETE_TASK_DEFINE_BY_CODE_ERROR.getCode(),
- ((ServiceException) exception).getCode());
}
@Test
@@ -584,7 +580,7 @@ public class ProcessDefinitionServiceTest extends
BaseServiceTestTool {
definitionCodes =
Lists.newArrayList(singleCodes.split(Constants.COMMA)).stream().map(Long::parseLong)
.collect(Collectors.toSet());
Mockito.when(processDefinitionMapper.queryByCodes(definitionCodes)).thenReturn(processDefinitionList);
-
Mockito.when(processDefinitionMapper.queryByCode(processDefinitionCode)).thenReturn(process);
+
Mockito.when(processDefinitionDao.queryByCode(processDefinitionCode)).thenReturn(Optional.of(process));
// process definition online
user.setUserType(UserType.ADMIN_USER);
@@ -600,10 +596,7 @@ public class ProcessDefinitionServiceTest extends
BaseServiceTestTool {
// delete success
process.setReleaseState(ReleaseState.OFFLINE);
-
Mockito.when(processDefinitionMapper.queryByCode(processDefinitionCode)).thenReturn(process);
-
Mockito.when(processDefinitionMapper.deleteById(process.getId())).thenReturn(1);
- Mockito.when(processTaskRelationMapper.deleteByCode(project.getCode(),
process.getCode()))
- .thenReturn(1);
+
Mockito.when(processDefinitionDao.queryByCode(processDefinitionCode)).thenReturn(Optional.of(process));
Mockito.when(workFlowLineageService.queryTaskDepOnProcess(project.getCode(),
process.getCode()))
.thenReturn(Collections.emptySet());
putMsg(result, Status.SUCCESS, projectCode);
diff --git
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProcessInstanceServiceTest.java
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProcessInstanceServiceTest.java
index ba62a9c78e..61d94c5067 100644
---
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProcessInstanceServiceTest.java
+++
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProcessInstanceServiceTest.java
@@ -58,6 +58,7 @@ import
org.apache.dolphinscheduler.dao.mapper.TaskDefinitionMapper;
import org.apache.dolphinscheduler.dao.mapper.TaskInstanceMapper;
import org.apache.dolphinscheduler.dao.mapper.TenantMapper;
import org.apache.dolphinscheduler.dao.repository.ProcessInstanceDao;
+import org.apache.dolphinscheduler.dao.repository.ProcessInstanceMapDao;
import org.apache.dolphinscheduler.dao.repository.TaskInstanceDao;
import org.apache.dolphinscheduler.plugin.task.api.TaskPluginManager;
import org.apache.dolphinscheduler.plugin.task.api.enums.DependResult;
@@ -150,6 +151,12 @@ public class ProcessInstanceServiceTest {
@Mock
AlertDao alertDao;
+ @Mock
+ private TaskInstanceService taskInstanceService;
+
+ @Mock
+ private ProcessInstanceMapDao processInstanceMapDao;
+
private String shellJson =
"[{\"name\":\"\",\"preTaskCode\":0,\"preTaskVersion\":0,\"postTaskCode\":123456789,"
+
"\"postTaskVersion\":1,\"conditionType\":0,\"conditionParams\":\"{}\"},{\"name\":\"\",\"preTaskCode\":123456789,"
+
"\"preTaskVersion\":1,\"postTaskCode\":123451234,\"postTaskVersion\":1,\"conditionType\":0,\"conditionParams\":\"{}\"}]";
@@ -682,8 +689,7 @@ public class ProcessInstanceServiceTest {
processInstanceService.deleteProcessInstanceById(loginUser, 1);
when(processService.deleteWorkProcessInstanceById(1)).thenReturn(0);
- Assertions.assertThrows(ServiceException.class,
- () ->
processInstanceService.deleteProcessInstanceById(loginUser, 1));
+ Assertions.assertDoesNotThrow(() ->
processInstanceService.deleteProcessInstanceById(loginUser, 1));
}
@Test
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/AlertDao.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/AlertDao.java
index 58bf333f2e..a094647861 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/AlertDao.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/AlertDao.java
@@ -338,6 +338,15 @@ public class AlertDao {
if (processInstanceId == null) {
return;
}
+ List<Alert> alertList =
alertMapper.selectByWorkflowInstanceId(processInstanceId);
+ if (CollectionUtils.isEmpty(alertList)) {
+ return;
+ }
alertMapper.deleteByWorkflowInstanceId(processInstanceId);
+ List<Integer> alertIds = alertList
+ .stream()
+ .map(Alert::getId)
+ .collect(Collectors.toList());
+ alertSendStatusMapper.deleteByAlertIds(alertIds);
}
}
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/AlertMapper.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/AlertMapper.java
index d96101101e..c30c1c9043 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/AlertMapper.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/AlertMapper.java
@@ -46,4 +46,6 @@ public interface AlertMapper extends BaseMapper<Alert> {
@Param("crashAlarmSuppressionStartTime")
Date crashAlarmSuppressionStartTime);
void deleteByWorkflowInstanceId(@Param("workflowInstanceId") Integer
processInstanceId);
+
+ List<Alert> selectByWorkflowInstanceId(@Param("workflowInstanceId")
Integer processInstanceId);
}
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/AlertSendStatusMapper.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/AlertSendStatusMapper.java
index b1a5fea153..3377e3d682 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/AlertSendStatusMapper.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/AlertSendStatusMapper.java
@@ -19,6 +19,8 @@ package org.apache.dolphinscheduler.dao.mapper;
import org.apache.dolphinscheduler.dao.entity.AlertSendStatus;
+import org.apache.ibatis.annotations.Param;
+
import java.util.List;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -26,4 +28,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface AlertSendStatusMapper extends BaseMapper<AlertSendStatus> {
int batchInsert(List<AlertSendStatus> alertSendStatuses);
+
+ void deleteByAlertIds(@Param("alertIds") List<Integer> alertIds);
}
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/DqExecuteResultMapper.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/DqExecuteResultMapper.java
index c522019edf..d320f4bd0d 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/DqExecuteResultMapper.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/DqExecuteResultMapper.java
@@ -57,4 +57,6 @@ public interface DqExecuteResultMapper extends
BaseMapper<DqExecuteResult> {
* @return DqExecuteResult
*/
DqExecuteResult getExecuteResultById(@Param("taskInstanceId") int
taskInstanceId);
+
+ void deleteByWorkflowInstanceId(@Param("workflowInstanceId") Integer
workflowInstanceId);
}
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionLogMapper.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionLogMapper.java
index ba2d6cb9e3..3886b27f5c 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionLogMapper.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionLogMapper.java
@@ -94,4 +94,6 @@ public interface ProcessDefinitionLogMapper extends
BaseMapper<ProcessDefinition
* @return delete result
*/
int deleteByProcessDefinitionCodeAndVersion(@Param("code") long code,
@Param("version") int version);
+
+ void deleteByProcessDefinitionCode(@Param("workflowDefinitionCode") long
workflowDefinitionCode);
}
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessInstanceMapMapper.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessInstanceMapMapper.java
index fd3440e2d5..97da99c1cf 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessInstanceMapMapper.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessInstanceMapMapper.java
@@ -60,4 +60,5 @@ public interface ProcessInstanceMapMapper extends
BaseMapper<ProcessInstanceMap>
*/
List<Integer> querySubIdListByParentId(@Param("parentInstanceId") int
parentInstanceId);
+ void deleteByParentId(@Param("parentWorkflowInstanceId") int
workflowInstanceId);
}
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessTaskRelationLogMapper.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessTaskRelationLogMapper.java
index e4ffa49955..3e73fd1f56 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessTaskRelationLogMapper.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessTaskRelationLogMapper.java
@@ -74,4 +74,8 @@ public interface ProcessTaskRelationLogMapper extends
BaseMapper<ProcessTaskRela
* @return process task relation log
*/
ProcessTaskRelationLog
queryRelationLogByRelation(@Param("processTaskRelation") ProcessTaskRelation
processTaskRelation);
+
+ List<ProcessTaskRelationLog>
queryByProcessCode(@Param("workflowDefinitionCode") long
workflowDefinitionCode);
+
+ void deleteByWorkflowDefinitionCode(@Param("workflowDefinitionCode") long
workflowDefinitionCode);
}
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessTaskRelationMapper.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessTaskRelationMapper.java
index b2592fa72a..9b8dfc8736 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessTaskRelationMapper.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessTaskRelationMapper.java
@@ -222,4 +222,7 @@ public interface ProcessTaskRelationMapper extends
BaseMapper<ProcessTaskRelatio
Long queryTaskCodeByTaskName(@Param("workflowCode") Long workflowCode,
@Param("taskName") String taskName);
+
+ void deleteByWorkflowDefinitionCode(@Param("workflowDefinitionCode") long
workflowDefinitionCode,
+ @Param("workflowDefinitionVersion")
int workflowDefinitionVersion);
}
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/TaskDefinitionLogMapper.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/TaskDefinitionLogMapper.java
index 98cd1175e1..3f3f2de981 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/TaskDefinitionLogMapper.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/TaskDefinitionLogMapper.java
@@ -24,6 +24,7 @@ import org.apache.ibatis.annotations.Param;
import java.util.Collection;
import java.util.List;
+import java.util.Set;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.CacheEvict;
@@ -96,4 +97,6 @@ public interface TaskDefinitionLogMapper extends
BaseMapper<TaskDefinitionLog> {
*/
IPage<TaskDefinitionLog>
queryTaskDefinitionVersionsPaging(Page<TaskDefinitionLog> page, @Param("code")
long code,
@Param("projectCode") long projectCode);
+
+ void deleteByTaskDefinitionCodes(@Param("taskDefinitionCodes") Set<Long>
taskDefinitionCodes);
}
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/TaskDefinitionMapper.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/TaskDefinitionMapper.java
index 4539256e02..105cf04700 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/TaskDefinitionMapper.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/TaskDefinitionMapper.java
@@ -156,4 +156,6 @@ public interface TaskDefinitionMapper extends
BaseMapper<TaskDefinition> {
* @return deleted row count
*/
int deleteByBatchCodes(@Param("taskCodeList") List<Long> taskCodeList);
+
+ void deleteByWorkflowDefinitionCodeAndVersion(long workflowDefinitionCode,
int workflowDefinitionVersion);
}
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/AlertSendStatusMapper.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/DqExecuteResultDao.java
similarity index 70%
copy from
dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/AlertSendStatusMapper.java
copy to
dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/DqExecuteResultDao.java
index b1a5fea153..843548c866 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/AlertSendStatusMapper.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/DqExecuteResultDao.java
@@ -15,15 +15,9 @@
* limitations under the License.
*/
-package org.apache.dolphinscheduler.dao.mapper;
+package org.apache.dolphinscheduler.dao.repository;
-import org.apache.dolphinscheduler.dao.entity.AlertSendStatus;
+public interface DqExecuteResultDao {
-import java.util.List;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-
-public interface AlertSendStatusMapper extends BaseMapper<AlertSendStatus> {
-
- int batchInsert(List<AlertSendStatus> alertSendStatuses);
+ void deleteByWorkflowInstanceId(Integer workflowInstanceId);
}
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/ProcessDefinitionDao.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/ProcessDefinitionDao.java
index e89adf3367..8e009f6bfb 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/ProcessDefinitionDao.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/ProcessDefinitionDao.java
@@ -22,6 +22,7 @@ import org.apache.dolphinscheduler.dao.entity.ProcessInstance;
import org.apache.dolphinscheduler.dao.model.PageListingResult;
import java.util.List;
+import java.util.Optional;
import javax.annotation.Nullable;
@@ -46,4 +47,10 @@ public interface ProcessDefinitionDao {
* @return
*/
List<ProcessDefinition>
queryProcessDefinitionsByCodesAndVersions(List<ProcessInstance>
processInstances);
+
+ Optional<ProcessDefinition> queryByCode(long code);
+
+ void deleteById(Integer workflowDefinitionId);
+
+ void deleteByWorkflowDefinitionCode(long workflowDefinitionCode);
}
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/AlertSendStatusMapper.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/ProcessDefinitionLogDao.java
similarity index 70%
copy from
dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/AlertSendStatusMapper.java
copy to
dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/ProcessDefinitionLogDao.java
index b1a5fea153..7ba19d6892 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/AlertSendStatusMapper.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/ProcessDefinitionLogDao.java
@@ -15,15 +15,9 @@
* limitations under the License.
*/
-package org.apache.dolphinscheduler.dao.mapper;
+package org.apache.dolphinscheduler.dao.repository;
-import org.apache.dolphinscheduler.dao.entity.AlertSendStatus;
+public interface ProcessDefinitionLogDao {
-import java.util.List;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-
-public interface AlertSendStatusMapper extends BaseMapper<AlertSendStatus> {
-
- int batchInsert(List<AlertSendStatus> alertSendStatuses);
+ void deleteByWorkflowDefinitionCode(long workflowDefinitionCode);
}
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/ProcessInstanceDao.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/ProcessInstanceDao.java
index 08eba0a4cc..f9002c823d 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/ProcessInstanceDao.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/ProcessInstanceDao.java
@@ -19,6 +19,8 @@ package org.apache.dolphinscheduler.dao.repository;
import org.apache.dolphinscheduler.dao.entity.ProcessInstance;
+import java.util.List;
+
public interface ProcessInstanceDao {
public int insertProcessInstance(ProcessInstance processInstance);
@@ -31,4 +33,9 @@ public interface ProcessInstanceDao {
* @param processInstance processInstance
*/
public int upsertProcessInstance(ProcessInstance processInstance);
+
+ void deleteByIds(List<Integer> needToDeleteWorkflowInstanceIds);
+
+ void deleteById(Integer workflowInstanceId);
+
}
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/ProcessInstanceMapDao.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/ProcessInstanceMapDao.java
index 5465c6d40d..7f74eaf313 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/ProcessInstanceMapDao.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/ProcessInstanceMapDao.java
@@ -19,6 +19,8 @@ package org.apache.dolphinscheduler.dao.repository;
import org.apache.dolphinscheduler.dao.entity.ProcessInstanceMap;
+import java.util.List;
+
/**
* Process Instance Map DAO
*/
@@ -46,4 +48,7 @@ public interface ProcessInstanceMapDao {
*/
ProcessInstanceMap findWorkProcessMapByParent(Integer parentWorkProcessId,
Integer parentTaskId);
+ List<Integer> querySubWorkflowInstanceIds(int workflowInstanceId);
+
+ void deleteByParentId(int workflowInstanceId);
}
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/AlertSendStatusMapper.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/ProcessTaskRelationLogDao.java
similarity index 71%
copy from
dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/AlertSendStatusMapper.java
copy to
dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/ProcessTaskRelationLogDao.java
index b1a5fea153..1c1ba25783 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/AlertSendStatusMapper.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/ProcessTaskRelationLogDao.java
@@ -15,15 +15,15 @@
* limitations under the License.
*/
-package org.apache.dolphinscheduler.dao.mapper;
+package org.apache.dolphinscheduler.dao.repository;
-import org.apache.dolphinscheduler.dao.entity.AlertSendStatus;
+import org.apache.dolphinscheduler.dao.entity.ProcessTaskRelationLog;
import java.util.List;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+public interface ProcessTaskRelationLogDao {
-public interface AlertSendStatusMapper extends BaseMapper<AlertSendStatus> {
+ List<ProcessTaskRelationLog> findByWorkflowDefinitionCode(long
workflowDefinitionCode);
- int batchInsert(List<AlertSendStatus> alertSendStatuses);
+ void deleteByWorkflowDefinitionCode(long workflowDefinitionCode);
}
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/TaskDefinitionDao.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/TaskDefinitionDao.java
index 9aaed9e576..4dce211eb8 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/TaskDefinitionDao.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/TaskDefinitionDao.java
@@ -20,6 +20,7 @@ package org.apache.dolphinscheduler.dao.repository;
import org.apache.dolphinscheduler.dao.entity.TaskDefinition;
import java.util.List;
+import java.util.Set;
/**
* Task Instance DAO
@@ -41,4 +42,7 @@ public interface TaskDefinitionDao {
*/
TaskDefinition findTaskDefinition(long taskCode, int
taskDefinitionVersion);
+ void deleteByWorkflowDefinitionCodeAndVersion(long workflowDefinitionCode,
int workflowDefinitionVersion);
+
+ void deleteByTaskDefinitionCodes(Set<Long>
needToDeleteTaskDefinitionCodes);
}
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/TaskDefinitionLogDao.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/TaskDefinitionLogDao.java
index 8b6f290f49..b942196c32 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/TaskDefinitionLogDao.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/TaskDefinitionLogDao.java
@@ -21,6 +21,7 @@ import
org.apache.dolphinscheduler.dao.entity.ProcessTaskRelation;
import org.apache.dolphinscheduler.dao.entity.TaskDefinitionLog;
import java.util.List;
+import java.util.Set;
/**
* Task Definition Log DAO
@@ -41,4 +42,5 @@ public interface TaskDefinitionLogDao {
*/
List<TaskDefinitionLog>
getTaskDefineLogListByRelation(List<ProcessTaskRelation> processTaskRelations);
+ void deleteByTaskDefinitionCodes(Set<Long> taskDefinitionCodes);
}
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/AlertSendStatusMapper.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/impl/DqExecuteResultDaoImpl.java
similarity index 56%
copy from
dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/AlertSendStatusMapper.java
copy to
dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/impl/DqExecuteResultDaoImpl.java
index b1a5fea153..f496d92f88 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/AlertSendStatusMapper.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/impl/DqExecuteResultDaoImpl.java
@@ -15,15 +15,22 @@
* limitations under the License.
*/
-package org.apache.dolphinscheduler.dao.mapper;
+package org.apache.dolphinscheduler.dao.repository.impl;
-import org.apache.dolphinscheduler.dao.entity.AlertSendStatus;
+import org.apache.dolphinscheduler.dao.mapper.DqExecuteResultMapper;
+import org.apache.dolphinscheduler.dao.repository.DqExecuteResultDao;
-import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+@Repository
+public class DqExecuteResultDaoImpl implements DqExecuteResultDao {
-public interface AlertSendStatusMapper extends BaseMapper<AlertSendStatus> {
+ @Autowired
+ private DqExecuteResultMapper dqExecuteResultMapper;
- int batchInsert(List<AlertSendStatus> alertSendStatuses);
+ @Override
+ public void deleteByWorkflowInstanceId(Integer workflowInstanceId) {
+ dqExecuteResultMapper.deleteByWorkflowInstanceId(workflowInstanceId);
+ }
}
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/impl/ProcessDefinitionDaoImpl.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/impl/ProcessDefinitionDaoImpl.java
index 8a459991ea..d7398453a0 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/impl/ProcessDefinitionDaoImpl.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/impl/ProcessDefinitionDaoImpl.java
@@ -28,6 +28,7 @@ import
org.apache.dolphinscheduler.dao.repository.ProcessDefinitionDao;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
+import java.util.Optional;
import java.util.stream.Collectors;
import org.springframework.beans.factory.annotation.Autowired;
@@ -79,4 +80,20 @@ public class ProcessDefinitionDaoImpl implements
ProcessDefinitionDao {
return processDefinitions;
}
+
+ @Override
+ public Optional<ProcessDefinition> queryByCode(long code) {
+ return Optional.ofNullable(
+ processDefinitionMapper.queryByCode(code));
+ }
+
+ @Override
+ public void deleteById(Integer workflowDefinitionId) {
+ processDefinitionMapper.deleteById(workflowDefinitionId);
+ }
+
+ @Override
+ public void deleteByWorkflowDefinitionCode(long workflowDefinitionCode) {
+ processDefinitionMapper.deleteByCode(workflowDefinitionCode);
+ }
}
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/AlertSendStatusMapper.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/impl/ProcessDefinitionLogDaoImpl.java
similarity index 54%
copy from
dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/AlertSendStatusMapper.java
copy to
dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/impl/ProcessDefinitionLogDaoImpl.java
index b1a5fea153..47a1747c4f 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/AlertSendStatusMapper.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/impl/ProcessDefinitionLogDaoImpl.java
@@ -15,15 +15,22 @@
* limitations under the License.
*/
-package org.apache.dolphinscheduler.dao.mapper;
+package org.apache.dolphinscheduler.dao.repository.impl;
-import org.apache.dolphinscheduler.dao.entity.AlertSendStatus;
+import org.apache.dolphinscheduler.dao.mapper.ProcessDefinitionLogMapper;
+import org.apache.dolphinscheduler.dao.repository.ProcessDefinitionLogDao;
-import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+@Repository
+public class ProcessDefinitionLogDaoImpl implements ProcessDefinitionLogDao {
-public interface AlertSendStatusMapper extends BaseMapper<AlertSendStatus> {
+ @Autowired
+ private ProcessDefinitionLogMapper processDefinitionLogMapper;
- int batchInsert(List<AlertSendStatus> alertSendStatuses);
+ @Override
+ public void deleteByWorkflowDefinitionCode(long workflowDefinitionCode) {
+
processDefinitionLogMapper.deleteByProcessDefinitionCode(workflowDefinitionCode);
+ }
}
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/impl/ProcessInstanceDaoImpl.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/impl/ProcessInstanceDaoImpl.java
index 51f993bfae..2832e0a3f4 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/impl/ProcessInstanceDaoImpl.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/impl/ProcessInstanceDaoImpl.java
@@ -21,6 +21,10 @@ import
org.apache.dolphinscheduler.dao.entity.ProcessInstance;
import org.apache.dolphinscheduler.dao.mapper.ProcessInstanceMapper;
import org.apache.dolphinscheduler.dao.repository.ProcessInstanceDao;
+import org.apache.commons.collections4.CollectionUtils;
+
+import java.util.List;
+
import lombok.NonNull;
import lombok.extern.slf4j.Slf4j;
@@ -52,4 +56,17 @@ public class ProcessInstanceDaoImpl implements
ProcessInstanceDao {
return insertProcessInstance(processInstance);
}
}
+
+ @Override
+ public void deleteByIds(List<Integer> needToDeleteWorkflowInstanceIds) {
+ if (CollectionUtils.isEmpty(needToDeleteWorkflowInstanceIds)) {
+ return;
+ }
+ processInstanceMapper.deleteBatchIds(needToDeleteWorkflowInstanceIds);
+ }
+
+ @Override
+ public void deleteById(Integer workflowInstanceId) {
+ processInstanceMapper.deleteById(workflowInstanceId);
+ }
}
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/impl/ProcessInstanceMapDaoImpl.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/impl/ProcessInstanceMapDaoImpl.java
index 94dbc075bd..7d30c81ded 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/impl/ProcessInstanceMapDaoImpl.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/impl/ProcessInstanceMapDaoImpl.java
@@ -21,6 +21,8 @@ import
org.apache.dolphinscheduler.dao.entity.ProcessInstanceMap;
import org.apache.dolphinscheduler.dao.mapper.ProcessInstanceMapMapper;
import org.apache.dolphinscheduler.dao.repository.ProcessInstanceMapDao;
+import java.util.List;
+
import lombok.NonNull;
import org.springframework.beans.factory.annotation.Autowired;
@@ -49,4 +51,14 @@ public class ProcessInstanceMapDaoImpl implements
ProcessInstanceMapDao {
public ProcessInstanceMap findWorkProcessMapByParent(Integer
parentWorkProcessId, Integer parentTaskId) {
return processInstanceMapMapper.queryByParentId(parentWorkProcessId,
parentTaskId);
}
+
+ @Override
+ public List<Integer> querySubWorkflowInstanceIds(int workflowInstanceId) {
+ return
processInstanceMapMapper.querySubIdListByParentId(workflowInstanceId);
+ }
+
+ @Override
+ public void deleteByParentId(int workflowInstanceId) {
+ processInstanceMapMapper.deleteByParentId(workflowInstanceId);
+ }
}
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/impl/ProcessInstanceDaoImpl.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/impl/ProcessTaskRelationLogDaoImpl.java
similarity index 52%
copy from
dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/impl/ProcessInstanceDaoImpl.java
copy to
dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/impl/ProcessTaskRelationLogDaoImpl.java
index 51f993bfae..d64f67ad7d 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/impl/ProcessInstanceDaoImpl.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/impl/ProcessTaskRelationLogDaoImpl.java
@@ -17,39 +17,28 @@
package org.apache.dolphinscheduler.dao.repository.impl;
-import org.apache.dolphinscheduler.dao.entity.ProcessInstance;
-import org.apache.dolphinscheduler.dao.mapper.ProcessInstanceMapper;
-import org.apache.dolphinscheduler.dao.repository.ProcessInstanceDao;
+import org.apache.dolphinscheduler.dao.entity.ProcessTaskRelationLog;
+import org.apache.dolphinscheduler.dao.mapper.ProcessTaskRelationLogMapper;
+import org.apache.dolphinscheduler.dao.repository.ProcessTaskRelationLogDao;
-import lombok.NonNull;
-import lombok.extern.slf4j.Slf4j;
+import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
-@Slf4j
@Repository
-public class ProcessInstanceDaoImpl implements ProcessInstanceDao {
+public class ProcessTaskRelationLogDaoImpl implements
ProcessTaskRelationLogDao {
@Autowired
- private ProcessInstanceMapper processInstanceMapper;
+ private ProcessTaskRelationLogMapper processTaskRelationLogMapper;
@Override
- public int insertProcessInstance(ProcessInstance processInstance) {
- return processInstanceMapper.insert(processInstance);
+ public List<ProcessTaskRelationLog> findByWorkflowDefinitionCode(long
workflowDefinitionCode) {
+ return
processTaskRelationLogMapper.queryByProcessCode(workflowDefinitionCode);
}
@Override
- public int updateProcessInstance(ProcessInstance processInstance) {
- return processInstanceMapper.updateById(processInstance);
- }
-
- @Override
- public int upsertProcessInstance(@NonNull ProcessInstance processInstance)
{
- if (processInstance.getId() != null) {
- return updateProcessInstance(processInstance);
- } else {
- return insertProcessInstance(processInstance);
- }
+ public void deleteByWorkflowDefinitionCode(long workflowDefinitionCode) {
+
processTaskRelationLogMapper.deleteByWorkflowDefinitionCode(workflowDefinitionCode);
}
}
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/impl/TaskDefinitionDaoImpl.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/impl/TaskDefinitionDaoImpl.java
index 33b6033454..06b960eb2f 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/impl/TaskDefinitionDaoImpl.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/impl/TaskDefinitionDaoImpl.java
@@ -27,6 +27,9 @@ import
org.apache.dolphinscheduler.dao.mapper.TaskDefinitionLogMapper;
import org.apache.dolphinscheduler.dao.mapper.TaskDefinitionMapper;
import org.apache.dolphinscheduler.dao.repository.TaskDefinitionDao;
+import org.apache.commons.collections4.CollectionUtils;
+
+import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -84,4 +87,18 @@ public class TaskDefinitionDaoImpl implements
TaskDefinitionDao {
return
taskDefinitionLogMapper.queryByDefinitionCodeAndVersion(taskCode,
taskDefinitionVersion);
}
+ @Override
+ public void deleteByWorkflowDefinitionCodeAndVersion(long
workflowDefinitionCode, int workflowDefinitionVersion) {
+
taskDefinitionMapper.deleteByWorkflowDefinitionCodeAndVersion(workflowDefinitionCode,
+ workflowDefinitionVersion);
+ }
+
+ @Override
+ public void deleteByTaskDefinitionCodes(Set<Long>
needToDeleteTaskDefinitionCodes) {
+ if (CollectionUtils.isEmpty(needToDeleteTaskDefinitionCodes)) {
+ return;
+ }
+ taskDefinitionMapper.deleteByBatchCodes(new
ArrayList<>(needToDeleteTaskDefinitionCodes));
+ }
+
}
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/impl/TaskDefinitionLogDaoImpl.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/impl/TaskDefinitionLogDaoImpl.java
index efd000a410..8daef54308 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/impl/TaskDefinitionLogDaoImpl.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/impl/TaskDefinitionLogDaoImpl.java
@@ -24,6 +24,8 @@ import
org.apache.dolphinscheduler.dao.mapper.TaskDefinitionLogMapper;
import org.apache.dolphinscheduler.dao.repository.TaskDefinitionDao;
import org.apache.dolphinscheduler.dao.repository.TaskDefinitionLogDao;
+import org.apache.commons.collections4.CollectionUtils;
+
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
@@ -88,4 +90,12 @@ public class TaskDefinitionLogDaoImpl implements
TaskDefinitionLogDao {
});
return taskDefinitionLogs;
}
+
+ @Override
+ public void deleteByTaskDefinitionCodes(Set<Long> taskDefinitionCodes) {
+ if (CollectionUtils.isEmpty(taskDefinitionCodes)) {
+ return;
+ }
+
taskDefinitionLogMapper.deleteByTaskDefinitionCodes(taskDefinitionCodes);
+ }
}
diff --git
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/AlertMapper.xml
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/AlertMapper.xml
index a9054986d3..e56afa830e 100644
---
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/AlertMapper.xml
+++
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/AlertMapper.xml
@@ -24,6 +24,12 @@
process_definition_code, process_instance_id, alert_type
</sql>
+ <select id="selectByWorkflowInstanceId"
resultType="org.apache.dolphinscheduler.dao.entity.Alert">
+ select
+ <include refid="baseSql"/>
+ from t_ds_alert
+ where process_instance_id = #{workflowInstanceId}
+ </select>
<insert id="insertAlertWhenServerCrash">
insert into t_ds_alert(sign, title, content, alert_status,
warning_type, log, alertgroup_id, create_time,
diff --git
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/AlertSendStatusMapper.xml
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/AlertSendStatusMapper.xml
index 248d7b0573..f27c55d70b 100644
---
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/AlertSendStatusMapper.xml
+++
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/AlertSendStatusMapper.xml
@@ -32,4 +32,13 @@
</insert>
+ <delete id="deleteByAlertIds">
+ delete
+ from t_ds_alert_send_status
+ where alert_id in
+ <foreach collection="alertIds" item="alertId" separator="," open="("
close=")">
+ #{alertId}
+ </foreach>
+ </delete>
+
</mapper>
diff --git
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/DqExecuteResultMapper.xml
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/DqExecuteResultMapper.xml
index 5ca517e616..b19da7e0b3 100644
---
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/DqExecuteResultMapper.xml
+++
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/DqExecuteResultMapper.xml
@@ -89,17 +89,23 @@
a.user_id,
a.comparison_type,
a.error_output_path,
- b.name as process_definition_name,
- e.name as process_instance_name,
- c.name as task_name,
+ b.name as process_definition_name,
+ e.name as process_instance_name,
+ c.name as task_name,
cp.type as comparison_type_name,
d.user_name
FROM t_ds_dq_execute_result a
- left join t_ds_process_definition b on a.process_definition_id = b.id
- left join t_ds_task_instance c on a.task_instance_id = c.id
- left join t_ds_process_instance e on a.process_instance_id = e.id
- left join t_ds_user d on d.id = a.user_id
- left join t_ds_dq_comparison_type cp on cp.id = a.comparison_type
- where task_instance_id = #{taskInstanceId}
+ left join t_ds_process_definition b on
a.process_definition_id = b.id
+ left join t_ds_task_instance c on a.task_instance_id = c.id
+ left join t_ds_process_instance e on a.process_instance_id =
e.id
+ left join t_ds_user d on d.id = a.user_id
+ left join t_ds_dq_comparison_type cp on cp.id =
a.comparison_type
+ where task_instance_id = #{taskInstanceId}
</select>
+
+ <delete id="deleteByWorkflowInstanceId">
+ delete
+ from t_ds_dq_execute_result
+ where process_instance_id = #{workflowInstanceId}
+ </delete>
</mapper>
diff --git
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionLogMapper.xml
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionLogMapper.xml
index 75a35ad1a3..9d93e858a7 100644
---
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionLogMapper.xml
+++
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionLogMapper.xml
@@ -82,4 +82,10 @@
where code = #{code}
and version = #{version}
</delete>
+
+ <delete id="deleteByProcessDefinitionCode">
+ delete
+ from t_ds_process_definition_log
+ where code = #{workflowDefinitionCode}
+ </delete>
</mapper>
diff --git
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessInstanceMapMapper.xml
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessInstanceMapMapper.xml
index 249fb8669f..2aec7739b9 100644
---
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessInstanceMapMapper.xml
+++
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessInstanceMapMapper.xml
@@ -44,4 +44,10 @@
from t_ds_relation_process_instance
where parent_process_instance_id = #{parentInstanceId}
</select>
+
+ <delete id="querySubIdListByParentId">
+ delete
+ from t_ds_relation_process_instance
+ where parent_process_instance_id = #{parentWorkflowInstanceId}
+ </delete>
</mapper>
diff --git
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessTaskRelationLogMapper.xml
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessTaskRelationLogMapper.xml
index c3c0579d76..6fae94d3a8 100644
---
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessTaskRelationLogMapper.xml
+++
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessTaskRelationLogMapper.xml
@@ -70,4 +70,16 @@
and post_task_code = #{processTaskRelation.postTaskCode}
and post_task_version = #{processTaskRelation.postTaskVersion}
</select>
+
+ <select id="queryByProcessCode"
resultType="org.apache.dolphinscheduler.dao.entity.ProcessTaskRelationLog">
+ select
+ <include refid="baseSql"/>
+ from t_ds_process_task_relation_log
+ WHERE process_definition_code = #{workflowDefinitionCode}
+ </select>
+ <delete id="deleteByWorkflowDefinitionCode">
+ delete
+ from t_ds_process_task_relation_log
+ WHERE process_definition_code = #{workflowDefinitionCode}
+ </delete>
</mapper>
diff --git
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessTaskRelationMapper.xml
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessTaskRelationMapper.xml
index c1ad2fac34..2da8514c55 100644
---
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessTaskRelationMapper.xml
+++
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessTaskRelationMapper.xml
@@ -224,16 +224,20 @@
<select id="queryTaskCodeByTaskName" resultType="java.lang.Long">
select r.post_task_code
from t_ds_process_task_relation r
- left join t_ds_task_definition d on d.code = r.post_task_code
+ left join t_ds_task_definition d on d.code = r.post_task_code
where r.process_definition_code = #{workflowCode}
- and d.name = #{taskName}
+ and d.name = #{taskName}
</select>
<update id="updateProcessTaskRelationTaskVersion">
- update t_ds_process_task_relation
- set
- pre_task_version=#{processTaskRelation.preTaskVersion},
- post_task_version=#{processTaskRelation.postTaskVersion}
- where
- id = #{processTaskRelation.id}
+ update t_ds_process_task_relation
+ set pre_task_version=#{processTaskRelation.preTaskVersion},
+ post_task_version=#{processTaskRelation.postTaskVersion}
+ where id = #{processTaskRelation.id}
</update>
+
+ <delete id="deleteByWorkflowDefinitionCode">
+ delete
+ from t_ds_process_task_relation
+ where process_definition_code = #{workflowDefinitionCode} and
process_definition_version = #{workflowDefinitionVersion}
+ </delete>
</mapper>
diff --git
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/TaskDefinitionLogMapper.xml
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/TaskDefinitionLogMapper.xml
index 756213a336..14c71f83c5 100644
---
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/TaskDefinitionLogMapper.xml
+++
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/TaskDefinitionLogMapper.xml
@@ -60,7 +60,8 @@
#{taskDefinitionLog.flag},#{taskDefinitionLog.isCache},#{taskDefinitionLog.taskPriority},#{taskDefinitionLog.workerGroup},#{taskDefinitionLog.environmentCode},
#{taskDefinitionLog.failRetryTimes},#{taskDefinitionLog.failRetryInterval},#{taskDefinitionLog.timeoutFlag},#{taskDefinitionLog.timeoutNotifyStrategy},
#{taskDefinitionLog.timeout},#{taskDefinitionLog.delayTime},#{taskDefinitionLog.resourceIds},#{taskDefinitionLog.operator},#{taskDefinitionLog.operateTime},
- #{taskDefinitionLog.createTime},#{taskDefinitionLog.updateTime},
#{taskDefinitionLog.taskGroupId},#{taskDefinitionLog.taskGroupPriority},
+ #{taskDefinitionLog.createTime},#{taskDefinitionLog.updateTime},
+
#{taskDefinitionLog.taskGroupId},#{taskDefinitionLog.taskGroupPriority},
#{taskDefinitionLog.cpuQuota},#{taskDefinitionLog.memoryMax},#{taskDefinitionLog.taskExecuteType})
</foreach>
</insert>
@@ -70,7 +71,8 @@
where code = #{code}
and version = #{version}
</delete>
- <select id="queryTaskDefinitionVersionsPaging"
resultType="org.apache.dolphinscheduler.dao.entity.TaskDefinitionLog">
+ <select id="queryTaskDefinitionVersionsPaging"
+
resultType="org.apache.dolphinscheduler.dao.entity.TaskDefinitionLog">
select
<include refid="baseSql"/>
from t_ds_task_definition_log
@@ -80,4 +82,12 @@
</if>
order by version desc
</select>
+ <delete id="deleteByTaskDefinitionCodes">
+ delete
+ from t_ds_task_definition_log
+ where code in
+ <foreach collection="taskDefinitionCodes" item="taskDefinitionCode"
separator="," open="(" close=")">
+ #{taskDefinitionCode}
+ </foreach>
+ </delete>
</mapper>