You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by le...@apache.org on 2021/01/29 10:11:55 UTC

[incubator-dolphinscheduler] branch json_split updated: [Feature][JsonSplit] add task query (#4619)

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

leonbao pushed a commit to branch json_split
in repository https://gitbox.apache.org/repos/asf/incubator-dolphinscheduler.git


The following commit(s) were added to refs/heads/json_split by this push:
     new 47e620f  [Feature][JsonSplit] add task query (#4619)
47e620f is described below

commit 47e620fbc98b42246273e55f0ca66b4fe1227240
Author: JinyLeeChina <42...@users.noreply.github.com>
AuthorDate: Fri Jan 29 18:11:46 2021 +0800

    [Feature][JsonSplit] add task query (#4619)
    
    * add task query
    
    * modify codestyle
    
    Co-authored-by: JinyLeeChina <29...@qq.com>
---
 .../apache/dolphinscheduler/api/enums/Status.java  |  2 +-
 .../api/service/ProcessTaskRelationService.java    |  4 +-
 .../api/service/TaskDefinitionService.java         | 17 ++++--
 .../service/impl/ProcessDefinitionServiceImpl.java |  2 +-
 .../impl/ProcessTaskRelationServiceImpl.java       | 60 ++++++++++++++++++----
 .../service/impl/TaskDefinitionServiceImpl.java    | 34 ++++++++++--
 .../dao/mapper/TaskDefinitionMapper.java           | 18 +++----
 .../dao/mapper/TaskDefinitionMapper.xml            | 19 +++----
 .../ui-licenses/LICENSE-@form-create-element-ui    |  2 +-
 .../ui-licenses/LICENSE-@form-create-element-ui    | 21 --------
 10 files changed, 114 insertions(+), 65 deletions(-)

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 6605154..33b514b 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 56ff742..9117e72 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<String, Object> 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 4f96001..4c1f16c 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<String, Object> 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<String, Object> 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 c40a2cb..30f5283 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 8b63a82..463117d 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<String, Object> createProcessTaskRelation(User loginUser,
                                                          String name,
-                                                         Long projectCode,
+                                                         String projectName,
                                                          Long processDefinitionCode,
                                                          Long preTaskCode,
                                                          Long postTaskCode,
                                                          String conditionType,
                                                          String conditionParams) {
         Map<String, Object> result = new HashMap<>();
-        // TODO check projectCode
-        // TODO check processDefinitionCode
-        // TODO check preTaskCode and postTaskCode
+        Project project = projectMapper.queryByName(projectName);
+        // check project auth
+        Map<String, Object> 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<String, Object> 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 4193cb0..7da467f 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<String, Object> 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<String, Object> queryTaskDefinitionByName(User loginUser, String projectName, String taskName) {
+        Map<String, Object> result = new HashMap<>();
+        Project project = projectMapper.queryByName(projectName);
+
+        Map<String, Object> 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 f1e9a78..6e68fc5 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<TaskDefinition> {
 
     /**
-     * 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 1456789..055a70a 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
     </sql>
-    <select id="verifyByDefineName" resultType="org.apache.dolphinscheduler.dao.entity.TaskDefinition">
+    <select id="queryByDefinitionName" resultType="org.apache.dolphinscheduler.dao.entity.TaskDefinition">
         select
         <include refid="baseSql"/>
         from t_ds_task_definition
         WHERE projectCode = #{projectCode}
         and `name` = #{taskDefinitionName}
     </select>
-    <select id="queryByDefinitionName" resultType="org.apache.dolphinscheduler.dao.entity.TaskDefinition">
-        select td.id, td.code, td.name, td.version, td.description, td.project_code, td.user_id, td.task_type, td.task_params,
-        td.flag, td.task_priority, td.worker_group, td.fail_retry_times, td.fail_retry_interval, td.timeout_flag,
-        td.timeout_notify_strategy, td.timeout, td.resource_ids, td.create_time, td.update_time, u.user_name,p.name as project_name
-        from t_ds_task_definition td
-        JOIN t_ds_user u ON td.user_id = u.id
-        JOIN  t_ds_project p ON td.project_code = p.code
-        WHERE p.code = #{projectCode}
-        and td.name = #{taskDefinitionName}
-    </select>
-
     <select id="queryAllDefinitionList" resultType="org.apache.dolphinscheduler.dao.entity.TaskDefinition">
         select
         <include refid="baseSql"/>
@@ -81,6 +70,12 @@
         JOIN t_ds_project p ON td.project_code = p.code
         WHERE td.id = #{taskDefinitionId}
     </select>
+    <select id="queryByDefinitionCode" resultType="org.apache.dolphinscheduler.dao.entity.TaskDefinition">
+        select
+        <include refid="baseSql"/>
+        from t_ds_task_definition
+        where code = #{taskDefinitionCode}
+    </select>
     <select id="listResources" resultType="java.util.HashMap">
         SELECT id,resource_ids
         FROM t_ds_task_definition
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-@form-create-element-ui b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-@form-create-element-ui
index 5609421..468a05f 100644
--- a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-@form-create-element-ui
+++ b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-@form-create-element-ui
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
+SOFTWARE. 
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-@form-create-element-ui  b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-@form-create-element-ui 
deleted file mode 100644
index 468a05f..0000000
--- a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-@form-create-element-ui 	
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2018 xaboy
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.