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 5b6c9b7  [Feature][JsonSplit-api] select-by-code of processDefinition 
(#5687)
5b6c9b7 is described below

commit 5b6c9b7d4319745ddc5b35ef54bfc9168ac8b263
Author: JinyLeeChina <[email protected]>
AuthorDate: Fri Jun 25 17:54:07 2021 +0800

    [Feature][JsonSplit-api] select-by-code of processDefinition (#5687)
    
    * select-by-code of processDefinition
    
    * fix ut
    
    Co-authored-by: JinyLeeChina <[email protected]>
---
 .../controller/ProcessDefinitionController.java    | 17 +++---
 .../api/service/ProcessDefinitionService.java      | 14 ++---
 .../service/impl/ProcessDefinitionServiceImpl.java | 16 ++---
 .../ProcessDefinitionControllerTest.java           | 66 ++++++++++----------
 .../api/service/ProcessDefinitionServiceTest.java  | 33 ++++------
 .../dolphinscheduler/dao/entity/DagData.java       | 71 ++++++++++++++++++++++
 .../service/process/ProcessService.java            | 33 +++++++---
 7 files changed, 159 insertions(+), 91 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 49df47b..55a7ea4 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
@@ -376,26 +376,25 @@ public class ProcessDefinitionController extends 
BaseController {
     }
 
     /**
-     * query datail of process definition by id
+     * query detail of process definition by code
      *
      * @param loginUser login user
      * @param projectName project name
-     * @param processId process definition id
+     * @param code process definition id
      * @return process definition detail
      */
-    @ApiOperation(value = "queryProcessDefinitionById", notes = 
"QUERY_PROCESS_DEFINITION_BY_ID_NOTES")
+    @ApiOperation(value = "queryProcessDefinitionByCode", notes = 
"QUERY_PROCESS_DEFINITION_BY_ID_NOTES")
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "processId", value = 
"PROCESS_DEFINITION_ID", required = true, dataType = "Int", example = "100")
+            @ApiImplicitParam(name = "code", value = 
"PROCESS_DEFINITION_CODE", required = true, dataType = "Long", example = 
"123456789")
     })
-    @GetMapping(value = "/select-by-id")
+    @GetMapping(value = "/select-by-code")
     @ResponseStatus(HttpStatus.OK)
     @ApiException(QUERY_DATAIL_OF_PROCESS_DEFINITION_ERROR)
     @AccessLogAnnotation(ignoreRequestArgs = "loginUser")
-    public Result queryProcessDefinitionById(@ApiIgnore 
@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+    public Result queryProcessDefinitionByCode(@ApiIgnore 
@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
                                              @ApiParam(name = "projectName", 
value = "PROJECT_NAME", required = true) @PathVariable String projectName,
-                                             @RequestParam("processId") 
Integer processId
-    ) {
-        Map<String, Object> result = 
processDefinitionService.queryProcessDefinitionById(loginUser, projectName, 
processId);
+                                             @RequestParam(value = "code", 
required = true) long code) {
+        Map<String, Object> result = 
processDefinitionService.queryProcessDefinitionByCode(loginUser, projectName, 
code);
         return returnDataList(result);
     }
 
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 ef9c885..045a920 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
@@ -90,17 +90,17 @@ public interface ProcessDefinitionService {
                                                          Integer userId);
 
     /**
-     * query datail of process definition
+     * query detail of process definition
      *
      * @param loginUser login user
      * @param projectName project name
-     * @param processId process definition id
+     * @param code process definition code
      * @return process definition detail
      */
 
-    Map<String, Object> queryProcessDefinitionById(User loginUser,
-                                                   String projectName,
-                                                   Integer processId);
+    Map<String, Object> queryProcessDefinitionByCode(User loginUser,
+                                                     String projectName,
+                                                     long code);
 
     /**
      * query datail of process definition
@@ -112,8 +112,8 @@ public interface ProcessDefinitionService {
      */
 
     Map<String, Object> queryProcessDefinitionByName(User loginUser,
-                                                   String projectName,
-                                                   String 
processDefinitionName);
+                                                     String projectName,
+                                                     String 
processDefinitionName);
 
     /**
      * batch copy process definition
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 3a853f0..907c7c3 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
@@ -51,6 +51,7 @@ import 
org.apache.dolphinscheduler.common.utils.SnowFlakeUtils;
 import 
org.apache.dolphinscheduler.common.utils.SnowFlakeUtils.SnowFlakeException;
 import org.apache.dolphinscheduler.common.utils.StreamUtils;
 import org.apache.dolphinscheduler.common.utils.StringUtils;
+import org.apache.dolphinscheduler.dao.entity.DagData;
 import org.apache.dolphinscheduler.dao.entity.ProcessData;
 import org.apache.dolphinscheduler.dao.entity.ProcessDefinition;
 import org.apache.dolphinscheduler.dao.entity.ProcessDefinitionLog;
@@ -353,15 +354,15 @@ public class ProcessDefinitionServiceImpl extends 
BaseServiceImpl implements Pro
     }
 
     /**
-     * query datail of process definition
+     * query detail of process definition
      *
      * @param loginUser login user
      * @param projectName project name
-     * @param processId process definition id
+     * @param code process definition code
      * @return process definition detail
      */
     @Override
