You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by we...@apache.org on 2021/08/15 10:54:59 UTC

[dolphinscheduler] branch json_split_two updated: [Feature][JsonSplit-api] fix api run error (#5989)

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

wenhemin pushed a commit to branch json_split_two
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git


The following commit(s) were added to refs/heads/json_split_two by this push:
     new 9ca51cf  [Feature][JsonSplit-api] fix api run error (#5989)
9ca51cf is described below

commit 9ca51cf0e6a108923a703097ee74a41bdcb6404e
Author: JinyLeeChina <42...@users.noreply.github.com>
AuthorDate: Sun Aug 15 18:54:49 2021 +0800

    [Feature][JsonSplit-api] fix api run error (#5989)
    
    * fix api run error
    
    * fix ut
    
    Co-authored-by: JinyLeeChina <29...@qq.com>
---
 .../controller/ProcessDefinitionController.java    |  8 +--
 .../api/controller/ProcessInstanceController.java  |  4 +-
 .../api/controller/ProjectController.java          |  2 +-
 .../api/controller/TaskDefinitionController.java   | 30 +++++++++--
 .../api/service/TaskDefinitionService.java         | 10 ++++
 .../service/impl/ProcessDefinitionServiceImpl.java | 12 ++++-
 .../service/impl/TaskDefinitionServiceImpl.java    | 48 ++++++++++++++----
 .../api/service/TaskDefinitionServiceImplTest.java | 59 +++++++++++++---------
 .../dao/entity/ProcessDefinition.java              |  6 +--
 .../dao/mapper/ProcessDefinitionLogMapper.java     | 29 +++++------
 .../dao/mapper/ProcessDefinitionLogMapper.xml      | 14 ++---
 .../dao/mapper/ProcessTaskRelationLogMapper.xml    |  8 +--
 .../dao/mapper/ProcessTaskRelationMapper.xml       |  6 +--
 .../service/process/ProcessService.java            |  2 +-
 14 files changed, 156 insertions(+), 82 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 76d6626..a4a31fd 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
@@ -269,8 +269,8 @@ public class ProcessDefinitionController extends BaseController {
      */
     @ApiOperation(value = "queryVersions", notes = "QUERY_PROCESS_DEFINITION_VERSIONS_NOTES")
     @ApiImplicitParams({
-        @ApiImplicitParam(name = "pageNo", value = "PAGE_NO", required = true, dataType = "Int", example = "100"),
-        @ApiImplicitParam(name = "pageSize", value = "PAGE_SIZE", required = true, dataType = "Int", example = "100"),
+        @ApiImplicitParam(name = "pageNo", value = "PAGE_NO", required = true, dataType = "Int", example = "1"),
+        @ApiImplicitParam(name = "pageSize", value = "PAGE_SIZE", required = true, dataType = "Int", example = "10"),
         @ApiImplicitParam(name = "processDefinitionCode", value = "PROCESS_DEFINITION_CODE", required = true, dataType = "Long", example = "1")
     })
     @GetMapping(value = "/versions")
@@ -448,10 +448,10 @@ public class ProcessDefinitionController extends BaseController {
      */
     @ApiOperation(value = "queryListPaging", notes = "QUERY_PROCESS_DEFINITION_LIST_PAGING_NOTES")
     @ApiImplicitParams({
-        @ApiImplicitParam(name = "pageNo", value = "PAGE_NO", required = true, dataType = "Int", example = "100"),
+        @ApiImplicitParam(name = "pageNo", value = "PAGE_NO", required = true, dataType = "Int", example = "1"),
         @ApiImplicitParam(name = "searchVal", value = "SEARCH_VAL", required = false, type = "String"),
         @ApiImplicitParam(name = "userId", value = "USER_ID", required = false, dataType = "Int", example = "100"),
-        @ApiImplicitParam(name = "pageSize", value = "PAGE_SIZE", required = true, dataType = "Int", example = "100")
+        @ApiImplicitParam(name = "pageSize", value = "PAGE_SIZE", required = true, dataType = "Int", example = "10")
     })
     @GetMapping(value = "/list-paging")
     @ResponseStatus(HttpStatus.OK)
diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ProcessInstanceController.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ProcessInstanceController.java
index a9c9482..089eb03 100644
--- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ProcessInstanceController.java
+++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ProcessInstanceController.java
@@ -104,8 +104,8 @@ public class ProcessInstanceController extends BaseController {
         @ApiImplicitParam(name = "host", value = "HOST", type = "String"),
         @ApiImplicitParam(name = "startDate", value = "START_DATE", type = "String"),
         @ApiImplicitParam(name = "endDate", value = "END_DATE", type = "String"),
-        @ApiImplicitParam(name = "pageNo", value = "PAGE_NO", required = true, dataType = "Int", example = "100"),
-        @ApiImplicitParam(name = "pageSize", value = "PAGE_SIZE", required = true, dataType = "Int", example = "100")
+        @ApiImplicitParam(name = "pageNo", value = "PAGE_NO", required = true, dataType = "Int", example = "1"),
+        @ApiImplicitParam(name = "pageSize", value = "PAGE_SIZE", required = true, dataType = "Int", example = "10")
     })
     @GetMapping(value = "list-paging")
     @ResponseStatus(HttpStatus.OK)
diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ProjectController.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ProjectController.java
index 0d30d07..665555a 100644
--- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ProjectController.java
+++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ProjectController.java
@@ -149,7 +149,7 @@ public class ProjectController extends BaseController {
     @ApiOperation(value = "queryProjectListPaging", notes = "QUERY_PROJECT_LIST_PAGING_NOTES")
     @ApiImplicitParams({
         @ApiImplicitParam(name = "searchVal", value = "SEARCH_VAL", dataType = "String"),
-        @ApiImplicitParam(name = "pageSize", value = "PAGE_SIZE", required = true, dataType = "Int", example = "20"),
+        @ApiImplicitParam(name = "pageSize", value = "PAGE_SIZE", required = true, dataType = "Int", example = "10"),
         @ApiImplicitParam(name = "pageNo", value = "PAGE_NO", required = true, dataType = "Int", example = "1")
     })
     @GetMapping(value = "/list-paging")
diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/TaskDefinitionController.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/TaskDefinitionController.java
index 581c233..5bc4f2a 100644
--- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/TaskDefinitionController.java
+++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/TaskDefinitionController.java
@@ -20,6 +20,7 @@ package org.apache.dolphinscheduler.api.controller;
 import static org.apache.dolphinscheduler.api.enums.Status.CREATE_TASK_DEFINITION_ERROR;
 import static org.apache.dolphinscheduler.api.enums.Status.DELETE_TASK_DEFINE_BY_CODE_ERROR;
 import static org.apache.dolphinscheduler.api.enums.Status.DELETE_TASK_DEFINITION_VERSION_ERROR;
+import static org.apache.dolphinscheduler.api.enums.Status.LOGIN_USER_QUERY_PROJECT_LIST_PAGING_ERROR;
 import static org.apache.dolphinscheduler.api.enums.Status.QUERY_DETAIL_OF_TASK_DEFINITION_ERROR;
 import static org.apache.dolphinscheduler.api.enums.Status.QUERY_TASK_DEFINITION_LIST_PAGING_ERROR;
 import static org.apache.dolphinscheduler.api.enums.Status.QUERY_TASK_DEFINITION_VERSIONS_ERROR;
@@ -128,8 +129,8 @@ public class TaskDefinitionController extends BaseController {
      */
     @ApiOperation(value = "queryVersions", notes = "QUERY_TASK_DEFINITION_VERSIONS_NOTES")
     @ApiImplicitParams({
-        @ApiImplicitParam(name = "pageNo", value = "PAGE_NO", required = true, dataType = "Int", example = "100"),
-        @ApiImplicitParam(name = "pageSize", value = "PAGE_SIZE", required = true, dataType = "Int", example = "100"),
+        @ApiImplicitParam(name = "pageNo", value = "PAGE_NO", required = true, dataType = "Int", example = "1"),
+        @ApiImplicitParam(name = "pageSize", value = "PAGE_SIZE", required = true, dataType = "Int", example = "10"),
         @ApiImplicitParam(name = "taskDefinitionCode", value = "TASK_DEFINITION_CODE", required = true, dataType = "Long", example = "1")
     })
     @GetMapping(value = "/versions")
@@ -256,10 +257,10 @@ public class TaskDefinitionController extends BaseController {
      */
     @ApiOperation(value = "queryTaskDefinitionListPaging", notes = "QUERY_TASK_DEFINITION_LIST_PAGING_NOTES")
     @ApiImplicitParams({
-        @ApiImplicitParam(name = "pageNo", value = "PAGE_NO", required = true, dataType = "Int", example = "100"),
+        @ApiImplicitParam(name = "pageNo", value = "PAGE_NO", required = true, dataType = "Int", example = "1"),
         @ApiImplicitParam(name = "searchVal", value = "SEARCH_VAL", required = false, type = "String"),
         @ApiImplicitParam(name = "userId", value = "USER_ID", required = false, dataType = "Int", example = "100"),
-        @ApiImplicitParam(name = "pageSize", value = "PAGE_SIZE", required = true, dataType = "Int", example = "100")
+        @ApiImplicitParam(name = "pageSize", value = "PAGE_SIZE", required = true, dataType = "Int", example = "10")
     })
     @GetMapping(value = "/list-paging")
     @ResponseStatus(HttpStatus.OK)
@@ -279,4 +280,25 @@ public class TaskDefinitionController extends BaseController {
         searchVal = ParameterUtils.handleEscapes(searchVal);
         return taskDefinitionService.queryTaskDefinitionListPaging(loginUser, projectCode, searchVal, pageNo, pageSize, userId);
     }
+
+    /**
+     * gen task code list
+     *
+     * @param loginUser login user
+     * @param genNum gen num
+     * @return task code list
+     */
+    @ApiOperation(value = "genTaskCodeList", notes = "GEN_TASK_CODE_LIST_NOTES")
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = "genNum", value = "GEN_NUM", required = true, dataType = "Int", example = "1")
+    })
+    @GetMapping(value = "/gen-task-code-list")
+    @ResponseStatus(HttpStatus.OK)
+    @ApiException(LOGIN_USER_QUERY_PROJECT_LIST_PAGING_ERROR)
+    @AccessLogAnnotation(ignoreRequestArgs = "loginUser")
+    public Result genTaskCodeList(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+                                  @RequestParam("pageNo") Integer genNum) {
+        Map<String, Object> result = taskDefinitionService.genTaskCodeList(loginUser, genNum);
+        return returnDataList(result);
+    }
 }
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 34e7eef..6d4cc2c 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
@@ -145,5 +145,15 @@ public interface TaskDefinitionService {
                                          Integer pageNo,
                                          Integer pageSize,
                                          Integer userId);
+
+    /**
+     * gen task code list
+     *
+     * @param loginUser login user
+     * @param genNum gen num
+     * @return task code list
+     */
+    Map<String, Object> genTaskCodeList(User loginUser,
+                                        Integer genNum);
 }
 
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 5c80220..2bbb968 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
@@ -77,6 +77,7 @@ import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -254,7 +255,16 @@ public class ProcessDefinitionServiceImpl extends BaseServiceImpl implements Pro
                 return result;
             }
 
-            if (graphHasCycle(processService.transformTask(taskRelationList))) {
+            List<TaskNode> taskNodeList = processService.transformTask(taskRelationList);
+            if (taskNodeList.size() != taskRelationList.size()) {
+                Set<Long> postTaskCodes = taskRelationList.stream().map(ProcessTaskRelationLog::getPostTaskCode).collect(Collectors.toSet());
+                Set<Long> taskNodeCodes = taskNodeList.stream().map(TaskNode::getCode).collect(Collectors.toSet());
+                Collection<Long> codes = CollectionUtils.subtract(postTaskCodes, taskNodeCodes);
+                logger.error("the task code is not exit");
+                putMsg(result, Status.TASK_DEFINE_NOT_EXIST, StringUtils.join(codes, Constants.COMMA));
+                return result;
+            }
+            if (graphHasCycle(taskNodeList)) {
                 logger.error("process DAG has cycle");
                 putMsg(result, Status.PROCESS_NODE_HAS_CYCLE);
                 return result;
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 6db7b3a..2e01228 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
@@ -101,19 +101,23 @@ public class TaskDefinitionServiceImpl extends BaseServiceImpl implements TaskDe
         }
 
         List<TaskDefinitionLog> taskDefinitionLogs = JSONUtils.toList(taskDefinitionJson, TaskDefinitionLog.class);
+        if (taskDefinitionLogs.isEmpty()) {
+            logger.error("taskDefinitionJson invalid: {}", taskDefinitionJson);
+            putMsg(result, Status.DATA_IS_NOT_VALID, taskDefinitionJson);
+            return result;
+        }
         int totalSuccessNumber = 0;
         List<Long> totalSuccessCode = new ArrayList<>();
-        List<TaskDefinitionLog> taskDefinitionLogsList = new ArrayList<>();
+        Date now = new Date();
         for (TaskDefinitionLog taskDefinitionLog : taskDefinitionLogs) {
             checkTaskDefinition(result, taskDefinitionLog);
             if (result.get(Constants.STATUS) == DATA_IS_NOT_VALID
-                    || result.get(Constants.STATUS) == Status.PROCESS_NODE_S_PARAMETER_INVALID) {
+                || result.get(Constants.STATUS) == Status.PROCESS_NODE_S_PARAMETER_INVALID) {
                 return result;
             }
             taskDefinitionLog.setProjectCode(projectCode);
             taskDefinitionLog.setUserId(loginUser.getId());
             taskDefinitionLog.setVersion(1);
-            Date now = new Date();
             taskDefinitionLog.setCreateTime(now);
             taskDefinitionLog.setUpdateTime(now);
             long code = 0L;
@@ -127,19 +131,18 @@ public class TaskDefinitionServiceImpl extends BaseServiceImpl implements TaskDe
             }
             taskDefinitionLog.setOperator(loginUser.getId());
             taskDefinitionLog.setOperateTime(now);
-            taskDefinitionLogsList.add(taskDefinitionLog);
             totalSuccessCode.add(code);
             totalSuccessNumber++;
         }
-        int insert = taskDefinitionMapper.batchInsert(taskDefinitionLogsList);
-        int logInsert = taskDefinitionLogMapper.batchInsert(taskDefinitionLogsList);
+        int insert = taskDefinitionMapper.batchInsert(taskDefinitionLogs);
+        int logInsert = taskDefinitionLogMapper.batchInsert(taskDefinitionLogs);
         if ((logInsert & insert) == 0) {
             putMsg(result, Status.CREATE_TASK_DEFINITION_ERROR);
             return result;
         }
         Map<String, Object> resData = new HashMap<>();
         resData.put("total", totalSuccessNumber);
-        resData.put("code",totalSuccessCode);
+        resData.put("code", totalSuccessCode);
         putMsg(result, Status.SUCCESS);
         result.put(Constants.DATA_LIST, resData);
         return result;
@@ -190,9 +193,9 @@ public class TaskDefinitionServiceImpl extends BaseServiceImpl implements TaskDe
         List<ProcessTaskRelation> processTaskRelationList = processTaskRelationMapper.queryByTaskCode(taskCode);
         if (!processTaskRelationList.isEmpty()) {
             Set<Long> processDefinitionCodes = processTaskRelationList
-                    .stream()
-                    .map(ProcessTaskRelation::getProcessDefinitionCode)
-                    .collect(Collectors.toSet());
+                .stream()
+                .map(ProcessTaskRelation::getProcessDefinitionCode)
+                .collect(Collectors.toSet());
             putMsg(result, Status.PROCESS_TASK_RELATION_EXIST, StringUtils.join(processDefinitionCodes, ","));
             return result;
         }
@@ -234,7 +237,7 @@ public class TaskDefinitionServiceImpl extends BaseServiceImpl implements TaskDe
         TaskDefinitionLog taskDefinitionToUpdate = JSONUtils.parseObject(taskDefinitionJson, TaskDefinitionLog.class);
         checkTaskDefinition(result, taskDefinitionToUpdate);
         if (result.get(Constants.STATUS) == DATA_IS_NOT_VALID
-                || result.get(Constants.STATUS) == Status.PROCESS_NODE_S_PARAMETER_INVALID) {
+            || result.get(Constants.STATUS) == Status.PROCESS_NODE_S_PARAMETER_INVALID) {
             return result;
         }
         Integer version = taskDefinitionLogMapper.queryMaxVersionForDefinition(taskCode);
@@ -338,5 +341,28 @@ public class TaskDefinitionServiceImpl extends BaseServiceImpl implements TaskDe
                                                 Integer userId) {
         return null;
     }
