JinyLeeChina commented on a change in pull request #7043:
URL: https://github.com/apache/dolphinscheduler/pull/7043#discussion_r758297728
##########
File path:
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessTaskRelationServiceImpl.java
##########
@@ -191,15 +192,57 @@ private ProcessTaskRelationLog
setRelationLog(ProcessDefinition processDefinitio
/**
* delete process task relation
*
- * @param loginUser login user
- * @param projectCode project code
+ * @param loginUser login user
+ * @param projectCode project code
* @param processDefinitionCode process definition code
- * @param taskCode the post task code
+ * @param taskCode the post task code
* @return delete result code
*/
@Override
public Map<String, Object> deleteTaskProcessRelation(User loginUser, long
projectCode, long processDefinitionCode, long taskCode) {
- return null;
+ Project project = projectMapper.queryByCode(projectCode);
+ //check user access for project
+ Map<String, Object> result =
projectService.checkProjectAndAuth(loginUser, project, projectCode);
+ if (result.get(Constants.STATUS) != Status.SUCCESS) {
+ return result;
+ }
+ if (taskCode == 0) {
+ putMsg(result, Status.DELETE_TASK_PROCESS_RELATION_ERROR);
+ return result;
+ }
+ List<ProcessTaskRelation> downstreamList =
processTaskRelationMapper.queryByCode(projectCode, processDefinitionCode,
taskCode, 0L);
+ if (CollectionUtils.isNotEmpty(downstreamList)) {
+ Set<Long> postTaskCodes = downstreamList
+ .stream()
+ .map(ProcessTaskRelation::getPostTaskCode)
+ .collect(Collectors.toSet());
+ putMsg(result, Status.TASK_HAS_DOWNSTREAM,
org.apache.commons.lang.StringUtils.join(postTaskCodes, ","));
+ return result;
+ }
+
+ ProcessTaskRelationLog processTaskRelationLog = new
ProcessTaskRelationLog();
+ processTaskRelationLog.setProjectCode(projectCode);
+ processTaskRelationLog.setPreTaskCode(taskCode);
+ processTaskRelationLog.setProcessDefinitionCode(processDefinitionCode);
+ int deleteRelation =
processTaskRelationMapper.deleteRelation(processTaskRelationLog);
+ if (0 == deleteRelation) {
+ putMsg(result, Status.DELETE_TASK_PROCESS_RELATION_ERROR);
+ }
+
+ TaskDefinition taskDefinition =
taskDefinitionMapper.queryByCode(taskCode);
+ if (null == taskDefinition) {
+ putMsg(result, Status.DATA_IS_NULL, "taskDefinition");
+ return result;
+ }
+ if (TaskType.CONDITIONS.getDesc().equals(taskDefinition.getTaskType())
+ ||
TaskType.DEPENDENT.getDesc().equals(taskDefinition.getTaskType())
+ ||
TaskType.SUB_PROCESS.getDesc().equals(taskDefinition.getTaskType())) {
+ int deleteTaskDefinition =
taskDefinitionMapper.deleteByCode(taskCode);
+ if (0 == deleteTaskDefinition) {
+ putMsg(result, Status.DELETE_TASK_PROCESS_RELATION_ERROR);
Review comment:
I think transaction control should be added here
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]