From 47e620fbc98b42246273e55f0ca66b4fe1227240 Mon Sep 17 00:00:00 2001 From: JinyLeeChina <42576980+JinyLeeChina@users.noreply.github.com> Date: Fri, 29 Jan 2021 18:11:46 +0800 Subject: [PATCH] [Feature][JsonSplit] add task query (#4619) * add task query * modify codestyle Co-authored-by: JinyLeeChina <297062848@qq.com> --- .../dolphinscheduler/api/enums/Status.java | 2 +- .../service/ProcessTaskRelationService.java | 4 +- .../api/service/TaskDefinitionService.java | 17 ++++-- .../impl/ProcessDefinitionServiceImpl.java | 2 +- .../impl/ProcessTaskRelationServiceImpl.java | 60 ++++++++++++++++--- .../impl/TaskDefinitionServiceImpl.java | 34 ++++++++++- .../dao/mapper/TaskDefinitionMapper.java | 18 +++--- .../dao/mapper/TaskDefinitionMapper.xml | 19 +++--- .../LICENSE-@form-create-element-ui | 2 +- .../LICENSE-@form-create-element-ui | 21 ------- 10 files changed, 114 insertions(+), 65 deletions(-) delete mode 100644 dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-@form-create-element-ui diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java index 6605154e42..33b514b7e6 100644 --- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java +++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java @@ -252,7 +252,7 @@ public enum Status { EXPORT_PROCESS_DEFINE_BY_ID_ERROR(50028, "export process definition by id error", "导出工作流定义错误"), BATCH_EXPORT_PROCESS_DEFINE_BY_IDS_ERROR(50028,"batch export process definition by ids error", "批量导出工作流定义错误"), IMPORT_PROCESS_DEFINE_ERROR(50029, "import process definition error", "导入工作流定义错误"), - + TASK_DEFINE_NOT_EXIST(50030, "task definition {0} does not exist", "任务定义[{0}]不存在"), HDFS_NOT_STARTUP(60001, "hdfs not startup", "hdfs未启用"), /** 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 56ff7420b2..9117e729e3 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 @@ -31,7 +31,7 @@ public interface ProcessTaskRelationService { * * @param loginUser login user * @param name relation name - * @param projectCode process code + * @param projectName process name * @param processDefinitionCode process definition code * @param preTaskCode pre task code * @param postTaskCode post task code @@ -41,7 +41,7 @@ public interface ProcessTaskRelationService { */ Map createProcessTaskRelation(User loginUser, String name, - Long projectCode, + String projectName, Long processDefinitionCode, Long preTaskCode, Long postTaskCode, 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 4f96001701..4c1f16ce1b 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 @@ -17,13 +17,10 @@ package org.apache.dolphinscheduler.api.service; -import org.apache.dolphinscheduler.common.utils.SnowFlakeUtils.SnowFlakeException; import org.apache.dolphinscheduler.dao.entity.User; import java.util.Map; -import com.fasterxml.jackson.core.JsonProcessingException; - /** * task definition service */ @@ -35,10 +32,20 @@ public interface TaskDefinitionService { * @param loginUser login user * @param projectName project name * @param taskDefinitionJson task definition json - * @throws JsonProcessingException JsonProcessingException */ Map createTaskDefinition(User loginUser, String projectName, - String taskDefinitionJson) throws JsonProcessingException, SnowFlakeException; + String taskDefinitionJson); + + /** + * query task definition + * + * @param loginUser login user + * @param projectName project name + * @param taskName task name + */ + Map queryTaskDefinitionByName(User loginUser, + String projectName, + String taskName); } 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 c40a2cbba1..30f5283e6d 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 @@ -253,7 +253,7 @@ public class ProcessDefinitionServiceImpl extends BaseService implements processTaskRelationService.createProcessTaskRelation( loginUser, name, - project.getCode(), + projectName, processDefinitionCode, 0L, 0L, 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 8b63a8215f..463117d87e 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 @@ -20,12 +20,20 @@ package org.apache.dolphinscheduler.api.service.impl; import org.apache.dolphinscheduler.api.enums.Status; import org.apache.dolphinscheduler.api.service.BaseService; import org.apache.dolphinscheduler.api.service.ProcessTaskRelationService; +import org.apache.dolphinscheduler.api.service.ProjectService; +import org.apache.dolphinscheduler.common.Constants; import org.apache.dolphinscheduler.common.enums.ConditionType; +import org.apache.dolphinscheduler.dao.entity.ProcessDefinition; import org.apache.dolphinscheduler.dao.entity.ProcessTaskRelation; import org.apache.dolphinscheduler.dao.entity.ProcessTaskRelationLog; +import org.apache.dolphinscheduler.dao.entity.Project; +import org.apache.dolphinscheduler.dao.entity.TaskDefinition; import org.apache.dolphinscheduler.dao.entity.User; +import org.apache.dolphinscheduler.dao.mapper.ProcessDefinitionMapper; import org.apache.dolphinscheduler.dao.mapper.ProcessTaskRelationLogMapper; import org.apache.dolphinscheduler.dao.mapper.ProcessTaskRelationMapper; +import org.apache.dolphinscheduler.dao.mapper.ProjectMapper; +import org.apache.dolphinscheduler.dao.mapper.TaskDefinitionMapper; import java.util.Date; import java.util.HashMap; @@ -46,8 +54,14 @@ public class ProcessTaskRelationServiceImpl extends BaseService implements private static final Logger logger = LoggerFactory.getLogger(ProcessTaskRelationServiceImpl.class); - //@Autowired - //private ProjectMapper projectMapper; + @Autowired + private ProjectMapper projectMapper; + + @Autowired + private ProjectService projectService; + + @Autowired + private ProcessDefinitionMapper processDefineMapper; @Autowired private ProcessTaskRelationMapper processTaskRelationMapper; @@ -55,12 +69,15 @@ public class ProcessTaskRelationServiceImpl extends BaseService implements @Autowired private ProcessTaskRelationLogMapper processTaskRelationLogMapper; + @Autowired + private TaskDefinitionMapper taskDefinitionMapper; + /** * create process task relation * * @param loginUser login user * @param name relation name - * @param projectCode process code + * @param projectName process name * @param processDefinitionCode process definition code * @param preTaskCode pre task code * @param postTaskCode post task code @@ -72,20 +89,39 @@ public class ProcessTaskRelationServiceImpl extends BaseService implements @Override public Map createProcessTaskRelation(User loginUser, String name, - Long projectCode, + String projectName, Long processDefinitionCode, Long preTaskCode, Long postTaskCode, String conditionType, String conditionParams) { Map result = new HashMap<>(); - // TODO check projectCode - // TODO check processDefinitionCode - // TODO check preTaskCode and postTaskCode + Project project = projectMapper.queryByName(projectName); + // check project auth + Map checkResult = projectService.checkProjectAndAuth(loginUser, project, projectName); + Status resultStatus = (Status) checkResult.get(Constants.STATUS); + if (resultStatus != Status.SUCCESS) { + return checkResult; + } + // check processDefinitionCode + ProcessDefinition processDefinition = processDefineMapper.queryByCode(processDefinitionCode); + if (processDefinition == null) { + putMsg(result, Status.PROCESS_DEFINE_NOT_EXIST, processDefinitionCode); + return result; + } + // check preTaskCode and postTaskCode + checkTaskDefinitionCode(result, preTaskCode); + if (postTaskCode > 0) { + checkTaskDefinitionCode(result, postTaskCode); + } + resultStatus = (Status) result.get(Constants.STATUS); + if (resultStatus != Status.SUCCESS) { + return result; + } Date now = new Date(); ProcessTaskRelation processTaskRelation = new ProcessTaskRelation(name, 1, - projectCode, + project.getCode(), processDefinitionCode, preTaskCode, postTaskCode, @@ -104,5 +140,11 @@ public class ProcessTaskRelationServiceImpl extends BaseService implements putMsg(result, Status.SUCCESS); return result; } -} + private void checkTaskDefinitionCode(Map result, Long taskCode) { + TaskDefinition taskDefinition = taskDefinitionMapper.queryByDefinitionCode(taskCode); + if (taskDefinition == null) { + putMsg(result, Status.TASK_DEFINE_NOT_EXIST, taskCode); + } + } +} 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 4193cb05aa..7da467f32a 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 @@ -84,7 +84,7 @@ public class TaskDefinitionServiceImpl extends BaseService implements * @param projectName project name * @param taskDefinitionJson task definition json */ - @Transactional + @Transactional(rollbackFor = Exception.class) @Override public Map createTaskDefinition(User loginUser, String projectName, @@ -117,7 +117,7 @@ public class TaskDefinitionServiceImpl extends BaseService implements logger.error("Task code get error, ", e); } if (code == 0L) { - putMsg(result, Status.INTERNAL_SERVER_ERROR_ARGS);// TODO code message + putMsg(result, Status.INTERNAL_SERVER_ERROR_ARGS, "Error generating task definition code"); return result; } Date now = new Date(); @@ -125,7 +125,7 @@ public class TaskDefinitionServiceImpl extends BaseService implements taskNode.getName(), 1, taskNode.getDesc(), - 0L, // TODO project.getCode() + project.getCode(), loginUser.getId(), TaskType.of(taskNode.getType()), taskNode.getParams(), @@ -176,5 +176,33 @@ public class TaskDefinitionServiceImpl extends BaseService implements return StringUtils.join(resourceIds, ","); } + /** + * query task definition + * + * @param loginUser login user + * @param projectName project name + * @param taskName task name + */ + @Override + public Map queryTaskDefinitionByName(User loginUser, String projectName, String taskName) { + Map result = new HashMap<>(); + Project project = projectMapper.queryByName(projectName); + + Map checkResult = projectService.checkProjectAndAuth(loginUser, project, projectName); + Status resultStatus = (Status) checkResult.get(Constants.STATUS); + if (resultStatus != Status.SUCCESS) { + return checkResult; + } + + TaskDefinition taskDefinition = taskDefinitionMapper.queryByDefinitionName(project.getCode(), taskName); + if (taskDefinition == null) { + putMsg(result, Status.TASK_DEFINE_NOT_EXIST, taskName); + } else { + result.put(Constants.DATA_LIST, taskDefinition); + putMsg(result, Status.SUCCESS); + } + return result; + } + } 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 f1e9a781c1..6e68fc5345 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 @@ -34,32 +34,30 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; public interface TaskDefinitionMapper extends BaseMapper { /** - * verify task definition by name + * query task definition by name * * @param projectCode projectCode * @param name name * @return task definition */ - TaskDefinition verifyByDefineName(@Param("projectCode") Long projectCode, + TaskDefinition queryByDefinitionName(@Param("projectCode") Long projectCode, @Param("taskDefinitionName") String name); /** - * query task definition by name + * query task definition by id * - * @param projectCode projectCode - * @param name name + * @param taskDefinitionId taskDefinitionId * @return task definition */ - TaskDefinition queryByDefinitionName(@Param("projectCode") Long projectCode, - @Param("taskDefinitionName") String name); + TaskDefinition queryByDefinitionId(@Param("taskDefinitionId") int taskDefinitionId); /** - * query task definition by id + * query task definition by code * - * @param taskDefinitionId taskDefinitionId + * @param taskDefinitionCode taskDefinitionCode * @return task definition */ - TaskDefinition queryByDefinitionId(@Param("taskDefinitionId") int taskDefinitionId); + TaskDefinition queryByDefinitionCode(@Param("taskDefinitionCode") Long taskDefinitionCode); /** * query all task definition list diff --git a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/TaskDefinitionMapper.xml b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/TaskDefinitionMapper.xml index 1456789c22..055a70ab13 100644 --- a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/TaskDefinitionMapper.xml +++ b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/TaskDefinitionMapper.xml @@ -23,24 +23,13 @@ worker_group, fail_retry_times, fail_retry_interval, timeout_flag, timeout_notify_strategy, timeout, resource_ids, create_time, update_time - select from t_ds_task_definition WHERE projectCode = #{projectCode} and `name` = #{taskDefinitionName} - - +