+
+    @Override
+    public Map<String, Object> genTaskCodeList(User loginUser, Integer genNum) {
+        Map<String, Object> result = new HashMap<>();
+        if (genNum == null || genNum < 1 || genNum > 100) {
+            logger.error("the genNum must be great than 1 and less than 100");
+            putMsg(result, Status.DATA_IS_NOT_VALID, genNum);
+            return result;
+        }
+        List<Long> taskCodes = new ArrayList<>();
+        try {
+            for (int i = 0; i < genNum; i++) {
+                taskCodes.add(SnowFlakeUtils.getInstance().nextId());
+            }
+        } catch (SnowFlakeException e) {
+            logger.error("Task code get error, ", e);
+            putMsg(result, Status.INTERNAL_SERVER_ERROR_ARGS, "Error generating task definition code");
+        }
+        putMsg(result, Status.SUCCESS);
+        // return processDefinitionCode
+        result.put(Constants.DATA_LIST, taskCodes);
+        return result;
+    }
 }
 
diff --git a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/TaskDefinitionServiceImplTest.java b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/TaskDefinitionServiceImplTest.java
index c66fbac..9dd475b 100644
--- a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/TaskDefinitionServiceImplTest.java
+++ b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/TaskDefinitionServiceImplTest.java
@@ -23,6 +23,7 @@ import org.apache.dolphinscheduler.api.service.impl.TaskDefinitionServiceImpl;
 import org.apache.dolphinscheduler.common.Constants;
 import org.apache.dolphinscheduler.common.enums.UserType;
 import org.apache.dolphinscheduler.common.model.TaskNode;