-    public Map<String, Object> queryProcessDefinitionById(User loginUser, 
String projectName, Integer processId) {
+    public Map<String, Object> queryProcessDefinitionByCode(User loginUser, 
String projectName, long code) {
 
         Map<String, Object> result = new HashMap<>();
         Project project = projectMapper.queryByName(projectName);
@@ -372,14 +373,13 @@ public class ProcessDefinitionServiceImpl extends 
BaseServiceImpl implements Pro
             return checkResult;
         }
 
-        ProcessDefinition processDefinition = 
processDefinitionMapper.selectById(processId);
+        ProcessDefinition processDefinition = 
processDefinitionMapper.queryByCode(code);
 
         if (processDefinition == null) {
-            putMsg(result, Status.PROCESS_DEFINE_NOT_EXIST, processId);
+            putMsg(result, Status.PROCESS_DEFINE_NOT_EXIST, code);
         } else {
-            ProcessData processData = 
processService.genProcessData(processDefinition);
-            
processDefinition.setProcessDefinitionJson(JSONUtils.toJsonString(processData));
-            result.put(Constants.DATA_LIST, processDefinition);
+            DagData dagData = processService.genDagData(processDefinition);
+            result.put(Constants.DATA_LIST, dagData);
             putMsg(result, Status.SUCCESS);
         }
         return result;
diff --git 
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/ProcessDefinitionControllerTest.java
 
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/ProcessDefinitionControllerTest.java
index 40955ca..e0ee1dd 100644
--- 
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/ProcessDefinitionControllerTest.java
+++ 
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/ProcessDefinitionControllerTest.java
@@ -73,27 +73,28 @@ public class ProcessDefinitionControllerTest {
 
     @Test
     public void testCreateProcessDefinition() throws Exception {
-        String json = 
"{\"globalParams\":[],\"tasks\":[{\"type\":\"SHELL\",\"id\":\"tasks-36196\",\"name\""
-                + 
":\"ssh_test1\",\"params\":{\"resourceList\":[],\"localParams\":[],\"rawScript\":\"aa=\\\"1234\\\"\\"
-                + "necho 
${aa}\"},\"desc\":\"\",\"runFlag\":\"NORMAL\",\"dependence\":{},\"maxRetryTimes\":\"0\""
-                + 
",\"retryInterval\":\"1\",\"timeout\":{\"strategy\":\"\",\"interval\":null,\"enable\":false},"
-                + 
"\"taskInstancePriority\":\"MEDIUM\",\"workerGroupId\":-1,\"preTasks\":[]}],\"tenantId\":-1,\"timeout\":0}";
-        String locations = 
"{\"tasks-36196\":{\"name\":\"ssh_test1\",\"targetarr\":\"\",\"x\":141,\"y\":70}}";
+        String json = 
"[{\"name\":\"\",\"pre_task_code\":0,\"pre_task_version\":0,\"post_task_code\":123456789,\"post_task_version\":1,"
+                + 
"\"condition_type\":0,\"condition_params\":{}},{\"name\":\"\",\"pre_task_code\":123456789,\"pre_task_version\":1,"
+                + 
"\"post_task_code\":123451234,\"post_task_version\":1,\"condition_type\":0,\"condition_params\":{}}]";
 
         String projectName = "test";
         String name = "dag_test";
         String description = "desc test";
+        String globalParams = "[]";
         String connects = "[]";
+        String locations = "[]";
+        int timeout = 0;
+        String tenantCode = "root";
         Map<String, Object> result = new HashMap<>();
         putMsg(result, Status.SUCCESS);
         result.put(Constants.DATA_LIST, 1);
 
-        Mockito.when(processDefinitionService.createProcessDefinition(user, 
projectName, name, json,
-                description, locations, connects)).thenReturn(result);
+        Mockito.when(processDefinitionService.createProcessDefinition(user, 
projectName, name, description, globalParams,
+                connects, locations, timeout, tenantCode, 
json)).thenReturn(result);
 
-        Result response = 
processDefinitionController.createProcessDefinition(user, projectName, name, 
json,
-                locations, connects, description);
-        Assert.assertTrue(response.isSuccess());
+        Result response = 
processDefinitionController.createProcessDefinition(user, projectName, name, 
description, globalParams,
+                connects, locations, timeout, tenantCode, json);
+        Assert.assertEquals(Status.SUCCESS.getCode(), 
response.getCode().intValue());
     }
 
     private void putMsg(Map<String, Object> result, Status status, Object... 
statusParams) {
@@ -122,28 +123,29 @@ public class ProcessDefinitionControllerTest {
 
     @Test
     public void updateProcessDefinition() throws Exception {
-
-        String json = 
"{\"globalParams\":[],\"tasks\":[{\"type\":\"SHELL\",\"id\":\"tasks-36196\",\"name\":\"ssh_test1\""
-                + 
",\"params\":{\"resourceList\":[],\"localParams\":[],\"rawScript\":\"aa=\\\"1234\\\"\\necho
 ${aa}\"}"
-                + 
",\"desc\":\"\",\"runFlag\":\"NORMAL\",\"dependence\":{},\"maxRetryTimes\":\"0\",\"retryInterval\""
-                + 
":\"1\",\"timeout\":{\"strategy\":\"\",\"interval\":null,\"enable\":false},\"taskInstancePriority\""
-                + 
":\"MEDIUM\",\"workerGroupId\":-1,\"preTasks\":[]}],\"tenantId\":-1,\"timeout\":0}";
+        String json = 
"[{\"name\":\"\",\"pre_task_code\":0,\"pre_task_version\":0,\"post_task_code\":123456789,\"post_task_version\":1,"
+                + 
"\"condition_type\":0,\"condition_params\":{}},{\"name\":\"\",\"pre_task_code\":123456789,\"pre_task_version\":1,"
+                + 
"\"post_task_code\":123451234,\"post_task_version\":1,\"condition_type\":0,\"condition_params\":{}}]";
         String locations = 
"{\"tasks-36196\":{\"name\":\"ssh_test1\",\"targetarr\":\"\",\"x\":141,\"y\":70}}";
         String projectName = "test";
         String name = "dag_test";
         String description = "desc test";
         String connects = "[]";
-        int id = 1;
+        String globalParams = "[]";
+        int timeout = 0;
+        String tenantCode = "root";
+        long code = 123L;
         Map<String, Object> result = new HashMap<>();
         putMsg(result, Status.SUCCESS);
         result.put("processDefinitionId", 1);
 
-        Mockito.when(processDefinitionService.updateProcessDefinition(user, 
projectName, id, name, json,
-                description, locations, connects)).thenReturn(result);
+        Mockito.when(processDefinitionService.updateProcessDefinition(user, 
projectName, name, code, description, globalParams,
+                connects, locations, timeout, tenantCode, 
json)).thenReturn(result);
 
-        Result response = 
processDefinitionController.updateProcessDefinition(user, projectName, name, 
id, json,
-                locations, connects, description,ReleaseState.OFFLINE);
-        Assert.assertTrue(response != null && response.isSuccess());    }
+        Result response = 
processDefinitionController.updateProcessDefinition(user, projectName, name, 
code, description, globalParams,
+                connects, locations, timeout, tenantCode, json, 
ReleaseState.OFFLINE);
+        Assert.assertEquals(Status.SUCCESS.getCode(), 
response.getCode().intValue());
+    }
 
     @Test
     public void testReleaseProcessDefinition() throws Exception {
@@ -158,25 +160,19 @@ public class ProcessDefinitionControllerTest {
     }
 
     @Test
-    public void testQueryProcessDefinitionById() throws Exception {
-
-        String json = 
"{\"globalParams\":[],\"tasks\":[{\"type\":\"SHELL\",\"id\":\"tasks-36196\",\"name\":\"ssh_test1"
-                + 
"\",\"params\":{\"resourceList\":[],\"localParams\":[],\"rawScript\":\"aa=\\\"1234\\\"\\necho
 ${aa}"
-                + 
"\"},\"desc\":\"\",\"runFlag\":\"NORMAL\",\"dependence\":{},\"maxRetryTimes\":\"0\",\"retryInterval\""
-                + 
":\"1\",\"timeout\":{\"strategy\":\"\",\"interval\":null,\"enable\":false},\"taskInstancePriority\":"
-                + 
"\"MEDIUM\",\"workerGroupId\":-1,\"preTasks\":[]}],\"tenantId\":-1,\"timeout\":0}";
+    public void testQueryProcessDefinitionByCode() {
         String locations = 
"{\"tasks-36196\":{\"name\":\"ssh_test1\",\"targetarr\":\"\",\"x\":141,\"y\":70}}";
         String projectName = "test";
         String name = "dag_test";
         String description = "desc test";
         String connects = "[]";
-        int id = 1;
+        long code = 1L;
 
         ProcessDefinition processDefinition = new ProcessDefinition();
         processDefinition.setProjectName(projectName);
         processDefinition.setConnects(connects);
         processDefinition.setDescription(description);
-        processDefinition.setId(id);
+        processDefinition.setCode(code);
         processDefinition.setLocations(locations);
         processDefinition.setName(name);
 
@@ -184,10 +180,10 @@ public class ProcessDefinitionControllerTest {
         putMsg(result, Status.SUCCESS);
         result.put(Constants.DATA_LIST, processDefinition);
 
-        Mockito.when(processDefinitionService.queryProcessDefinitionById(user, 
projectName, id)).thenReturn(result);
-        Result response = 
processDefinitionController.queryProcessDefinitionById(user, projectName, id);
+        
Mockito.when(processDefinitionService.queryProcessDefinitionByCode(user, 
projectName, code)).thenReturn(result);
+        Result response = 
processDefinitionController.queryProcessDefinitionByCode(user, projectName, 
code);
 
-        Assert.assertTrue(response != null && response.isSuccess());
+        Assert.assertEquals(Status.SUCCESS.getCode(), 
response.getCode().intValue());
     }
 
     @Test
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 904c34b..8cad1ea 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
@@ -39,6 +39,7 @@ import org.apache.dolphinscheduler.common.utils.DateUtils;
 import org.apache.dolphinscheduler.common.utils.FileUtils;
 import org.apache.dolphinscheduler.common.utils.JSONUtils;
 import org.apache.dolphinscheduler.common.utils.StringUtils;
+import org.apache.dolphinscheduler.dao.entity.DagData;
 import org.apache.dolphinscheduler.dao.entity.DataSource;
 import org.apache.dolphinscheduler.dao.entity.ProcessData;
 import org.apache.dolphinscheduler.dao.entity.ProcessDefinition;
@@ -317,7 +318,7 @@ public class ProcessDefinitionServiceTest {
     }
 
     @Test
-    public void testQueryProcessDefinitionById() {
+    public void testQueryProcessDefinitionByCode() {
         String projectName = "project_test1";
         
Mockito.when(projectMapper.queryByName(projectName)).thenReturn(getProject(projectName));
 
@@ -332,33 +333,24 @@ public class ProcessDefinitionServiceTest {
 
         //project check auth fail
         Mockito.when(projectService.checkProjectAndAuth(loginUser, project, 
projectName)).thenReturn(result);
-        Map<String, Object> map = 
processDefinitionService.queryProcessDefinitionById(loginUser,
-                "project_test1", 1);
+        Map<String, Object> map = 
processDefinitionService.queryProcessDefinitionByCode(loginUser,
+                "project_test1", 1L);
         Assert.assertEquals(Status.PROJECT_NOT_FOUNT, 
map.get(Constants.STATUS));
 
         //project check auth success, instance not exist
         putMsg(result, Status.SUCCESS, projectName);
         Mockito.when(projectService.checkProjectAndAuth(loginUser, project, 
projectName)).thenReturn(result);
-        Mockito.when(processDefineMapper.selectById(1)).thenReturn(null);
+        DagData dagData = new DagData(getProcessDefinition(), null, null);
+        
Mockito.when(processService.genDagData(Mockito.any())).thenReturn(dagData);
 
-        String processDefinitionJson = 
"{\"globalParams\":[],\"tasks\":[{\"conditionResult\":"
-                + 
"{\"failedNode\":[\"\"],\"successNode\":[\"\"]},\"delayTime\":\"0\",\"dependence\":{}"
-                + 
",\"description\":\"\",\"id\":\"tasks-3011\",\"maxRetryTimes\":\"0\",\"name\":\"tsssss\""
-                + ",\"params\":{\"localParams\":[],\"rawScript\":\"echo 
\\\"123123\\\"\",\"resourceList\":[]}"
-                + 
",\"preTasks\":[],\"retryInterval\":\"1\",\"runFlag\":\"NORMAL\",\"taskInstancePriority\":\"MEDIUM\""
-                + 
",\"timeout\":{\"enable\":false,\"interval\":null,\"strategy\":\"\"},\"type\":\"SHELL\""
-                + 
",\"waitStartTimeout\":{},\"workerGroup\":\"default\"}],\"tenantId\":4,\"timeout\":0}";
-        ProcessData processData = JSONUtils.parseObject(processDefinitionJson, 
ProcessData.class);
-        
Mockito.when(processService.genProcessData(Mockito.any())).thenReturn(processData);
-
-        Map<String, Object> instanceNotexitRes = 
processDefinitionService.queryProcessDefinitionById(loginUser,
-                "project_test1", 1);
+        Map<String, Object> instanceNotexitRes = 
processDefinitionService.queryProcessDefinitionByCode(loginUser,
+                "project_test1", 1L);
         Assert.assertEquals(Status.PROCESS_DEFINE_NOT_EXIST, 
instanceNotexitRes.get(Constants.STATUS));
 
         //instance exit
-        
Mockito.when(processDefineMapper.selectById(46)).thenReturn(getProcessDefinition());
-        Map<String, Object> successRes = 
processDefinitionService.queryProcessDefinitionById(loginUser,
-                "project_test1", 46);
+        
Mockito.when(processDefineMapper.queryByCode(46L)).thenReturn(getProcessDefinition());
+        Map<String, Object> successRes = 
processDefinitionService.queryProcessDefinitionByCode(loginUser,
+                "project_test1", 46L);
         Assert.assertEquals(Status.SUCCESS, successRes.get(Constants.STATUS));
     }
 
@@ -605,8 +597,6 @@ public class ProcessDefinitionServiceTest {
         // project check auth success, processs definition online
         ProcessDefinition processDefinition1 = getProcessDefinition();
         processDefinition1.setResourceIds("1,2");
-        
Mockito.when(processDefineMapper.selectById(46)).thenReturn(processDefinition1);
-        Mockito.when(processService.getUserById(1)).thenReturn(loginUser);
         Map<String, Object> onlineWithResourceRes = 
processDefinitionService.releaseProcessDefinition(
                 loginUser, "project_test1", 46, ReleaseState.ONLINE);
         Assert.assertEquals(Status.SUCCESS, 
onlineWithResourceRes.get(Constants.STATUS));
@@ -944,7 +934,6 @@ public class ProcessDefinitionServiceTest {
 
         
Mockito.when(projectMapper.queryByName(projectName)).thenReturn(getProject(projectName));
         Mockito.when(projectService.checkProjectAndAuth(loginUser, project, 
projectName)).thenReturn(result);
-        
Mockito.when(processService.findProcessDefineById(1)).thenReturn(processDefinition);
 
         String sqlDependentJson = "{\n"
                 + "    \"globalParams\": [\n"
diff --git 
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/DagData.java
 
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/DagData.java
new file mode 100644
index 0000000..d44e1d5
--- /dev/null
+++ 
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/DagData.java
@@ -0,0 +1,71 @@
+/*
+ * 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.dao.entity;
+
+import java.util.List;
+
+/**
+ * DagData
+ */
+public class DagData {
+
+    /**
+     * processDefinition
+     */
+    private ProcessDefinition processDefinition;
+
+    /**
+     * processTaskRelationList
+     */
+    private List<ProcessTaskRelationLog> processTaskRelationList;
+
+    /**
+     * processTaskRelationList
+     */
+    private List<TaskDefinitionLog> taskDefinitionList;
+
+    public DagData(ProcessDefinition processDefinition, 
List<ProcessTaskRelationLog> processTaskRelationList, List<TaskDefinitionLog> 
taskDefinitionList) {
+        this.processDefinition = processDefinition;
+        this.processTaskRelationList = processTaskRelationList;
+        this.taskDefinitionList = taskDefinitionList;
+    }
+
+    public ProcessDefinition getProcessDefinition() {
+        return processDefinition;
+    }
+
+    public void setProcessDefinition(ProcessDefinition processDefinition) {
+        this.processDefinition = processDefinition;
+    }
+
+    public List<ProcessTaskRelationLog> getProcessTaskRelationList() {
+        return processTaskRelationList;
+    }
+
+    public void setProcessTaskRelationList(List<ProcessTaskRelationLog> 
processTaskRelationList) {
+        this.processTaskRelationList = processTaskRelationList;
+    }
+
+    public List<TaskDefinitionLog> getTaskDefinitionList() {
+        return taskDefinitionList;
+    }
+
+    public void setTaskDefinitionList(List<TaskDefinitionLog> 
taskDefinitionList) {
+        this.taskDefinitionList = taskDefinitionList;
+    }
+}
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 135fcaa..69f3c16 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
@@ -65,6 +65,7 @@ import org.apache.dolphinscheduler.common.utils.StringUtils;
 import org.apache.dolphinscheduler.common.utils.TaskParametersUtils;
 import org.apache.dolphinscheduler.dao.entity.Command;
 import org.apache.dolphinscheduler.dao.entity.CycleDependency;
+import org.apache.dolphinscheduler.dao.entity.DagData;
 import org.apache.dolphinscheduler.dao.entity.DataSource;
 import org.apache.dolphinscheduler.dao.entity.ErrorCommand;
 import org.apache.dolphinscheduler.dao.entity.ProcessData;
@@ -2264,7 +2265,7 @@ public class ProcessService {
      * save task relations
      */
     public int saveTaskRelation(User operator, long projectCode, long 
processDefinitionCode, int processDefinitionVersion,
-                                 List<ProcessTaskRelationLog> 
taskRelationList) {
+                                List<ProcessTaskRelationLog> taskRelationList) 
{
         List<ProcessTaskRelation> processTaskRelationList = 
processTaskRelationMapper.queryByProcessCode(projectCode, 
processDefinitionCode);
         if (!processTaskRelationList.isEmpty()) {
             processTaskRelationMapper.deleteByCode(projectCode, 
processDefinitionCode);
@@ -2489,8 +2490,28 @@ public class ProcessService {
     }
 
     /**
+     * generate DagData
+     */
+    public DagData genDagData(ProcessDefinition processDefinition) {
+        List<ProcessTaskRelationLog> processTaskRelations = 
processTaskRelationLogMapper.queryByProcessCodeAndVersion(processDefinition.getCode(),
 processDefinition.getVersion());
+        Set<TaskDefinition> taskDefinitionSet = new HashSet<>();
+        for (ProcessTaskRelationLog processTaskRelation : 
processTaskRelations) {
+            if (processTaskRelation.getPreTaskCode() > 0) {
+                taskDefinitionSet.add(new 
TaskDefinition(processTaskRelation.getPreTaskCode(), 
processTaskRelation.getPreTaskVersion()));
+            }
+            if (processTaskRelation.getPostTaskCode() > 0) {
+                taskDefinitionSet.add(new 
TaskDefinition(processTaskRelation.getPostTaskCode(), 
processTaskRelation.getPostTaskVersion()));
+            }
+        }
+        List<TaskDefinitionLog> taskDefinitionLogs = 
taskDefinitionLogMapper.queryByTaskDefinitions(taskDefinitionSet);
+        return new DagData(processDefinition, processTaskRelations, 
taskDefinitionLogs);
+    }
+
+    /**
      * generate ProcessData
+     * it will be replaced by genDagData method
      */
+    @Deprecated
     public ProcessData genProcessData(ProcessDefinition processDefinition) {
         Map<String, String> locationMap = 
locationToMap(processDefinition.getLocations());
         List<TaskNode> taskNodes = 
genTaskNodeList(processDefinition.getCode(), processDefinition.getVersion(), 
locationMap);
@@ -2562,10 +2583,6 @@ public class ProcessService {
 
     /**
      * find task definition by code and version
-     *
-     * @param taskCode
-     * @param taskDefinitionVersion
-     * @return
      */
     public TaskDefinition findTaskDefinition(long taskCode, int 
taskDefinitionVersion) {
         return 
taskDefinitionLogMapper.queryByDefinitionCodeAndVersion(taskCode, 
taskDefinitionVersion);
@@ -2573,10 +2590,6 @@ public class ProcessService {
 
     /**
      * query tasks definition list by process code and process version
-     *
-     * @param processCode
-     * @param processVersion
-     * @return
      */
     public List<TaskDefinitionLog> queryTaskDefinitionList(Long processCode, 
int processVersion) {
         List<ProcessTaskRelationLog> processTaskRelationLogs =
@@ -2617,7 +2630,7 @@ public class ProcessService {
      * add authorized resources
      *
      * @param ownResources own resources
-     * @param userId       userId
+     * @param userId userId
      */
     private void addAuthorizedResources(List<Resource> ownResources, int 
userId) {
         List<Integer> relationResourceIds = 
resourceUserMapper.queryResourcesIdListByUserIdAndPerm(userId, 7);

Reply via email to