Browse Source

[Improvement-3369][api] Introduce api service interface for ProcessDefinitionService (#3371)

* [Improvement-3369][api] Code clean and improvement

* Feature: import DATA_LIST static variable
Yichao Yang 4 years ago
parent
commit
133b4de129

+ 0 - 54
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/BaseDAGService.java

@@ -1,54 +0,0 @@
-/*
- * 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.api.service;
-
-import org.apache.dolphinscheduler.common.graph.DAG;
-import org.apache.dolphinscheduler.common.model.TaskNode;
-import org.apache.dolphinscheduler.common.model.TaskNodeRelation;
-import org.apache.dolphinscheduler.common.process.ProcessDag;
-import org.apache.dolphinscheduler.common.utils.*;
-import org.apache.dolphinscheduler.dao.entity.ProcessData;
-import org.apache.dolphinscheduler.dao.entity.ProcessInstance;
-import org.apache.dolphinscheduler.dao.utils.DagHelper;
-
-import java.util.List;
-
-/**
- * base DAG service
- */
-public class BaseDAGService extends BaseService{
-
-
-    /**
-     * process instance to DAG
-     *
-     * @param processInstance input process instance
-     * @return process instance dag.
-     */
-    public static DAG<String, TaskNode, TaskNodeRelation> processInstance2DAG(ProcessInstance processInstance) {
-
-        String processDefinitionJson = processInstance.getProcessInstanceJson();
-
-        ProcessData processData = JSONUtils.parseObject(processDefinitionJson, ProcessData.class);
-
-        List<TaskNode> taskNodeList = processData.getTasks();
-
-        ProcessDag processDag = DagHelper.getProcessDag(taskNodeList);
-
-        return DagHelper.buildDagGraph(processDag);
-    }
-}

File diff suppressed because it is too large
+ 62 - 1280
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionService.java


+ 65 - 22
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProcessInstanceService.java

@@ -16,8 +16,28 @@
  */
 package org.apache.dolphinscheduler.api.service;
 
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
+import static org.apache.dolphinscheduler.common.Constants.DATA_LIST;
+import static org.apache.dolphinscheduler.common.Constants.DEPENDENT_SPLIT;
+import static org.apache.dolphinscheduler.common.Constants.GLOBAL_PARAMS;
+import static org.apache.dolphinscheduler.common.Constants.LOCAL_PARAMS;
+import static org.apache.dolphinscheduler.common.Constants.PROCESS_INSTANCE_STATE;
+import static org.apache.dolphinscheduler.common.Constants.TASK_LIST;
+
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.nio.charset.StandardCharsets;
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
 import org.apache.dolphinscheduler.api.dto.gantt.GanttDto;
 import org.apache.dolphinscheduler.api.dto.gantt.Task;
 import org.apache.dolphinscheduler.api.enums.Status;
@@ -31,14 +51,26 @@ import org.apache.dolphinscheduler.common.enums.TaskType;
 import org.apache.dolphinscheduler.common.graph.DAG;
 import org.apache.dolphinscheduler.common.model.TaskNode;
 import org.apache.dolphinscheduler.common.model.TaskNodeRelation;
+import org.apache.dolphinscheduler.common.process.ProcessDag;
 import org.apache.dolphinscheduler.common.process.Property;
-import org.apache.dolphinscheduler.common.utils.*;
+import org.apache.dolphinscheduler.common.utils.CollectionUtils;
+import org.apache.dolphinscheduler.common.utils.DateUtils;
+import org.apache.dolphinscheduler.common.utils.JSONUtils;
+import org.apache.dolphinscheduler.common.utils.ParameterUtils;
+import org.apache.dolphinscheduler.common.utils.StringUtils;
 import org.apache.dolphinscheduler.common.utils.placeholder.BusinessTimeUtils;
-import org.apache.dolphinscheduler.dao.entity.*;
+import org.apache.dolphinscheduler.dao.entity.ProcessData;
+import org.apache.dolphinscheduler.dao.entity.ProcessDefinition;
+import org.apache.dolphinscheduler.dao.entity.ProcessInstance;
+import org.apache.dolphinscheduler.dao.entity.Project;
+import org.apache.dolphinscheduler.dao.entity.TaskInstance;
+import org.apache.dolphinscheduler.dao.entity.Tenant;
+import org.apache.dolphinscheduler.dao.entity.User;
 import org.apache.dolphinscheduler.dao.mapper.ProcessDefinitionMapper;
 import org.apache.dolphinscheduler.dao.mapper.ProcessInstanceMapper;
 import org.apache.dolphinscheduler.dao.mapper.ProjectMapper;
 import org.apache.dolphinscheduler.dao.mapper.TaskInstanceMapper;
+import org.apache.dolphinscheduler.dao.utils.DagHelper;
 import org.apache.dolphinscheduler.service.process.ProcessService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -46,22 +78,14 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.io.BufferedReader;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.nio.charset.StandardCharsets;
-import java.text.ParseException;
-import java.util.*;
-import java.util.stream.Collectors;
-
-import static org.apache.dolphinscheduler.common.Constants.*;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 
 /**
  * process instance service
  */
 @Service
-public class ProcessInstanceService extends BaseDAGService {
+public class ProcessInstanceService extends BaseService {
 
 
     private static final Logger logger = LoggerFactory.getLogger(ProcessInstanceService.class);
@@ -167,7 +191,7 @@ public class ProcessInstanceService extends BaseDAGService {
         ProcessDefinition processDefinition = processService.findProcessDefineById(processInstance.getProcessDefinitionId());
         processInstance.setReceivers(processDefinition.getReceivers());
         processInstance.setReceiversCc(processDefinition.getReceiversCc());
-        result.put(Constants.DATA_LIST, processInstance);
+        result.put(DATA_LIST, processInstance);
         putMsg(result, Status.SUCCESS);
 
         return result;
@@ -242,7 +266,7 @@ public class ProcessInstanceService extends BaseDAGService {
 
         pageInfo.setTotalCount((int) processInstanceList.getTotal());
         pageInfo.setLists(processInstances);
-        result.put(Constants.DATA_LIST, pageInfo);
+        result.put(DATA_LIST, pageInfo);
         putMsg(result, Status.SUCCESS);
         return result;
     }
@@ -273,7 +297,7 @@ public class ProcessInstanceService extends BaseDAGService {
         Map<String, Object> resultMap = new HashMap<>();
         resultMap.put(PROCESS_INSTANCE_STATE, processInstance.getState().toString());
         resultMap.put(TASK_LIST, taskInstanceList);
-        result.put(Constants.DATA_LIST, resultMap);
+        result.put(DATA_LIST, resultMap);
 
         putMsg(result, Status.SUCCESS);
         return result;
@@ -362,7 +386,7 @@ public class ProcessInstanceService extends BaseDAGService {
         }
         Map<String, Object> dataMap = new HashMap<>();
         dataMap.put("subProcessInstanceId", subWorkflowInstance.getId());
-        result.put(Constants.DATA_LIST, dataMap);
+        result.put(DATA_LIST, dataMap);
         putMsg(result, Status.SUCCESS);
         return result;
     }
@@ -501,7 +525,7 @@ public class ProcessInstanceService extends BaseDAGService {
         }
         Map<String, Object> dataMap = new HashMap<>();
         dataMap.put("parentWorkflowInstance", parentWorkflowInstance.getId());
-        result.put(Constants.DATA_LIST, dataMap);
+        result.put(DATA_LIST, dataMap);
         putMsg(result, Status.SUCCESS);
         return result;
     }
@@ -618,7 +642,7 @@ public class ProcessInstanceService extends BaseDAGService {
         resultMap.put(GLOBAL_PARAMS, globalParams);
         resultMap.put(LOCAL_PARAMS, localUserDefParams);
 
-        result.put(Constants.DATA_LIST, resultMap);
+        result.put(DATA_LIST, resultMap);
         putMsg(result, Status.SUCCESS);
         return result;
     }
@@ -668,9 +692,28 @@ public class ProcessInstanceService extends BaseDAGService {
         }
         ganttDto.setTasks(taskList);
 
-        result.put(Constants.DATA_LIST, ganttDto);
+        result.put(DATA_LIST, ganttDto);
         putMsg(result, Status.SUCCESS);
         return result;
     }
 
+    /**
+     * process instance to DAG
+     *
+     * @param processInstance input process instance
+     * @return process instance dag.
+     */
+    private static DAG<String, TaskNode, TaskNodeRelation> processInstance2DAG(ProcessInstance processInstance) {
+
+        String processDefinitionJson = processInstance.getProcessInstanceJson();
+
+        ProcessData processData = JSONUtils.parseObject(processDefinitionJson, ProcessData.class);
+
+        List<TaskNode> taskNodeList = processData.getTasks();
+
+        ProcessDag processDag = DagHelper.getProcessDag(taskNodeList);
+
+        return DagHelper.buildDagGraph(processDag);
+    }
+
 }

File diff suppressed because it is too large
+ 1493 - 0
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessDefinitionServiceImpl.java


+ 3 - 4
dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/ProcessDefinitionControllerTest.java

@@ -18,6 +18,7 @@ package org.apache.dolphinscheduler.api.controller;
 
 import org.apache.dolphinscheduler.api.enums.Status;
 import org.apache.dolphinscheduler.api.service.ProcessDefinitionService;
+import org.apache.dolphinscheduler.api.service.impl.ProcessDefinitionServiceImpl;
 import org.apache.dolphinscheduler.api.utils.PageInfo;
 import org.apache.dolphinscheduler.api.utils.Result;
 import org.apache.dolphinscheduler.common.Constants;
@@ -55,7 +56,7 @@ public class ProcessDefinitionControllerTest{
     private ProcessDefinitionController processDefinitionController;
 
     @Mock
-    private ProcessDefinitionService processDefinitionService;
+    private ProcessDefinitionServiceImpl processDefinitionService;
 
     protected User user;
 
@@ -342,9 +343,7 @@ public class ProcessDefinitionControllerTest{
         String processDefinitionIds = "1,2";
         String projectName = "test";
         HttpServletResponse response = new MockHttpServletResponse();
-        ProcessDefinitionService service = new ProcessDefinitionService();
-        ProcessDefinitionService spy = Mockito.spy(service);
-        Mockito.doNothing().when(spy).batchExportProcessDefinitionByIds(user, projectName, processDefinitionIds, response);
+        Mockito.doNothing().when(this.processDefinitionService).batchExportProcessDefinitionByIds(user, projectName, processDefinitionIds, response);
         processDefinitionController.batchExportProcessDefinitionByIds(user, projectName, processDefinitionIds, response);
     }
 

+ 0 - 50
dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/BaseDAGServiceTest.java

@@ -1,50 +0,0 @@
-/*
- * 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.api.service;
-
-import org.apache.dolphinscheduler.common.graph.DAG;
-import org.apache.dolphinscheduler.common.model.TaskNode;
-import org.apache.dolphinscheduler.common.model.TaskNodeRelation;
-import org.apache.dolphinscheduler.dao.entity.ProcessInstance;
-import org.junit.Assert;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.junit.MockitoJUnitRunner;
-
-@RunWith(MockitoJUnitRunner.class)
-public class BaseDAGServiceTest {
-
-    @Test
-    public void testProcessInstance2DAG(){
-
-        ProcessInstance processInstance = new ProcessInstance();
-        processInstance.setProcessInstanceJson("{\"globalParams\":[],\"tasks\":[{\"type\":\"SHELL\",\"id\":\"tasks-61567\"," +
-                "\"name\":\"开始\",\"params\":{\"resourceList\":[],\"localParams\":[],\"rawScript\":\"echo '1'\"}," +
-                "\"description\":\"\",\"runFlag\":\"NORMAL\",\"dependence\":{},\"maxRetryTimes\":\"0\",\"retryInterval\":\"1\"," +
-                "\"timeout\":{\"strategy\":\"\",\"interval\":null,\"enable\":false},\"taskInstancePriority\":\"MEDIUM\"," +
-                "\"workerGroupId\":-1,\"preTasks\":[]},{\"type\":\"SHELL\",\"id\":\"tasks-6-3ug5ej\",\"name\":\"结束\"," +
-                "\"params\":{\"resourceList\":[],\"localParams\":[],\"rawScript\":\"echo '1'\"},\"description\":\"\"," +
-                "\"runFlag\":\"NORMAL\",\"dependence\":{},\"maxRetryTimes\":\"0\",\"retryInterval\":\"1\"," +
-                "\"timeout\":{\"strategy\":\"\",\"interval\":null,\"enable\":false},\"taskInstancePriority\":\"MEDIUM\"," +
-                "\"workerGroupId\":-1,\"preTasks\":[\"开始\"]}],\"tenantId\":-1,\"timeout\":0}");
-
-        DAG<String, TaskNode, TaskNodeRelation> relationDAG = BaseDAGService.processInstance2DAG(processInstance);
-
-        Assert.assertTrue(relationDAG.containsNode("开始"));
-
-    }
-}

+ 33 - 197
dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionServiceTest.java

@@ -16,21 +16,45 @@
  */
 package org.apache.dolphinscheduler.api.service;
 
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import org.apache.dolphinscheduler.api.ApiApplicationServer;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 import org.apache.dolphinscheduler.api.dto.ProcessMeta;
 import org.apache.dolphinscheduler.api.enums.Status;
+import org.apache.dolphinscheduler.api.service.impl.ProcessDefinitionServiceImpl;
 import org.apache.dolphinscheduler.common.Constants;
-import org.apache.dolphinscheduler.common.enums.*;
+import org.apache.dolphinscheduler.common.enums.ExecutionStatus;
+import org.apache.dolphinscheduler.common.enums.FailureStrategy;
+import org.apache.dolphinscheduler.common.enums.Priority;
+import org.apache.dolphinscheduler.common.enums.ReleaseState;
+import org.apache.dolphinscheduler.common.enums.UserType;
+import org.apache.dolphinscheduler.common.enums.WarningType;
 import org.apache.dolphinscheduler.common.utils.DateUtils;
 import org.apache.dolphinscheduler.common.utils.FileUtils;
-import org.apache.dolphinscheduler.common.utils.*;
-import org.apache.dolphinscheduler.dao.entity.*;
-import org.apache.dolphinscheduler.dao.mapper.*;
+import org.apache.dolphinscheduler.common.utils.JSONUtils;
+import org.apache.dolphinscheduler.dao.entity.DataSource;
+import org.apache.dolphinscheduler.dao.entity.ProcessData;
+import org.apache.dolphinscheduler.dao.entity.ProcessDefinition;
+import org.apache.dolphinscheduler.dao.entity.ProcessInstance;
+import org.apache.dolphinscheduler.dao.entity.Project;
+import org.apache.dolphinscheduler.dao.entity.Schedule;
+import org.apache.dolphinscheduler.dao.entity.TaskInstance;
+import org.apache.dolphinscheduler.dao.entity.User;
+import org.apache.dolphinscheduler.dao.mapper.DataSourceMapper;
+import org.apache.dolphinscheduler.dao.mapper.ProcessDefinitionMapper;
+import org.apache.dolphinscheduler.dao.mapper.ProcessInstanceMapper;
+import org.apache.dolphinscheduler.dao.mapper.ProjectMapper;
+import org.apache.dolphinscheduler.dao.mapper.ScheduleMapper;
+import org.apache.dolphinscheduler.dao.mapper.TaskInstanceMapper;
 import org.apache.dolphinscheduler.service.process.ProcessService;
 import org.apache.http.entity.ContentType;
-import org.json.JSONException;
 import org.junit.Assert;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -38,23 +62,14 @@ import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.junit.MockitoJUnitRunner;
-import org.skyscreamer.jsonassert.JSONAssert;
-import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.mock.web.MockMultipartFile;
 import org.springframework.web.multipart.MultipartFile;
 
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.text.MessageFormat;
-import java.util.*;
-
 @RunWith(MockitoJUnitRunner.Silent.class)
-@SpringBootTest(classes = ApiApplicationServer.class)
 public class ProcessDefinitionServiceTest {
 
     @InjectMocks
-    ProcessDefinitionService processDefinitionService;
+    ProcessDefinitionServiceImpl processDefinitionService;
 
     @Mock
     private DataSourceMapper dataSourceMapper;
@@ -502,157 +517,6 @@ public class ProcessDefinitionServiceTest {
         Assert.assertEquals(Status.SUCCESS, taskNotNuLLRes.get(Constants.STATUS));
     }
 
-    /**
-     * add datasource param and dependent when export process
-     * @throws JSONException
-     */
-    @Test
-    public void testAddTaskNodeSpecialParam() throws JSONException {
-
-        Mockito.when(dataSourceMapper.selectById(1)).thenReturn(getDataSource());
-        Mockito.when(processDefineMapper.queryByDefineId(2)).thenReturn(getProcessDefinition());
-
-        String corSqlDependentJson = processDefinitionService.addExportTaskNodeSpecialParam(sqlDependentJson);
-
-        JSONAssert.assertEquals(sqlDependentJson,corSqlDependentJson,false);
-
-    }
-
-    @Test
-    public void testExportProcessMetaDataStr() {
-        Mockito.when(scheduleMapper.queryByProcessDefinitionId(46)).thenReturn(getSchedulerList());
-        ProcessDefinition processDefinition = getProcessDefinition();
-        processDefinition.setProcessDefinitionJson(sqlDependentJson);
-
-        String exportProcessMetaDataStr = processDefinitionService.exportProcessMetaDataStr(46, processDefinition);
-        Assert.assertNotEquals(sqlDependentJson,exportProcessMetaDataStr);
-    }
-
-    @Test
-    public void testAddExportTaskNodeSpecialParam() throws JSONException {
-        String shellData = shellJson;
-
-        String resultStr = processDefinitionService.addExportTaskNodeSpecialParam(shellData);
-        JSONAssert.assertEquals(shellJson, resultStr, false);
-    }
-
-    @Test
-    public void testImportProcessSchedule() {
-        User loginUser = new User();
-        loginUser.setId(1);
-        loginUser.setUserType(UserType.GENERAL_USER);
-
-        String currentProjectName = "test";
-        String processDefinitionName = "test_process";
-        Integer processDefinitionId = 1;
-        Schedule schedule = getSchedule();
-
-        ProcessMeta processMeta = getProcessMeta();
-
-        int insertFlag = processDefinitionService.importProcessSchedule(loginUser, currentProjectName, processMeta,
-                processDefinitionName, processDefinitionId);
-        Assert.assertEquals(0, insertFlag);
-
-        ProcessMeta processMetaCron = new ProcessMeta();
-        processMetaCron.setScheduleCrontab(schedule.getCrontab());
-
-        int insertFlagCron = processDefinitionService.importProcessSchedule(loginUser, currentProjectName, processMetaCron,
-                processDefinitionName, processDefinitionId);
-        Assert.assertEquals(0, insertFlagCron);
-
-        WorkerGroup workerGroup = new WorkerGroup();
-        workerGroup.setName("ds-test-workergroup");
-        List<WorkerGroup> workerGroups = new ArrayList<>();
-        workerGroups.add(workerGroup);
-
-        processMetaCron.setScheduleWorkerGroupName("ds-test");
-        int insertFlagWorker = processDefinitionService.importProcessSchedule(loginUser, currentProjectName, processMetaCron,
-                processDefinitionName, processDefinitionId);
-        Assert.assertEquals(0, insertFlagWorker);
-
-        int workerNullFlag = processDefinitionService.importProcessSchedule(loginUser, currentProjectName, processMetaCron,
-                processDefinitionName, processDefinitionId);
-        Assert.assertEquals(0, workerNullFlag);
-
-
-    }
-
-    /**
-     * import sub process test
-     */
-    @Test
-    public void testImportSubProcess() {
-
-        User loginUser = new User();
-        loginUser.setId(1);
-        loginUser.setUserType(UserType.ADMIN_USER);
-
-        Project testProject = getProject("test");
-
-        //Recursive subprocess sub2 process in sub1 process and sub1process in top process
-        String topProcessJson = "{\"globalParams\":[]," +
-                "\"tasks\":[{\"type\":\"SHELL\",\"id\":\"tasks-38634\",\"name\":\"shell1\"," +
-                "\"params\":{\"resourceList\":[],\"localParams\":[],\"rawScript\":\"#!/bin/bash\\necho \\\"shell-1\\\"\"}," +
-                "\"description\":\"\",\"runFlag\":\"NORMAL\",\"dependence\":{},\"maxRetryTimes\":\"0\"," +
-                "\"retryInterval\":\"1\",\"timeout\":{\"strategy\":\"\",\"interval\":null,\"enable\":false}," +
-                "\"taskInstancePriority\":\"MEDIUM\",\"workerGroupId\":-1,\"preTasks\":[]}," +
-                "{\"type\":\"SUB_PROCESS\",\"id\":\"tasks-44207\",\"name\":\"shell-4\"," +
-                "\"params\":{\"processDefinitionId\":39},\"description\":\"\",\"runFlag\":\"NORMAL\"," +
-                "\"dependence\":{},\"timeout\":{\"strategy\":\"\",\"interval\":null,\"enable\":false}," +
-                "\"taskInstancePriority\":\"MEDIUM\",\"workerGroupId\":-1," +
-                "\"preTasks\":[\"shell1\"]}],\"tenantId\":1,\"timeout\":0}";
-
-        String sub1ProcessJson = "{\"globalParams\":[],\"tasks\":[{\"type\":\"SHELL\",\"id\":\"tasks-84090\"," +
-                "\"name\":\"shell-4\",\"params\":{\"resourceList\":[],\"localParams\":[],\"rawScript\":\"#!/bin/bash\\necho \\\"shell-4\\\"\"}," +
-                "\"description\":\"\",\"runFlag\":\"NORMAL\",\"dependence\":{},\"maxRetryTimes\":\"0\"," +
-                "\"retryInterval\":\"1\",\"timeout\":{\"strategy\":\"\",\"interval\":null,\"enable\":false}," +
-                "\"taskInstancePriority\":\"MEDIUM\",\"workerGroupId\":-1,\"preTasks\":[]},{\"type\":\"SUB_PROCESS\"," +
-                "\"id\":\"tasks-87364\",\"name\":\"shell-5\"," +
-                "\"params\":{\"processDefinitionId\":46},\"description\":\"\",\"runFlag\":\"NORMAL\",\"dependence\":{}," +
-                "\"timeout\":{\"strategy\":\"\",\"interval\":null,\"enable\":false},\"taskInstancePriority\":\"MEDIUM\"," +
-                "\"workerGroupId\":-1,\"preTasks\":[\"shell-4\"]}],\"tenantId\":1,\"timeout\":0}";
-
-        String sub2ProcessJson = "{\"globalParams\":[]," +
-                "\"tasks\":[{\"type\":\"SHELL\",\"id\":\"tasks-52423\",\"name\":\"shell-5\"," +
-                "\"params\":{\"resourceList\":[],\"localParams\":[],\"rawScript\":\"echo \\\"shell-5\\\"\"},\"description\":\"\"," +
-                "\"runFlag\":\"NORMAL\",\"dependence\":{},\"maxRetryTimes\":\"0\",\"retryInterval\":\"1\"," +
-                "\"timeout\":{\"strategy\":\"\",\"interval\":null,\"enable\":false},\"taskInstancePriority\":\"MEDIUM\",\"workerGroupId\":-1," +
-                "\"preTasks\":[]}],\"tenantId\":1,\"timeout\":0}";
-
-
-        ObjectNode jsonObject = JSONUtils.parseObject(topProcessJson);
-        ArrayNode jsonArray = (ArrayNode) jsonObject.path("tasks");
-
-        String originSubJson = jsonArray.toString();
-
-        Map<Integer, Integer> subProcessIdMap = new HashMap<>(20);
-
-        ProcessDefinition shellDefinition1 = new ProcessDefinition();
-        shellDefinition1.setId(39);
-        shellDefinition1.setName("shell-4");
-        shellDefinition1.setProjectId(2);
-        shellDefinition1.setProcessDefinitionJson(sub1ProcessJson);
-
-        ProcessDefinition shellDefinition2 = new ProcessDefinition();
-        shellDefinition2.setId(46);
-        shellDefinition2.setName("shell-5");
-        shellDefinition2.setProjectId(2);
-        shellDefinition2.setProcessDefinitionJson(sub2ProcessJson);
-
-        Mockito.when(processDefineMapper.queryByDefineId(39)).thenReturn(shellDefinition1);
-        Mockito.when(processDefineMapper.queryByDefineId(46)).thenReturn(shellDefinition2);
-        Mockito.when(processDefineMapper.queryByDefineName(testProject.getId(), "shell-5")).thenReturn(null);
-        Mockito.when(processDefineMapper.queryByDefineName(testProject.getId(), "shell-4")).thenReturn(null);
-        Mockito.when(processDefineMapper.queryByDefineName(testProject.getId(), "testProject")).thenReturn(shellDefinition2);
-
-        processDefinitionService.importSubProcess(loginUser,testProject, jsonArray, subProcessIdMap);
-
-        String correctSubJson = jsonArray.toString();
-
-        Assert.assertEquals(originSubJson, correctSubJson);
-
-    }
-
     @Test
     public void testImportProcessDefinitionById() throws IOException {
 
@@ -731,34 +595,6 @@ public class ProcessDefinitionServiceTest {
 
     }
 
-    /**
-     * check import process metadata
-     * @param file file
-     * @param loginUser login user
-     * @param currentProjectName current project name
-     * @param processMetaJson process meta json
-     * @throws IOException IO exception
-     */
-    private void improssProcessCheckData(File file, User loginUser, String currentProjectName, String processMetaJson) throws IOException {
-        //check null
-        FileUtils.writeStringToFile(new File("/tmp/task.json"),processMetaJson);
-
-        File fileEmpty = new File("/tmp/task.json");
-
-        FileInputStream fileEmptyInputStream = new FileInputStream("/tmp/task.json");
-
-        MultipartFile multiFileEmpty = new MockMultipartFile(fileEmpty.getName(), fileEmpty.getName(),
-                ContentType.APPLICATION_OCTET_STREAM.toString(), fileEmptyInputStream);
-
-        Map<String, Object> resEmptyProcess = processDefinitionService.importProcessDefinition(loginUser, multiFileEmpty, currentProjectName);
-
-        Assert.assertEquals(Status.DATA_IS_NULL, resEmptyProcess.get(Constants.STATUS));
-
-        boolean deleteFlag = file.delete();
-
-        Assert.assertTrue(deleteFlag);
-    }
-
     @Test
     public void testUpdateProcessDefinition () {
         User loginUser = new User();