+import org.apache.dolphinscheduler.common.task.shell.ShellParameters;
 import org.apache.dolphinscheduler.common.utils.JSONUtils;
 import org.apache.dolphinscheduler.dao.entity.Project;
 import org.apache.dolphinscheduler.dao.entity.TaskDefinition;
@@ -132,29 +133,13 @@ public class TaskDefinitionServiceImplTest {
         putMsg(result, Status.SUCCESS, projectCode);
         Mockito.when(projectService.checkProjectAndAuth(loginUser, project, projectCode)).thenReturn(result);
 
-        String createTaskDefinitionJson = "[{\n"
-                +   "\"name\": \"test12111\",\n"
-                +   "\"description\": \"test\",\n"
-                +   "\"taskType\": \"SHELL\",\n"
-                +   "\"flag\": 0,\n"
-                +   "\"taskParams\": \n"
-                +   "\"{\\\"resourceList\\\":[],\n"
-                +   "\\\"localParams\\\":[],\n"
-                +   "\\\"rawScript\\\":\\\"echo 11\\\",\n"
-                +   "\\\"conditionResult\\\":\n"
-                +   "{\\\"successNode\\\":[\\\"\\\"],\n"
-                +   "\\\"failedNode\\\":[\\\"\\\"]},\n"
-                +   "\\\"dependence\\\":{}}\",\n"
-                +   "\"taskPriority\": 0,\n"
-                +   "\"workerGroup\": \"default\",\n"
-                +   "\"failRetryTimes\": 0,\n"
-                +   "\"failRetryInterval\": 1,\n"
-                +   "\"timeoutFlag\": 1, \n"
-                +   "\"timeoutNotifyStrategy\": 0,\n"
-                +   "\"timeout\": 0, \n"
-                +   "\"delayTime\": 0,\n"
-                +   "\"resourceIds\":\"\" \n"
-                +   "}] ";
+        String createTaskDefinitionJson = "[{\"name\":\"detail_up\",\"description\":\"\",\"taskType\":\"SHELL\",\"taskParams\":"
+            + "\"{\\\"resourceList\\\":[],\\\"localParams\\\":[{\\\"prop\\\":\\\"datetime\\\",\\\"direct\\\":\\\"IN\\\","
+            + "\\\"type\\\":\\\"VARCHAR\\\",\\\"value\\\":\\\"${system.datetime}\\\"}],\\\"rawScript\\\":"
+            + "\\\"echo ${datetime}\\\",\\\"conditionResult\\\":\\\"{\\\\\\\"successNode\\\\\\\":[\\\\\\\"\\\\\\\"],"
+            + "\\\\\\\"failedNode\\\\\\\":[\\\\\\\"\\\\\\\"]}\\\",\\\"dependence\\\":{}}\",\"flag\":0,\"taskPriority\":0,"
+            + "\"workerGroup\":\"default\",\"failRetryTimes\":0,\"failRetryInterval\":0,\"timeoutFlag\":0,"
+            + "\"timeoutNotifyStrategy\":0,\"timeout\":0,\"delayTime\":0,\"resourceIds\":\"\"}]";
         List<TaskDefinition> taskDefinitions = JSONUtils.toList(createTaskDefinitionJson, TaskDefinition.class);
         Mockito.when(taskDefinitionMapper.batchInsert(Mockito.anyList())).thenReturn(1);
         Mockito.when(taskDefinitionLogMapper.batchInsert(Mockito.anyList())).thenReturn(1);
@@ -314,4 +299,30 @@ public class TaskDefinitionServiceImplTest {
         return project;
     }
 
-}
+    @Test
+    public void checkJson() {
+        String taskDefinitionJson = "[{\"name\":\"detail_up\",\"description\":\"\",\"taskType\":\"SHELL\",\"taskParams\":"
+            + "\"{\\\"resourceList\\\":[],\\\"localParams\\\":[{\\\"prop\\\":\\\"datetime\\\",\\\"direct\\\":\\\"IN\\\","
+            + "\\\"type\\\":\\\"VARCHAR\\\",\\\"value\\\":\\\"${system.datetime}\\\"}],\\\"rawScript\\\":"
+            + "\\\"echo ${datetime}\\\",\\\"conditionResult\\\":\\\"{\\\\\\\"successNode\\\\\\\":[\\\\\\\"\\\\\\\"],"
+            + "\\\\\\\"failedNode\\\\\\\":[\\\\\\\"\\\\\\\"]}\\\",\\\"dependence\\\":{}}\",\"flag\":0,\"taskPriority\":0,"
+            + "\"workerGroup\":\"default\",\"failRetryTimes\":0,\"failRetryInterval\":0,\"timeoutFlag\":0,"
+            + "\"timeoutNotifyStrategy\":0,\"timeout\":0,\"delayTime\":0,\"resourceIds\":\"\"}]";
+        List<TaskDefinitionLog> taskDefinitionLogs = JSONUtils.toList(taskDefinitionJson, TaskDefinitionLog.class);
+        Assert.assertFalse(taskDefinitionLogs.isEmpty());
+        String taskParams = "{\"resourceList\":[],\"localParams\":[{\"prop\":\"datetime\",\"direct\":\"IN\",\"type\":\"VARCHAR\","
+            + "\"value\":\"${system.datetime}\"}],\"rawScript\":\"echo ${datetime}\",\"conditionResult\":\"{\\\"successNode\\\":[\\\"\\\"],"
+            + "\\\"failedNode\\\":[\\\"\\\"]}\",\"dependence\":{}}";
+        ShellParameters parameters = JSONUtils.parseObject(taskParams, ShellParameters.class);
+        Assert.assertNotNull(parameters);
+    }
+
+    @Test
+    public void genTaskCodeList() {
+        User loginUser = new User();
+        loginUser.setId(-1);
+        loginUser.setUserType(UserType.GENERAL_USER);
+        Map<String, Object> genTaskCodeList = taskDefinitionService.genTaskCodeList(loginUser, 10);
+        Assert.assertEquals(Status.SUCCESS, genTaskCodeList.get(Constants.STATUS));
+    }
+}
\ No newline at end of file
diff --git a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessDefinition.java b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessDefinition.java
index e030fed..60fd4b2 100644
--- a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessDefinition.java
+++ b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessDefinition.java
@@ -288,10 +288,9 @@ public class ProcessDefinition {
     }
 
     public void setGlobalParams(String globalParams) {
-        if (globalParams == null) {
+        this.globalParamList = JSONUtils.toList(globalParams, Property.class);
+        if (this.globalParamList == null) {
             this.globalParamList = new ArrayList<>();
-        } else {
-            this.globalParamList = JSONUtils.toList(globalParams, Property.class);
         }
         this.globalParams = globalParams;
     }
@@ -301,7 +300,6 @@ public class ProcessDefinition {
     }
 
     public void setGlobalParamList(List<Property> globalParamList) {
-        this.globalParams = JSONUtils.toJsonString(globalParamList);
         this.globalParamList = globalParamList;
     }
 
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 3f31a2c..038ed5d 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
@@ -36,56 +36,53 @@ public interface ProcessDefinitionLogMapper extends BaseMapper<ProcessDefinition
      * query process definition log by name
      *
      * @param projectCode projectCode
-     * @param name process name
+     * @param name process definition name
      * @return process definition log list
      */
-    List<ProcessDefinitionLog> queryByDefinitionName(@Param("projectCode") long projectCode,
-                                                     @Param("processDefinitionName") String name);
+    List<ProcessDefinitionLog> queryByDefinitionName(@Param("projectCode") long projectCode, @Param("name") String name);
 
     /**
      * query process definition log list
      *
-     * @param processDefinitionCode processDefinitionCode
+     * @param code process definition code
      * @return process definition log list
      */
-    List<ProcessDefinitionLog> queryByDefinitionCode(@Param("processDefinitionCode") long processDefinitionCode);
+    List<ProcessDefinitionLog> queryByDefinitionCode(@Param("code") long code);
 
     /**
      * query max version for definition
      */
-    Integer queryMaxVersionForDefinition(@Param("processDefinitionCode") long processDefinitionCode);
+    Integer queryMaxVersionForDefinition(@Param("code") long code);
 
     /**
      * query max version definition log
      */
-    ProcessDefinitionLog queryMaxVersionDefinitionLog(@Param("processDefinitionCode") long processDefinitionCode);
+    ProcessDefinitionLog queryMaxVersionDefinitionLog(@Param("code") long code);
 
     /**
      * query the certain process definition version info by process definition code and version number
      *
-     * @param processDefinitionCode process definition code
+     * @param code process definition code
      * @param version version number
      * @return the process definition version info
      */
-    ProcessDefinitionLog queryByDefinitionCodeAndVersion(@Param("code") long processDefinitionCode,
-                                                         @Param("version") int version);
-    
+    ProcessDefinitionLog queryByDefinitionCodeAndVersion(@Param("code") long code,  @Param("version") int version);
+
     /**
      * query the paging process definition version list by pagination info
      *
      * @param page pagination info
-     * @param processDefinitionCode process definition code
+     * @param code process definition code
      * @return the paging process definition version list
      */
-    IPage<ProcessDefinitionLog> queryProcessDefinitionVersionsPaging(Page<ProcessDefinitionLog> page,
-                                                                         @Param("processDefinitionCode") long processDefinitionCode);
+    IPage<ProcessDefinitionLog> queryProcessDefinitionVersionsPaging(Page<ProcessDefinitionLog> page, @Param("code") long code);
 
     /**
      * delete the certain process definition version by process definition id and version number
      *
-     * @param processDefinitionCode process definition code
+     * @param code process definition code
      * @param version version number
      * @return delete result
      */
-    int deleteByProcessDefinitionCodeAndVersion(@Param("processDefinitionCode") long processDefinitionCode, @Param("version") int version);
+    int deleteByProcessDefinitionCodeAndVersion(@Param("code") long code, @Param("version") int version);
 }
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 ddb251a..40afa04 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
@@ -34,26 +34,26 @@
         JOIN t_ds_user u ON pd.user_id = u.id
         JOIN  t_ds_project p ON pd.project_code = p.code
         WHERE p.code = #{projectCode}
-        and pd.name = #{processDefinitionName}
+        and pd.name = #{name}
     </select>
     <select id="queryByDefinitionCode" resultType="org.apache.dolphinscheduler.dao.entity.ProcessDefinitionLog">
         select
         <include refid="baseSql"/>
         from t_ds_process_definition_log
-        WHERE code = #{processDefinitionCode}
+        WHERE code = #{code}
     </select>
     <select id="queryByDefinitionCodeAndVersion"
             resultType="org.apache.dolphinscheduler.dao.entity.ProcessDefinitionLog">
         select
         <include refid="baseSql"/>
         from t_ds_process_definition_log
-        where code = #{processDefinitionCode}
+        where code = #{code}
         and version = #{version}
     </select>
     <select id="queryMaxVersionForDefinition" resultType="java.lang.Integer">
         select max(version)
         from t_ds_process_definition_log
-        where code = #{processDefinitionCode}
+        where code = #{code}
     </select>
 
     <select id="queryMaxVersionDefinitionLog" resultType="org.apache.dolphinscheduler.dao.entity.ProcessDefinitionLog">
@@ -61,7 +61,7 @@
         select
         <include refid="baseSql"/>
         from t_ds_process_definition_log
-        where code = #{processDefinitionCode} order by version desc limit 1
+        where code = #{code} order by version desc limit 1
     </select>
 
     <select id="queryProcessDefinitionVersionsPaging"
@@ -69,14 +69,14 @@
         select
         <include refid="baseSql"/>
         from t_ds_process_definition_log
-        where code = #{processDefinitionCode}
+        where code = #{code}
         order by version desc
     </select>
 
     <delete id="deleteByProcessDefinitionCodeAndVersion">
         delete
         from t_ds_process_definition_log
-        where code = #{processDefinitionCode}
+        where code = #{code}
           and version = #{version}
     </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 d3ca804..c2884c4 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
@@ -35,10 +35,10 @@
         create_time, update_time)
         values
         <foreach collection="taskRelationList" item="relation" separator=",">
-            (#{relation.name},#{relation.process_definition_version},#{relation.project_code},#{relation.process_definition_code},
-            #{relation.pre_task_code},#{relation.pre_task_version},#{relation.post_task_code},#{relation.post_task_version},
-            #{relation.condition_type},#{relation.condition_params},#{relation.operator},#{relation.operate_time},
-            #{relation.create_time},#{relation.update_time})
+            (#{relation.name},#{relation.processDefinitionVersion},#{relation.projectCode},#{relation.processDefinitionCode},
+            #{relation.preTaskCode},#{relation.preTaskVersion},#{relation.postTaskCode},#{relation.postTaskVersion},
+            #{relation.conditionType},#{relation.conditionParams},#{relation.operator},#{relation.operateTime},
+            #{relation.createTime},#{relation.updateTime})
         </foreach>
     </insert>
 </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 0069441..73e67f5 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
@@ -64,9 +64,9 @@
         pre_task_code, pre_task_version, post_task_code, post_task_version, condition_type, condition_params, create_time, update_time)
         values
         <foreach collection="taskRelationList" item="relation" separator=",">
-            (#{relation.name},#{relation.process_definition_version},#{relation.project_code},#{relation.process_definition_code},
-            #{relation.pre_task_code},#{relation.pre_task_version},#{relation.post_task_code},#{relation.post_task_version},
-            #{relation.condition_type},#{relation.condition_params},#{relation.create_time},#{relation.update_time})
+            (#{relation.name},#{relation.processDefinitionVersion},#{relation.projectCode},#{relation.processDefinitionCode},
+            #{relation.preTaskCode},#{relation.preTaskVersion},#{relation.postTaskCode},#{relation.postTaskVersion},
+            #{relation.conditionType},#{relation.conditionParams},#{relation.createTime},#{relation.updateTime})
         </foreach>
     </insert>
 </mapper>
diff --git a/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/process/ProcessService.java b/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/process/ProcessService.java
index c71eb3b..48c144d 100644
--- a/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/process/ProcessService.java
+++ b/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/process/ProcessService.java
@@ -2319,7 +2319,7 @@ public class ProcessService {
                 taskNode.setRetryInterval(taskDefinitionLog.getFailRetryInterval());
                 Map<String, Object> taskParamsMap = taskNode.taskParamsToJsonObj(taskDefinitionLog.getTaskParams());
                 taskNode.setConditionResult((String) taskParamsMap.get(Constants.CONDITION_RESULT));
-                taskNode.setDependence((String) taskParamsMap.get(Constants.DEPENDENCE));
+                taskNode.setDependence(JSONUtils.toJsonString(taskParamsMap.get(Constants.DEPENDENCE)));
                 taskParamsMap.remove(Constants.CONDITION_RESULT);
                 taskParamsMap.remove(Constants.DEPENDENCE);
                 taskNode.setParams(JSONUtils.toJsonString(taskParamsMap));