This is an automated email from the ASF dual-hosted git repository.
leonbao pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git
The following commit(s) were added to refs/heads/dev by this push:
new f3c647d45e [Improvement][Api] Interface and entity optimization to
improve code scalability (#10466). (#10468)
f3c647d45e is described below
commit f3c647d45eebd5a7bae8c2083f80ce17824df892
Author: hstdream <[email protected]>
AuthorDate: Thu Jun 16 18:22:36 2022 +0800
[Improvement][Api] Interface and entity optimization to improve code
scalability (#10466). (#10468)
* [Improvement][Api] Interface and entity optimization to improve code
scalability (#10466).
* [Improvement][Api] Interface and entity optimization to improve code
scalability (#10466).
* [Improvement][Api] Interface and entity optimization to improve code
scalability (#10466).
* [Improvement][Api] Interface and entity optimization to improve code
scalability (#10466).
* fix ut timezone.
Co-authored-by: houshitao <[email protected]>
---
.../controller/ProcessDefinitionController.java | 78 +++++----
.../api/controller/ProcessInstanceController.java | 49 +++---
.../api/dto/ProcessDefinitionDto.java | 26 +++
.../api/dto/ProcessInstanceDto.java | 26 +++
.../dolphinscheduler/api/python/PythonGateway.java | 35 ++--
.../dolphinscheduler/api/service/BaseService.java | 6 +-
.../api/service/ProcessDefinitionService.java | 46 +++++-
.../api/service/ProcessInstanceService.java | 10 +-
.../api/service/impl/BaseServiceImpl.java | 21 +--
.../service/impl/ProcessDefinitionServiceImpl.java | 178 ++++++++++++++-------
.../service/impl/ProcessInstanceServiceImpl.java | 57 ++++---
.../ProcessDefinitionControllerTest.java | 31 ++--
.../controller/ProcessInstanceControllerTest.java | 20 ++-
.../api/service/ProcessDefinitionServiceTest.java | 60 +++----
.../api/service/ProcessInstanceServiceTest.java | 40 ++---
.../common/utils/JSONUtilsTest.java | 18 +--
16 files changed, 439 insertions(+), 262 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 f6cb4d4394..e5ffc69732 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
@@ -17,6 +17,20 @@
package org.apache.dolphinscheduler.api.controller;
+import java.text.MessageFormat;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import javax.servlet.http.HttpServletResponse;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.apache.commons.lang3.StringUtils;
import org.apache.dolphinscheduler.api.aspect.AccessLogAnnotation;
import org.apache.dolphinscheduler.api.enums.Status;
import org.apache.dolphinscheduler.api.exceptions.ApiException;
@@ -28,17 +42,6 @@ import org.apache.dolphinscheduler.common.enums.ReleaseState;
import org.apache.dolphinscheduler.common.utils.ParameterUtils;
import org.apache.dolphinscheduler.dao.entity.ProcessDefinition;
import org.apache.dolphinscheduler.dao.entity.User;
-
-import org.apache.commons.lang3.StringUtils;
-
-import java.text.MessageFormat;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-import java.util.HashSet;
-
-import javax.servlet.http.HttpServletResponse;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -55,15 +58,24 @@ import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
-
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
import springfox.documentation.annotations.ApiIgnore;
-
-import static org.apache.dolphinscheduler.api.enums.Status.*;
+import static
org.apache.dolphinscheduler.api.enums.Status.BATCH_COPY_PROCESS_DEFINITION_ERROR;
+import static
org.apache.dolphinscheduler.api.enums.Status.BATCH_DELETE_PROCESS_DEFINE_BY_CODES_ERROR;
+import static
org.apache.dolphinscheduler.api.enums.Status.BATCH_MOVE_PROCESS_DEFINITION_ERROR;
+import static
org.apache.dolphinscheduler.api.enums.Status.CREATE_PROCESS_DEFINITION_ERROR;
+import static
org.apache.dolphinscheduler.api.enums.Status.DELETE_PROCESS_DEFINE_BY_CODE_ERROR;
+import static
org.apache.dolphinscheduler.api.enums.Status.DELETE_PROCESS_DEFINITION_VERSION_ERROR;
+import static
org.apache.dolphinscheduler.api.enums.Status.ENCAPSULATION_TREEVIEW_STRUCTURE_ERROR;
+import static
org.apache.dolphinscheduler.api.enums.Status.GET_TASKS_LIST_BY_PROCESS_DEFINITION_ID_ERROR;
+import static
org.apache.dolphinscheduler.api.enums.Status.IMPORT_PROCESS_DEFINE_ERROR;
+import static
org.apache.dolphinscheduler.api.enums.Status.QUERY_DETAIL_OF_PROCESS_DEFINITION_ERROR;
+import static
org.apache.dolphinscheduler.api.enums.Status.QUERY_PROCESS_DEFINITION_LIST;
+import static
org.apache.dolphinscheduler.api.enums.Status.QUERY_PROCESS_DEFINITION_LIST_PAGING_ERROR;
+import static
org.apache.dolphinscheduler.api.enums.Status.QUERY_PROCESS_DEFINITION_VERSIONS_ERROR;
+import static
org.apache.dolphinscheduler.api.enums.Status.RELEASE_PROCESS_DEFINITION_ERROR;
+import static
org.apache.dolphinscheduler.api.enums.Status.SWITCH_PROCESS_DEFINITION_VERSION_ERROR;
+import static
org.apache.dolphinscheduler.api.enums.Status.UPDATE_PROCESS_DEFINITION_ERROR;
+import static
org.apache.dolphinscheduler.api.enums.Status.VERIFY_PROCESS_DEFINITION_NAME_UNIQUE_ERROR;
/**
* process definition controller
@@ -91,13 +103,15 @@ public class ProcessDefinitionController extends
BaseController {
* @param tenantCode tenantCode
* @param taskRelationJson relation json for nodes
* @param taskDefinitionJson taskDefinitionJson
+ * @param otherParamsJson otherParamsJson handle other params
* @return create result code
*/
@ApiOperation(value = "createProcessDefinition", notes =
"CREATE_PROCESS_DEFINITION_NOTES")
@ApiImplicitParams({
@ApiImplicitParam(name = "name", value = "PROCESS_DEFINITION_NAME",
required = true, type = "String"),
@ApiImplicitParam(name = "locations", value =
"PROCESS_DEFINITION_LOCATIONS", required = true, type = "String"),
- @ApiImplicitParam(name = "description", value =
"PROCESS_DEFINITION_DESC", required = false, type = "String")
+ @ApiImplicitParam(name = "description", value =
"PROCESS_DEFINITION_DESC", required = false, type = "String"),
+ @ApiImplicitParam(name = "otherParamsJson", value =
"OTHER_PARAMS_JSON", required = false, type = "String")
})
@PostMapping()
@ResponseStatus(HttpStatus.CREATED)
@@ -113,9 +127,10 @@ public class ProcessDefinitionController extends
BaseController {
@RequestParam(value = "tenantCode",
required = true) String tenantCode,
@RequestParam(value =
"taskRelationJson", required = true) String taskRelationJson,
@RequestParam(value =
"taskDefinitionJson", required = true) String taskDefinitionJson,
+ @RequestParam(value =
"otherParamsJson", required = false) String otherParamsJson,
@RequestParam(value =
"executionType", defaultValue = "PARALLEL") ProcessExecutionTypeEnum
executionType) {
Map<String, Object> result =
processDefinitionService.createProcessDefinition(loginUser, projectCode, name,
description, globalParams,
- locations, timeout, tenantCode, taskRelationJson,
taskDefinitionJson,executionType);
+ locations, timeout, tenantCode, taskRelationJson,
taskDefinitionJson, otherParamsJson, executionType);
return returnDataList(result);
}
@@ -206,6 +221,7 @@ public class ProcessDefinitionController extends
BaseController {
* @param tenantCode tenantCode
* @param taskRelationJson relation json for nodes
* @param taskDefinitionJson taskDefinitionJson
+ * @param otherParamsJson otherParamsJson handle other params
* @return update result code
*/
@ApiOperation(value = "update", notes = "UPDATE_PROCESS_DEFINITION_NOTES")
@@ -214,7 +230,8 @@ public class ProcessDefinitionController extends
BaseController {
@ApiImplicitParam(name = "code", value = "PROCESS_DEFINITION_CODE",
required = true, dataType = "Long", example = "123456789"),
@ApiImplicitParam(name = "locations", value =
"PROCESS_DEFINITION_LOCATIONS", required = true, type = "String"),
@ApiImplicitParam(name = "description", value =
"PROCESS_DEFINITION_DESC", required = false, type = "String"),
- @ApiImplicitParam(name = "releaseState", value =
"RELEASE_PROCESS_DEFINITION_NOTES", required = false, dataType = "ReleaseState")
+ @ApiImplicitParam(name = "releaseState", value =
"RELEASE_PROCESS_DEFINITION_NOTES", required = false, dataType =
"ReleaseState"),
+ @ApiImplicitParam(name = "otherParamsJson", value =
"OTHER_PARAMS_JSON", required = false, type = "String")
})
@PutMapping(value = "/{code}")
@ResponseStatus(HttpStatus.OK)
@@ -231,11 +248,12 @@ public class ProcessDefinitionController extends
BaseController {
@RequestParam(value = "tenantCode",
required = true) String tenantCode,
@RequestParam(value =
"taskRelationJson", required = true) String taskRelationJson,
@RequestParam(value =
"taskDefinitionJson", required = true) String taskDefinitionJson,
+ @RequestParam(value =
"otherParamsJson", required = false) String otherParamsJson,
@RequestParam(value =
"executionType", defaultValue = "PARALLEL") ProcessExecutionTypeEnum
executionType,
@RequestParam(value =
"releaseState", required = false, defaultValue = "OFFLINE") ReleaseState
releaseState) {
Map<String, Object> result =
processDefinitionService.updateProcessDefinition(loginUser, projectCode, name,
code, description, globalParams,
- locations, timeout, tenantCode, taskRelationJson,
taskDefinitionJson,executionType);
+ locations, timeout, tenantCode, taskRelationJson,
taskDefinitionJson,otherParamsJson, executionType);
// If the update fails, the result will be returned directly
if (result.get(Constants.STATUS) != Status.SUCCESS) {
return returnDataList(result);
@@ -450,6 +468,7 @@ public class ProcessDefinitionController extends
BaseController {
* @param loginUser login user
* @param projectCode project code
* @param searchVal search value
+ * @param otherParamsJson otherParamsJson handle other params
* @param pageNo page number
* @param pageSize page size
* @param userId user id
@@ -460,7 +479,8 @@ public class ProcessDefinitionController extends
BaseController {
@ApiImplicitParam(name = "searchVal", value = "SEARCH_VAL", required =
false, type = "String"),
@ApiImplicitParam(name = "userId", value = "USER_ID", required =
false, 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 = "pageSize", value = "PAGE_SIZE", required =
true, dataType = "Int", example = "10"),
+ @ApiImplicitParam(name = "otherParamsJson", value =
"OTHER_PARAMS_JSON", required = false, type = "String")
})
@GetMapping()
@ResponseStatus(HttpStatus.OK)
@@ -469,6 +489,7 @@ public class ProcessDefinitionController extends
BaseController {
public Result queryProcessDefinitionListPaging(@ApiIgnore
@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@ApiParam(name =
"projectCode", value = "PROJECT_CODE", required = true) @PathVariable long
projectCode,
@RequestParam(value =
"searchVal", required = false) String searchVal,
+ @RequestParam(value =
"otherParamsJson", required = false) String otherParamsJson,
@RequestParam(value =
"userId", required = false, defaultValue = "0") Integer userId,
@RequestParam("pageNo")
Integer pageNo,
@RequestParam("pageSize")
Integer pageSize) {
@@ -478,7 +499,7 @@ public class ProcessDefinitionController extends
BaseController {
}
searchVal = ParameterUtils.handleEscapes(searchVal);
- return
processDefinitionService.queryProcessDefinitionListPaging(loginUser,
projectCode, searchVal, userId, pageNo, pageSize);
+ return
processDefinitionService.queryProcessDefinitionListPaging(loginUser,
projectCode, searchVal, otherParamsJson, userId, pageNo, pageSize);
}
/**
@@ -783,6 +804,7 @@ public class ProcessDefinitionController extends
BaseController {
* @param scheduleJson scheduleJson
* @param executionType executionType
* @param releaseState releaseState
+ * @param otherParamsJson otherParamsJson handle other params
* @return update result code
*/
@ApiOperation(value = "updateBasicInfo", notes =
"UPDATE_PROCESS_DEFINITION_BASIC_INFO_NOTES")
@@ -790,7 +812,8 @@ public class ProcessDefinitionController extends
BaseController {
@ApiImplicitParam(name = "name", value = "PROCESS_DEFINITION_NAME",
required = true, type = "String"),
@ApiImplicitParam(name = "code", value = "PROCESS_DEFINITION_CODE",
required = true, dataType = "Long", example = "123456789"),
@ApiImplicitParam(name = "description", value =
"PROCESS_DEFINITION_DESC", required = false, type = "String"),
- @ApiImplicitParam(name = "releaseState", value =
"RELEASE_PROCESS_DEFINITION_NOTES", required = false, dataType = "ReleaseState")
+ @ApiImplicitParam(name = "releaseState", value =
"RELEASE_PROCESS_DEFINITION_NOTES", required = false, dataType =
"ReleaseState"),
+ @ApiImplicitParam(name = "otherParamsJson", value =
"OTHER_PARAMS_JSON", required = false, type = "String")
})
@PutMapping(value = "/{code}/basic-info")
@ResponseStatus(HttpStatus.OK)
@@ -805,10 +828,11 @@ public class ProcessDefinitionController extends
BaseController {
@RequestParam(value =
"timeout", required = false, defaultValue = "0") int timeout,
@RequestParam(value =
"tenantCode", required = true) String tenantCode,
@RequestParam(value =
"scheduleJson", required = false) String scheduleJson,
+ @RequestParam(value =
"otherParamsJson", required = false) String otherParamsJson,
@RequestParam(value =
"executionType", defaultValue = "PARALLEL") ProcessExecutionTypeEnum
executionType,
@RequestParam(value =
"releaseState", required = false, defaultValue = "OFFLINE") ReleaseState
releaseState) {
Map<String, Object> result =
processDefinitionService.updateProcessDefinitionBasicInfo(loginUser,
projectCode, name, code, description, globalParams,
- timeout, tenantCode, scheduleJson, executionType);
+ timeout, tenantCode, scheduleJson, otherParamsJson, executionType);
// If the update fails, the result will be returned directly
if (result.get(Constants.STATUS) != Status.SUCCESS) {
return returnDataList(result);
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 8e898e443f..47a9f2183c 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
@@ -17,17 +17,19 @@
package org.apache.dolphinscheduler.api.controller;
-import static
org.apache.dolphinscheduler.api.enums.Status.BATCH_DELETE_PROCESS_INSTANCE_BY_IDS_ERROR;
-import static
org.apache.dolphinscheduler.api.enums.Status.DELETE_PROCESS_INSTANCE_BY_ID_ERROR;
-import static
org.apache.dolphinscheduler.api.enums.Status.ENCAPSULATION_PROCESS_INSTANCE_GANTT_STRUCTURE_ERROR;
-import static
org.apache.dolphinscheduler.api.enums.Status.QUERY_PARENT_PROCESS_INSTANCE_DETAIL_INFO_BY_SUB_PROCESS_INSTANCE_ID_ERROR;
-import static
org.apache.dolphinscheduler.api.enums.Status.QUERY_PROCESS_INSTANCE_ALL_VARIABLES_ERROR;
-import static
org.apache.dolphinscheduler.api.enums.Status.QUERY_PROCESS_INSTANCE_BY_ID_ERROR;
-import static
org.apache.dolphinscheduler.api.enums.Status.QUERY_PROCESS_INSTANCE_LIST_PAGING_ERROR;
-import static
org.apache.dolphinscheduler.api.enums.Status.QUERY_SUB_PROCESS_INSTANCE_DETAIL_INFO_BY_TASK_ID_ERROR;
-import static
org.apache.dolphinscheduler.api.enums.Status.QUERY_TASK_LIST_BY_PROCESS_INSTANCE_ID_ERROR;
-import static
org.apache.dolphinscheduler.api.enums.Status.UPDATE_PROCESS_INSTANCE_ERROR;
+import java.io.IOException;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.apache.commons.lang3.StringUtils;
import org.apache.dolphinscheduler.api.aspect.AccessLogAnnotation;
import org.apache.dolphinscheduler.api.enums.Status;
import org.apache.dolphinscheduler.api.exceptions.ApiException;
@@ -38,13 +40,6 @@ import
org.apache.dolphinscheduler.common.utils.ParameterUtils;
import org.apache.dolphinscheduler.dao.entity.ProcessInstance;
import org.apache.dolphinscheduler.dao.entity.User;
import org.apache.dolphinscheduler.plugin.task.api.enums.ExecutionStatus;
-
-import org.apache.commons.lang3.StringUtils;
-
-import java.io.IOException;
-import java.text.MessageFormat;
-import java.util.*;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -59,13 +54,17 @@ import
org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
-
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
import springfox.documentation.annotations.ApiIgnore;
+import static
org.apache.dolphinscheduler.api.enums.Status.BATCH_DELETE_PROCESS_INSTANCE_BY_IDS_ERROR;
+import static
org.apache.dolphinscheduler.api.enums.Status.DELETE_PROCESS_INSTANCE_BY_ID_ERROR;
+import static
org.apache.dolphinscheduler.api.enums.Status.ENCAPSULATION_PROCESS_INSTANCE_GANTT_STRUCTURE_ERROR;
+import static
org.apache.dolphinscheduler.api.enums.Status.QUERY_PARENT_PROCESS_INSTANCE_DETAIL_INFO_BY_SUB_PROCESS_INSTANCE_ID_ERROR;
+import static
org.apache.dolphinscheduler.api.enums.Status.QUERY_PROCESS_INSTANCE_ALL_VARIABLES_ERROR;
+import static
org.apache.dolphinscheduler.api.enums.Status.QUERY_PROCESS_INSTANCE_BY_ID_ERROR;
+import static
org.apache.dolphinscheduler.api.enums.Status.QUERY_PROCESS_INSTANCE_LIST_PAGING_ERROR;
+import static
org.apache.dolphinscheduler.api.enums.Status.QUERY_SUB_PROCESS_INSTANCE_DETAIL_INFO_BY_TASK_ID_ERROR;
+import static
org.apache.dolphinscheduler.api.enums.Status.QUERY_TASK_LIST_BY_PROCESS_INSTANCE_ID_ERROR;
+import static
org.apache.dolphinscheduler.api.enums.Status.UPDATE_PROCESS_INSTANCE_ERROR;
/**
* process instance controller
@@ -93,6 +92,7 @@ public class ProcessInstanceController extends BaseController
{
* @param host host
* @param startTime start time
* @param endTime end time
+ * @param otherParamsJson otherParamsJson handle other params
* @return process instance list
*/
@ApiOperation(value = "queryProcessInstanceListPaging", notes =
"QUERY_PROCESS_INSTANCE_LIST_NOTES")
@@ -120,6 +120,7 @@ public class ProcessInstanceController extends
BaseController {
@RequestParam(value = "host",
required = false) String host,
@RequestParam(value = "startDate",
required = false) String startTime,
@RequestParam(value = "endDate",
required = false) String endTime,
+ @RequestParam(value =
"otherParamsJson", required = false) String otherParamsJson,
@RequestParam("pageNo") Integer
pageNo,
@RequestParam("pageSize") Integer
pageSize) {
@@ -129,7 +130,7 @@ public class ProcessInstanceController extends
BaseController {
}
searchVal = ParameterUtils.handleEscapes(searchVal);
result = processInstanceService.queryProcessInstanceList(loginUser,
projectCode, processDefineCode, startTime, endTime,
- searchVal, executorName, stateType, host, pageNo, pageSize);
+ searchVal, executorName, stateType, host, otherParamsJson,
pageNo, pageSize);
return result;
}
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/dto/ProcessDefinitionDto.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/dto/ProcessDefinitionDto.java
new file mode 100644
index 0000000000..c3b426850e
--- /dev/null
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/dto/ProcessDefinitionDto.java
@@ -0,0 +1,26 @@
+/*
+ * 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.dto;
+
+import org.apache.dolphinscheduler.dao.entity.ProcessDefinition;
+
+/**
+ * ProcessDefinitionDto
+ */
+public class ProcessDefinitionDto extends ProcessDefinition {
+}
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/dto/ProcessInstanceDto.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/dto/ProcessInstanceDto.java
new file mode 100644
index 0000000000..9178028974
--- /dev/null
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/dto/ProcessInstanceDto.java
@@ -0,0 +1,26 @@
+/*
+ * 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.dto;
+
+import org.apache.dolphinscheduler.dao.entity.ProcessInstance;
+
+/**
+ * ProcessInstanceDto
+ */
+public class ProcessInstanceDto extends ProcessInstance {
+}
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/python/PythonGateway.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/python/PythonGateway.java
index 9b89d9636b..e6400e79fa 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/python/PythonGateway.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/python/PythonGateway.java
@@ -17,6 +17,19 @@
package org.apache.dolphinscheduler.api.python;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+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 javax.annotation.PostConstruct;
+
+import org.apache.commons.collections.CollectionUtils;
+import
org.apache.dolphinscheduler.api.configuration.PythonGatewayConfiguration;
import org.apache.dolphinscheduler.api.dto.resources.ResourceComponent;
import org.apache.dolphinscheduler.api.enums.Status;
import org.apache.dolphinscheduler.api.service.ExecutorService;
@@ -56,27 +69,11 @@ import org.apache.dolphinscheduler.dao.mapper.ProjectMapper;
import org.apache.dolphinscheduler.dao.mapper.ProjectUserMapper;
import org.apache.dolphinscheduler.dao.mapper.ScheduleMapper;
import org.apache.dolphinscheduler.dao.mapper.TaskDefinitionMapper;
-import
org.apache.dolphinscheduler.api.configuration.PythonGatewayConfiguration;
import org.apache.dolphinscheduler.spi.enums.ResourceType;
-
-import org.apache.commons.collections.CollectionUtils;
-
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-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 javax.annotation.PostConstruct;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
-
import py4j.GatewayServer;
@Component
@@ -215,6 +212,7 @@ public class PythonGateway {
* @param tenantCode tenantCode
* @param taskRelationJson relation json for nodes
* @param taskDefinitionJson taskDefinitionJson
+ * @param otherParamsJson otherParamsJson handle other params
* @return create result code
*/
public Long createOrUpdateProcessDefinition(String userName,
@@ -232,6 +230,7 @@ public class PythonGateway {
int releaseState,
String taskRelationJson,
String taskDefinitionJson,
+ String otherParamsJson,
ProcessExecutionTypeEnum
executionType) {
User user = usersService.queryUser(userName);
Project project = projectMapper.queryByName(projectName);
@@ -245,10 +244,10 @@ public class PythonGateway {
// make sure process definition offline which could edit
processDefinitionService.releaseProcessDefinition(user,
projectCode, processDefinitionCode, ReleaseState.OFFLINE);
Map<String, Object> result =
processDefinitionService.updateProcessDefinition(user, projectCode, name,
processDefinitionCode, description, globalParams,
- locations, timeout, tenantCode, taskRelationJson,
taskDefinitionJson, executionType);
+ locations, timeout, tenantCode, taskRelationJson,
taskDefinitionJson, otherParamsJson, executionType);
} else {
Map<String, Object> result =
processDefinitionService.createProcessDefinition(user, projectCode, name,
description, globalParams,
- locations, timeout, tenantCode, taskRelationJson,
taskDefinitionJson, executionType);
+ locations, timeout, tenantCode, taskRelationJson,
taskDefinitionJson, otherParamsJson, executionType);
processDefinition = (ProcessDefinition)
result.get(Constants.DATA_LIST);
processDefinitionCode = processDefinition.getCode();
}
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/BaseService.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/BaseService.java
index 41c484d0e7..558c079d45 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/BaseService.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/BaseService.java
@@ -17,15 +17,15 @@
package org.apache.dolphinscheduler.api.service;
+import java.util.List;
+import java.util.Map;
+
import org.apache.dolphinscheduler.api.enums.Status;
import org.apache.dolphinscheduler.api.utils.Result;
import org.apache.dolphinscheduler.common.enums.AuthorizationType;
import org.apache.dolphinscheduler.dao.entity.User;
import org.slf4j.Logger;
-import java.util.List;
-import java.util.Map;
-
/**
* base service
*/
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 8d407b8af9..49e3be075c 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
@@ -17,17 +17,18 @@
package org.apache.dolphinscheduler.api.service;
-import org.apache.dolphinscheduler.api.utils.Result;
-import org.apache.dolphinscheduler.common.enums.ProcessExecutionTypeEnum;
-import org.apache.dolphinscheduler.common.enums.ReleaseState;
-import org.apache.dolphinscheduler.dao.entity.TaskDefinitionLog;
-import org.apache.dolphinscheduler.dao.entity.User;
-
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
+import org.apache.dolphinscheduler.api.utils.Result;
+import org.apache.dolphinscheduler.common.enums.ProcessExecutionTypeEnum;
+import org.apache.dolphinscheduler.common.enums.ReleaseState;
+import org.apache.dolphinscheduler.dao.entity.ProcessDefinition;
+import org.apache.dolphinscheduler.dao.entity.Project;
+import org.apache.dolphinscheduler.dao.entity.TaskDefinitionLog;
+import org.apache.dolphinscheduler.dao.entity.User;
import org.springframework.web.multipart.MultipartFile;
/**
@@ -48,6 +49,7 @@ public interface ProcessDefinitionService {
* @param tenantCode tenantCode
* @param taskRelationJson relation json for nodes
* @param taskDefinitionJson taskDefinitionJson
+ * @param otherParamsJson otherParamsJson handle other params
* @return create result code
*/
Map<String, Object> createProcessDefinition(User loginUser,
@@ -60,6 +62,7 @@ public interface ProcessDefinitionService {
String tenantCode,
String taskRelationJson,
String taskDefinitionJson,
+ String otherParamsJson,
ProcessExecutionTypeEnum
executionType);
/**
@@ -88,6 +91,7 @@ public interface ProcessDefinitionService {
* @param loginUser login user
* @param projectCode project code
* @param searchVal search value
+ * @param otherParamsJson otherParamsJson handle other params
* @param pageNo page number
* @param pageSize page size
* @param userId user id
@@ -96,6 +100,7 @@ public interface ProcessDefinitionService {
Result queryProcessDefinitionListPaging(User loginUser,
long projectCode,
String searchVal,
+ String otherParamsJson,
Integer userId,
Integer pageNo,
Integer pageSize);
@@ -166,6 +171,7 @@ public interface ProcessDefinitionService {
* @param tenantCode tenantCode
* @param taskRelationJson relation json for nodes
* @param taskDefinitionJson taskDefinitionJson
+ * @param otherParamsJson otherParamsJson handle other params
* @return update result code
*/
Map<String, Object> updateProcessDefinition(User loginUser,
@@ -179,6 +185,7 @@ public interface ProcessDefinitionService {
String tenantCode,
String taskRelationJson,
String taskDefinitionJson,
+ String otherParamsJson,
ProcessExecutionTypeEnum
executionType);
/**
@@ -402,6 +409,7 @@ public interface ProcessDefinitionService {
* @param timeout timeout
* @param tenantCode tenantCode
* @param scheduleJson scheduleJson
+ * @param otherParamsJson otherParamsJson handle other params
* @param executionType executionType
* @return update result code
*/
@@ -414,6 +422,7 @@ public interface ProcessDefinitionService {
int timeout,
String tenantCode,
String scheduleJson,
+ String
otherParamsJson,
ProcessExecutionTypeEnum executionType);
/**
@@ -429,5 +438,30 @@ public interface ProcessDefinitionService {
long projectCode,
long code,
ReleaseState releaseState);
+
+ /**
+ * delete other relation
+ * @param project
+ * @param result
+ * @param processDefinition
+ */
+ void deleteOtherRelation(Project project, Map<String, Object> result,
ProcessDefinition processDefinition);
+
+ /**
+ * save other relation
+ * @param loginUser
+ * @param processDefinition
+ * @param result
+ * @param otherParamsJson
+ */
+ void saveOtherRelation(User loginUser, ProcessDefinition
processDefinition, Map<String, Object> result, String otherParamsJson);
+
+ /**
+ * get Json String
+ * @param loginUser
+ * @param processDefinition
+ * @return Json String
+ */
+ String doOtherOperateProcess(User loginUser, ProcessDefinition
processDefinition);
}
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProcessInstanceService.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProcessInstanceService.java
index 4b2ad72a3c..73a5b35ff6 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProcessInstanceService.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProcessInstanceService.java
@@ -18,16 +18,16 @@
package org.apache.dolphinscheduler.api.service;
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+
import org.apache.dolphinscheduler.api.utils.Result;
import org.apache.dolphinscheduler.dao.entity.ProcessInstance;
import org.apache.dolphinscheduler.dao.entity.User;
import org.apache.dolphinscheduler.plugin.task.api.enums.DependResult;
import org.apache.dolphinscheduler.plugin.task.api.enums.ExecutionStatus;
-import java.io.IOException;
-import java.util.List;
-import java.util.Map;
-
/**
* process instance service
*/
@@ -68,6 +68,7 @@ public interface ProcessInstanceService {
* @param host host
* @param startDate start time
* @param endDate end time
+ * @param otherParamsJson otherParamsJson handle other params
* @return process instance list
*/
Result queryProcessInstanceList(User loginUser,
@@ -79,6 +80,7 @@ public interface ProcessInstanceService {
String executorName,
ExecutionStatus stateType,
String host,
+ String otherParamsJson,
Integer pageNo,
Integer pageSize);
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/BaseServiceImpl.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/BaseServiceImpl.java
index ff9d9aab7c..bdefefe026 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/BaseServiceImpl.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/BaseServiceImpl.java
@@ -17,28 +17,30 @@
package org.apache.dolphinscheduler.api.service.impl;
+import java.io.IOException;
+import java.text.MessageFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
import org.apache.commons.lang3.StringUtils;
import org.apache.dolphinscheduler.api.enums.Status;
+import
org.apache.dolphinscheduler.api.permission.ResourcePermissionCheckService;
import org.apache.dolphinscheduler.api.service.BaseService;
import org.apache.dolphinscheduler.api.utils.Result;
import org.apache.dolphinscheduler.common.Constants;
import org.apache.dolphinscheduler.common.enums.AuthorizationType;
import org.apache.dolphinscheduler.common.enums.UserType;
import org.apache.dolphinscheduler.common.utils.DateUtils;
+import org.apache.dolphinscheduler.dao.entity.ProcessDefinition;
+import org.apache.dolphinscheduler.dao.entity.Project;
import org.apache.dolphinscheduler.dao.entity.User;
-import
org.apache.dolphinscheduler.api.permission.ResourcePermissionCheckService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
-import java.io.IOException;
-import java.text.MessageFormat;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-
/**
* base service impl
*/
@@ -212,5 +214,4 @@ public class BaseServiceImpl implements BaseService {
putMsg(result, Status.SUCCESS);
return result;
}
-
}
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 48f16b498b..56893f422f 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
@@ -17,12 +17,40 @@
package org.apache.dolphinscheduler.api.service.impl;
-import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.*;
-import static
org.apache.dolphinscheduler.common.Constants.CMD_PARAM_SUB_PROCESS_DEFINE_CODE;
-import static
org.apache.dolphinscheduler.common.Constants.DEFAULT_WORKER_GROUP;
-import static
org.apache.dolphinscheduler.plugin.task.api.TaskConstants.COMPLEX_TASK_TYPES;
-import static
org.apache.dolphinscheduler.plugin.task.api.TaskConstants.TASK_TYPE_SQL;
+import java.io.BufferedOutputStream;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.stream.Collectors;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletResponse;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.google.common.collect.Lists;
+
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.dolphinscheduler.api.dto.DagDataSchedule;
import org.apache.dolphinscheduler.api.dto.ScheduleParam;
import org.apache.dolphinscheduler.api.dto.treeview.Instance;
@@ -38,9 +66,15 @@ import org.apache.dolphinscheduler.api.utils.FileUtils;
import org.apache.dolphinscheduler.api.utils.PageInfo;
import org.apache.dolphinscheduler.api.utils.Result;
import org.apache.dolphinscheduler.common.Constants;
-import org.apache.dolphinscheduler.common.enums.*;
-import org.apache.dolphinscheduler.dao.entity.DependentSimplifyDefinition;
-import org.apache.dolphinscheduler.plugin.task.api.enums.TaskTimeoutStrategy;
+import org.apache.dolphinscheduler.common.enums.ConditionType;
+import org.apache.dolphinscheduler.common.enums.FailureStrategy;
+import org.apache.dolphinscheduler.common.enums.Flag;
+import org.apache.dolphinscheduler.common.enums.Priority;
+import org.apache.dolphinscheduler.common.enums.ProcessExecutionTypeEnum;
+import org.apache.dolphinscheduler.common.enums.ReleaseState;
+import org.apache.dolphinscheduler.common.enums.TimeoutFlag;
+import org.apache.dolphinscheduler.common.enums.UserType;
+import org.apache.dolphinscheduler.common.enums.WarningType;
import org.apache.dolphinscheduler.common.graph.DAG;
import org.apache.dolphinscheduler.common.model.TaskNode;
import org.apache.dolphinscheduler.common.model.TaskNodeRelation;
@@ -51,6 +85,7 @@ import org.apache.dolphinscheduler.common.utils.DateUtils;
import org.apache.dolphinscheduler.common.utils.JSONUtils;
import org.apache.dolphinscheduler.dao.entity.DagData;
import org.apache.dolphinscheduler.dao.entity.DataSource;
+import org.apache.dolphinscheduler.dao.entity.DependentSimplifyDefinition;
import org.apache.dolphinscheduler.dao.entity.ProcessDefinition;
import org.apache.dolphinscheduler.dao.entity.ProcessDefinitionLog;
import org.apache.dolphinscheduler.dao.entity.ProcessInstance;
@@ -76,39 +111,11 @@ import
org.apache.dolphinscheduler.dao.mapper.TaskInstanceMapper;
import org.apache.dolphinscheduler.dao.mapper.TenantMapper;
import org.apache.dolphinscheduler.dao.mapper.UserMapper;
import org.apache.dolphinscheduler.plugin.task.api.enums.SqlType;
+import org.apache.dolphinscheduler.plugin.task.api.enums.TaskTimeoutStrategy;
import org.apache.dolphinscheduler.plugin.task.api.parameters.ParametersNode;
import org.apache.dolphinscheduler.plugin.task.api.parameters.SqlParameters;
import org.apache.dolphinscheduler.service.process.ProcessService;
import org.apache.dolphinscheduler.service.task.TaskPluginManager;
-
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.lang3.StringUtils;
-
-import java.io.BufferedOutputStream;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.stream.Collectors;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
-
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.HttpServletResponse;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -116,13 +123,25 @@ import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.google.common.collect.Lists;
+import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.TASK_DEFINITION_MOVE;
+import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.VERSION_DELETE;
+import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.VERSION_LIST;
+import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.WORKFLOW_BATCH_COPY;
+import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.WORKFLOW_CREATE;
+import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.WORKFLOW_DEFINITION;
+import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.WORKFLOW_DEFINITION_DELETE;
+import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.WORKFLOW_DEFINITION_EXPORT;
+import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.WORKFLOW_EXPORT;
+import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.WORKFLOW_IMPORT;
+import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.WORKFLOW_ONLINE_OFFLINE;
+import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.WORKFLOW_SWITCH_TO_THIS_VERSION;
+import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.WORKFLOW_TREE_VIEW;
+import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.WORKFLOW_UPDATE;
+import static
org.apache.dolphinscheduler.common.Constants.CMD_PARAM_SUB_PROCESS_DEFINE_CODE;
+import static
org.apache.dolphinscheduler.common.Constants.DEFAULT_WORKER_GROUP;
+import static org.apache.dolphinscheduler.common.Constants.EMPTY_STRING;
+import static
org.apache.dolphinscheduler.plugin.task.api.TaskConstants.COMPLEX_TASK_TYPES;
+import static
org.apache.dolphinscheduler.plugin.task.api.TaskConstants.TASK_TYPE_SQL;
/**
* process definition service impl
@@ -212,6 +231,7 @@ public class ProcessDefinitionServiceImpl extends
BaseServiceImpl implements Pro
String tenantCode,
String taskRelationJson,
String
taskDefinitionJson,
+ String otherParamsJson,
ProcessExecutionTypeEnum executionType) {
Project project = projectMapper.queryByCode(projectCode);
//check user access for project
@@ -256,13 +276,13 @@ public class ProcessDefinitionServiceImpl extends
BaseServiceImpl implements Pro
globalParams, locations, timeout, loginUser.getId(), tenantId);
processDefinition.setExecutionType(executionType);
- return createDagDefine(loginUser, taskRelationList, processDefinition,
taskDefinitionLogs);
+ return createDagDefine(loginUser, taskRelationList, processDefinition,
taskDefinitionLogs, otherParamsJson);
}
private Map<String, Object> createDagDefine(User loginUser,
List<ProcessTaskRelationLog>
taskRelationList,
ProcessDefinition
processDefinition,
- List<TaskDefinitionLog>
taskDefinitionLogs) {
+ List<TaskDefinitionLog>
taskDefinitionLogs, String otherParamsJson) {
Map<String, Object> result = new HashMap<>();
int saveTaskResult = processService.saveTaskDefine(loginUser,
processDefinition.getProjectCode(), taskDefinitionLogs, Boolean.TRUE);
if (saveTaskResult == Constants.EXIT_CODE_SUCCESS) {
@@ -286,6 +306,7 @@ public class ProcessDefinitionServiceImpl extends
BaseServiceImpl implements Pro
putMsg(result, Status.CREATE_PROCESS_TASK_RELATION_ERROR);
throw new
ServiceException(Status.CREATE_PROCESS_TASK_RELATION_ERROR);
}
+ saveOtherRelation(loginUser, processDefinition, result,
otherParamsJson);
return result;
}
@@ -425,7 +446,7 @@ public class ProcessDefinitionServiceImpl extends
BaseServiceImpl implements Pro
* @return process definition page
*/
@Override
- public Result queryProcessDefinitionListPaging(User loginUser, long
projectCode, String searchVal, Integer userId, Integer pageNo, Integer
pageSize) {
+ public Result queryProcessDefinitionListPaging(User loginUser, long
projectCode, String searchVal, String otherParamsJson, Integer userId, Integer
pageNo, Integer pageSize) {
Result result = new Result();
Project project = projectMapper.queryByCode(projectCode);
//check user access for project
@@ -522,6 +543,7 @@ public class ProcessDefinitionServiceImpl extends
BaseServiceImpl implements Pro
* @param tenantCode tenantCode
* @param taskRelationJson relation json for nodes
* @param taskDefinitionJson taskDefinitionJson
+ * @param otherParamsJson otherParamsJson handle other params
* @return update result code
*/
@Override
@@ -537,6 +559,7 @@ public class ProcessDefinitionServiceImpl extends
BaseServiceImpl implements Pro
String tenantCode,
String taskRelationJson,
String
taskDefinitionJson,
+ String otherParamsJson,
ProcessExecutionTypeEnum executionType) {
Project project = projectMapper.queryByCode(projectCode);
//check user access for project
@@ -588,14 +611,15 @@ public class ProcessDefinitionServiceImpl extends
BaseServiceImpl implements Pro
ProcessDefinition processDefinitionDeepCopy =
JSONUtils.parseObject(JSONUtils.toJsonString(processDefinition),
ProcessDefinition.class);
processDefinition.set(projectCode, name, description, globalParams,
locations, timeout, tenantId);
processDefinition.setExecutionType(executionType);
- return updateDagDefine(loginUser, taskRelationList, processDefinition,
processDefinitionDeepCopy, taskDefinitionLogs);
+ return updateDagDefine(loginUser, taskRelationList, processDefinition,
processDefinitionDeepCopy, taskDefinitionLogs, otherParamsJson);
}
private Map<String, Object> updateDagDefine(User loginUser,
List<ProcessTaskRelationLog>
taskRelationList,
ProcessDefinition
processDefinition,
ProcessDefinition
processDefinitionDeepCopy,
- List<TaskDefinitionLog>
taskDefinitionLogs) {
+ List<TaskDefinitionLog>
taskDefinitionLogs,
+ String otherParamsJson) {
Map<String, Object> result = new HashMap<>();
int saveTaskResult = processService.saveTaskDefine(loginUser,
processDefinition.getProjectCode(), taskDefinitionLogs, Boolean.TRUE);
if (saveTaskResult == Constants.EXIT_CODE_SUCCESS) {
@@ -641,6 +665,7 @@ public class ProcessDefinitionServiceImpl extends
BaseServiceImpl implements Pro
putMsg(result, Status.UPDATE_PROCESS_DEFINITION_ERROR);
throw new
ServiceException(Status.UPDATE_PROCESS_DEFINITION_ERROR);
}
+ saveOtherRelation(loginUser, processDefinition, result,
otherParamsJson);
} else {
putMsg(result, Status.SUCCESS);
result.put(Constants.DATA_LIST, processDefinition);
@@ -729,7 +754,6 @@ public class ProcessDefinitionServiceImpl extends
BaseServiceImpl implements Pro
return result;
}
}
-
int delete =
processDefinitionMapper.deleteById(processDefinition.getId());
if (delete == 0) {
putMsg(result, Status.DELETE_PROCESS_DEFINE_BY_CODE_ERROR);
@@ -739,6 +763,7 @@ public class ProcessDefinitionServiceImpl extends
BaseServiceImpl implements Pro
if (deleteRelation == 0) {
logger.warn("The process definition has not relation, it will be
delete successfully");
}
+ deleteOtherRelation(project, result, processDefinition);
putMsg(result, Status.SUCCESS);
return result;
}
@@ -909,7 +934,7 @@ public class ProcessDefinitionServiceImpl extends
BaseServiceImpl implements Pro
return result;
}
for (DagDataSchedule dagDataSchedule : dagDataScheduleList) {
- if (!checkAndImport(loginUser, projectCode, result,
dagDataSchedule)) {
+ if (!checkAndImport(loginUser, projectCode, result,
dagDataSchedule, EMPTY_STRING)) {
return result;
}
}
@@ -1061,7 +1086,7 @@ public class ProcessDefinitionServiceImpl extends
BaseServiceImpl implements Pro
}
}
- return createDagDefine(loginUser, processTaskRelationList,
processDefinition, taskDefinitionList);
+ return createDagDefine(loginUser, processTaskRelationList,
processDefinition, taskDefinitionList, EMPTY_STRING);
}
private ProcessTaskRelationLog buildNormalTaskRelation(long preTaskCode,
long postTaskCode) {
@@ -1118,7 +1143,7 @@ public class ProcessDefinitionServiceImpl extends
BaseServiceImpl implements Pro
/**
* check and import
*/
- private boolean checkAndImport(User loginUser, long projectCode,
Map<String, Object> result, DagDataSchedule dagDataSchedule) {
+ private boolean checkAndImport(User loginUser, long projectCode,
Map<String, Object> result, DagDataSchedule dagDataSchedule, String
otherParamsJson) {
if (!checkImportanceParams(dagDataSchedule, result)) {
return false;
}
@@ -1209,7 +1234,7 @@ public class ProcessDefinitionServiceImpl extends
BaseServiceImpl implements Pro
}
processDefinition.setCreateTime(new Date());
processDefinition.setUpdateTime(new Date());
- Map<String, Object> createDagResult = createDagDefine(loginUser,
taskRelationLogList, processDefinition, Lists.newArrayList());
+ Map<String, Object> createDagResult = createDagDefine(loginUser,
taskRelationLogList, processDefinition, Lists.newArrayList(), otherParamsJson);
if (Status.SUCCESS.equals(createDagResult.get(Constants.STATUS))) {
putMsg(createDagResult, Status.SUCCESS);
} else {
@@ -1725,6 +1750,7 @@ public class ProcessDefinitionServiceImpl extends
BaseServiceImpl implements Pro
processTaskRelationMapper.queryByProcessCode(processDefinition.getProjectCode(),
processDefinition.getCode());
List<ProcessTaskRelationLog> taskRelationList =
processTaskRelations.stream().map(ProcessTaskRelationLog::new).collect(Collectors.toList());
processDefinition.setProjectCode(targetProjectCode);
+ String otherParamsJson = doOtherOperateProcess(loginUser,
processDefinition);
if (isCopy) {
List<TaskDefinitionLog> taskDefinitionLogs =
processService.genTaskDefineList(processTaskRelations);
Map<Long, Long> taskCodeMap = new HashMap<>();
@@ -1772,14 +1798,14 @@ public class ProcessDefinitionServiceImpl extends
BaseServiceImpl implements Pro
processDefinition.setLocations(JSONUtils.toJsonString(jsonNodes));
}
try {
- result.putAll(createDagDefine(loginUser, taskRelationList,
processDefinition, taskDefinitionLogs));
+ result.putAll(createDagDefine(loginUser, taskRelationList,
processDefinition, taskDefinitionLogs, otherParamsJson));
} catch (Exception e) {
putMsg(result, Status.COPY_PROCESS_DEFINITION_ERROR);
throw new
ServiceException(Status.COPY_PROCESS_DEFINITION_ERROR);
}
} else {
try {
- result.putAll(updateDagDefine(loginUser, taskRelationList,
processDefinition, null, Lists.newArrayList()));
+ result.putAll(updateDagDefine(loginUser, taskRelationList,
processDefinition, null, Lists.newArrayList(), otherParamsJson));
} catch (Exception e) {
putMsg(result, Status.MOVE_PROCESS_DEFINITION_ERROR);
throw new
ServiceException(Status.MOVE_PROCESS_DEFINITION_ERROR);
@@ -1919,6 +1945,7 @@ public class ProcessDefinitionServiceImpl extends
BaseServiceImpl implements Pro
putMsg(result, Status.DELETE_PROCESS_DEFINE_BY_CODE_ERROR);
throw new
ServiceException(Status.DELETE_PROCESS_DEFINE_BY_CODE_ERROR);
}
+ deleteOtherRelation(project, result, processDefinition);
putMsg(result, Status.SUCCESS);
}
return result;
@@ -2060,6 +2087,7 @@ public class ProcessDefinitionServiceImpl extends
BaseServiceImpl implements Pro
* @param timeout timeout
* @param tenantCode tenantCode
* @param scheduleJson scheduleJson
+ * @param otherParamsJson otherParamsJson handle other params
* @param executionType executionType
* @return update result code
*/
@@ -2074,6 +2102,7 @@ public class ProcessDefinitionServiceImpl extends
BaseServiceImpl implements Pro
int timeout,
String
tenantCode,
String
scheduleJson,
+ String
otherParamsJson,
ProcessExecutionTypeEnum executionType) {
Project project = projectMapper.queryByCode(projectCode);
//check user access for project
@@ -2115,7 +2144,7 @@ public class ProcessDefinitionServiceImpl extends
BaseServiceImpl implements Pro
processDefinition.set(projectCode, name, description, globalParams,
"", timeout, tenantId);
processDefinition.setExecutionType(executionType);
List<ProcessTaskRelationLog> taskRelationList =
processTaskRelationLogMapper.queryByProcessCodeAndVersion(processDefinition.getCode(),
processDefinition.getVersion());
- result = updateDagDefine(loginUser, taskRelationList,
processDefinition, processDefinitionDeepCopy, Lists.newArrayList());
+ result = updateDagDefine(loginUser, taskRelationList,
processDefinition, processDefinitionDeepCopy, Lists.newArrayList(),
otherParamsJson);
if (result.get(Constants.STATUS) != Status.SUCCESS) {
return result;
}
@@ -2237,4 +2266,39 @@ public class ProcessDefinitionServiceImpl extends
BaseServiceImpl implements Pro
putMsg(result, Status.SUCCESS);
return result;
}
+
+ /**
+ * save other relation
+ * @param loginUser
+ * @param processDefinition
+ * @param result
+ * @param otherParamsJson
+ */
+ @Override
+ public void saveOtherRelation(User loginUser, ProcessDefinition
processDefinition, Map<String, Object> result, String otherParamsJson) {
+
+ }
+
+ /**
+ * get Json String
+ * @param loginUser
+ * @param processDefinition
+ * @return Json String
+ */
+ @Override
+ public String doOtherOperateProcess(User loginUser, ProcessDefinition
processDefinition) {
+ return null;
+ }
+
+ /**
+ * delete other relation
+ * @param project
+ * @param result
+ * @param processDefinition
+ */
+ @Override
+ public void deleteOtherRelation(Project project, Map<String, Object>
result, ProcessDefinition processDefinition) {
+
+ }
+
}
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessInstanceServiceImpl.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessInstanceServiceImpl.java
index 4215858a11..ca137aaf0d 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessInstanceServiceImpl.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessInstanceServiceImpl.java
@@ -17,10 +17,26 @@
package org.apache.dolphinscheduler.api.service.impl;
-import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.*;
-import static org.apache.dolphinscheduler.common.Constants.*;
-import static
org.apache.dolphinscheduler.plugin.task.api.TaskConstants.TASK_TYPE_DEPENDENT;
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.dolphinscheduler.api.dto.gantt.GanttDto;
import org.apache.dolphinscheduler.api.dto.gantt.Task;
import org.apache.dolphinscheduler.api.enums.Status;
@@ -66,31 +82,19 @@ import
org.apache.dolphinscheduler.plugin.task.api.model.Property;
import org.apache.dolphinscheduler.plugin.task.api.parameters.ParametersNode;
import org.apache.dolphinscheduler.service.process.ProcessService;
import org.apache.dolphinscheduler.service.task.TaskPluginManager;
-
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang3.StringUtils;
-
-import java.io.BufferedReader;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.function.Function;
-import java.util.stream.Collectors;
-
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.INSTANCE_DELETE;
+import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.INSTANCE_UPDATE;
+import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.WORKFLOW_INSTANCE;
+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 static
org.apache.dolphinscheduler.plugin.task.api.TaskConstants.TASK_TYPE_DEPENDENT;
/**
* process instance service impl
@@ -236,11 +240,12 @@ public class ProcessInstanceServiceImpl extends
BaseServiceImpl implements Proce
* @param host host
* @param startDate start time
* @param endDate end time
+ * @param otherParamsJson otherParamsJson handle other params
* @return process instance list
*/
@Override
public Result queryProcessInstanceList(User loginUser, long projectCode,
long processDefineCode, String startDate, String endDate, String searchVal,
String executorName,
- ExecutionStatus stateType, String
host, Integer pageNo, Integer pageSize) {
+ ExecutionStatus stateType, String
host, String otherParamsJson, Integer pageNo, Integer pageSize) {
Result result = new Result();
Project project = projectMapper.queryByCode(projectCode);
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 8ef3cd9740..424ee163f8 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
@@ -17,6 +17,14 @@
package org.apache.dolphinscheduler.api.controller;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletResponse;
+
import org.apache.dolphinscheduler.api.enums.Status;
import
org.apache.dolphinscheduler.api.service.impl.ProcessDefinitionServiceImpl;
import org.apache.dolphinscheduler.api.utils.PageInfo;
@@ -29,15 +37,6 @@ import
org.apache.dolphinscheduler.dao.entity.ProcessDefinition;
import org.apache.dolphinscheduler.dao.entity.ProcessDefinitionLog;
import org.apache.dolphinscheduler.dao.entity.Resource;
import org.apache.dolphinscheduler.dao.entity.User;
-
-import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.servlet.http.HttpServletResponse;
-
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
@@ -48,8 +47,6 @@ import org.mockito.Mockito;
import org.mockito.junit.MockitoJUnitRunner;
import org.springframework.mock.web.MockHttpServletResponse;
-import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.WORKFLOW_TREE_VIEW;
-
/**
* process definition controller test
*/
@@ -97,10 +94,10 @@ public class ProcessDefinitionControllerTest {
result.put(Constants.DATA_LIST, 1);
Mockito.when(processDefinitionService.createProcessDefinition(user,
projectCode, name, description, globalParams,
- locations, timeout, tenantCode, relationJson,
taskDefinitionJson, ProcessExecutionTypeEnum.PARALLEL)).thenReturn(result);
+ locations, timeout, tenantCode, relationJson,
taskDefinitionJson,"", ProcessExecutionTypeEnum.PARALLEL)).thenReturn(result);
Result response =
processDefinitionController.createProcessDefinition(user, projectCode, name,
description, globalParams,
- locations, timeout, tenantCode, relationJson,
taskDefinitionJson,ProcessExecutionTypeEnum.PARALLEL);
+ locations, timeout, tenantCode, relationJson,
taskDefinitionJson,"", ProcessExecutionTypeEnum.PARALLEL);
Assert.assertEquals(Status.SUCCESS.getCode(),
response.getCode().intValue());
}
@@ -160,10 +157,10 @@ public class ProcessDefinitionControllerTest {
result.put("processDefinitionId", 1);
Mockito.when(processDefinitionService.updateProcessDefinition(user,
projectCode, name, code, description, globalParams,
- locations, timeout, tenantCode, relationJson,
taskDefinitionJson,ProcessExecutionTypeEnum.PARALLEL)).thenReturn(result);
+ locations, timeout, tenantCode, relationJson,
taskDefinitionJson, "", ProcessExecutionTypeEnum.PARALLEL)).thenReturn(result);
Result response =
processDefinitionController.updateProcessDefinition(user, projectCode, name,
code, description, globalParams,
- locations, timeout, tenantCode, relationJson,
taskDefinitionJson, ProcessExecutionTypeEnum.PARALLEL, ReleaseState.OFFLINE);
+ locations, timeout, tenantCode, relationJson,
taskDefinitionJson, "", ProcessExecutionTypeEnum.PARALLEL,
ReleaseState.OFFLINE);
Assert.assertEquals(Status.SUCCESS.getCode(),
response.getCode().intValue());
}
@@ -361,8 +358,8 @@ public class ProcessDefinitionControllerTest {
putMsg(result, Status.SUCCESS);
result.setData(new PageInfo<Resource>(1, 10));
-
Mockito.when(processDefinitionService.queryProcessDefinitionListPaging(user,
projectCode, searchVal, userId, pageNo, pageSize)).thenReturn(result);
- Result response =
processDefinitionController.queryProcessDefinitionListPaging(user, projectCode,
searchVal, userId, pageNo, pageSize);
+
Mockito.when(processDefinitionService.queryProcessDefinitionListPaging(user,
projectCode, searchVal, "", userId, pageNo, pageSize)).thenReturn(result);
+ Result response =
processDefinitionController.queryProcessDefinitionListPaging(user, projectCode,
searchVal, "", userId, pageNo, pageSize);
Assert.assertTrue(response != null && response.isSuccess());
}
diff --git
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/ProcessInstanceControllerTest.java
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/ProcessInstanceControllerTest.java
index b7c9c0af90..963eda2b69 100644
---
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/ProcessInstanceControllerTest.java
+++
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/ProcessInstanceControllerTest.java
@@ -17,12 +17,8 @@
package org.apache.dolphinscheduler.api.controller;
-import static
org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete;
-import static
org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
-import static
org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
-import static
org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put;
-import static
org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
-import static
org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+import java.util.HashMap;
+import java.util.Map;
import org.apache.dolphinscheduler.api.enums.Status;
import org.apache.dolphinscheduler.api.service.ProcessInstanceService;
@@ -30,10 +26,6 @@ import org.apache.dolphinscheduler.api.utils.Result;
import org.apache.dolphinscheduler.common.Constants;
import org.apache.dolphinscheduler.common.utils.JSONUtils;
import org.apache.dolphinscheduler.plugin.task.api.enums.ExecutionStatus;
-
-import java.util.HashMap;
-import java.util.Map;
-
import org.junit.Assert;
import org.junit.Test;
import org.mockito.Mockito;
@@ -43,6 +35,12 @@ import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
+import static
org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete;
+import static
org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static
org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
+import static
org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put;
+import static
org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
+import static
org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
/**
* process instance controller test
@@ -58,7 +56,7 @@ public class ProcessInstanceControllerTest extends
AbstractControllerTest {
mockResult.setCode(Status.SUCCESS.getCode());
PowerMockito.when(processInstanceService
.queryProcessInstanceList(Mockito.any(), Mockito.anyLong(),
Mockito.anyLong(), Mockito.any(),
- Mockito.any(), Mockito.any(), Mockito.any(),
Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any()))
+ Mockito.any(), Mockito.any(), Mockito.any(),
Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any()))
.thenReturn(mockResult);
MultiValueMap<String, String> paramsMap = new LinkedMultiValueMap<>();
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 6e4657bd76..4eb7daaa6e 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
@@ -17,9 +17,27 @@
package org.apache.dolphinscheduler.api.service;
-import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.*;
-import static org.powermock.api.mockito.PowerMockito.mock;
+import java.io.ByteArrayOutputStream;
+import java.nio.charset.StandardCharsets;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
+
+import javax.servlet.http.HttpServletResponse;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.google.common.collect.Lists;
+
+import org.apache.commons.lang3.StringUtils;
import org.apache.dolphinscheduler.api.enums.Status;
import
org.apache.dolphinscheduler.api.service.impl.ProcessDefinitionServiceImpl;
import org.apache.dolphinscheduler.api.service.impl.ProjectServiceImpl;
@@ -51,25 +69,6 @@ import
org.apache.dolphinscheduler.dao.mapper.TaskInstanceMapper;
import org.apache.dolphinscheduler.dao.mapper.TenantMapper;
import org.apache.dolphinscheduler.service.process.ProcessService;
import org.apache.dolphinscheduler.spi.enums.DbType;
-
-import org.apache.commons.lang3.StringUtils;
-
-import java.io.ByteArrayOutputStream;
-import java.nio.charset.StandardCharsets;
-import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.stream.Collectors;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipOutputStream;
-
-import javax.servlet.http.HttpServletResponse;
-
import org.junit.Assert;
import org.junit.Ignore;
import org.junit.Test;
@@ -79,10 +78,15 @@ import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.junit.MockitoJUnitRunner;
import org.springframework.mock.web.MockMultipartFile;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.google.common.collect.Lists;
+import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.TASK_DEFINITION_MOVE;
+import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.WORKFLOW_BATCH_COPY;
+import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.WORKFLOW_CREATE;
+import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.WORKFLOW_DEFINITION;
+import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.WORKFLOW_DEFINITION_DELETE;
+import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.WORKFLOW_IMPORT;
+import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.WORKFLOW_TREE_VIEW;
+import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.WORKFLOW_UPDATE;
+import static org.powermock.api.mockito.PowerMockito.mock;
/**
* process definition service test
@@ -179,7 +183,7 @@ public class ProcessDefinitionServiceTest {
//project not found
Mockito.when(projectService.checkProjectAndAuth(loginUser, project,
projectCode,WORKFLOW_DEFINITION)).thenReturn(result);
- Result map =
processDefinitionService.queryProcessDefinitionListPaging(loginUser,
projectCode, "", 1, 5, 0);
+ Result map =
processDefinitionService.queryProcessDefinitionListPaging(loginUser,
projectCode, "", "", 1, 5, 0);
Assert.assertEquals(Status.PROJECT_NOT_FOUND.getCode(), (int)
map.getCode());
putMsg(result, Status.SUCCESS, projectCode);
@@ -195,7 +199,7 @@ public class ProcessDefinitionServiceTest {
, Mockito.anyBoolean())).thenReturn(page);
Result map1 =
processDefinitionService.queryProcessDefinitionListPaging(
- loginUser, 1L, "", 1, 10, loginUser.getId());
+ loginUser, 1L, "", "",1, 10, loginUser.getId());
Assert.assertEquals(Status.SUCCESS.getMsg(), map1.getMsg());
}
@@ -658,7 +662,7 @@ public class ProcessDefinitionServiceTest {
Mockito.when(projectService.checkProjectAndAuth(loginUser, project,
projectCode, WORKFLOW_UPDATE)).thenReturn(result);
Map<String, Object> updateResult =
processDefinitionService.updateProcessDefinition(loginUser, projectCode,
"test", 1,
- "", "", "", 0, "root", null, null,
ProcessExecutionTypeEnum.PARALLEL);
+ "", "", "", 0, "root", null,"",null,
ProcessExecutionTypeEnum.PARALLEL);
Assert.assertEquals(Status.DATA_IS_NOT_VALID,
updateResult.get(Constants.STATUS));
}
diff --git
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProcessInstanceServiceTest.java
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProcessInstanceServiceTest.java
index 1f938d200f..fe64eab94d 100644
---
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProcessInstanceServiceTest.java
+++
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProcessInstanceServiceTest.java
@@ -17,9 +17,15 @@
package org.apache.dolphinscheduler.api.service;
-import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.*;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.when;
+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 com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.dolphinscheduler.api.enums.Status;
import org.apache.dolphinscheduler.api.service.impl.LoggerServiceImpl;
@@ -57,15 +63,6 @@ import
org.apache.dolphinscheduler.plugin.task.api.enums.DependResult;
import org.apache.dolphinscheduler.plugin.task.api.enums.ExecutionStatus;
import org.apache.dolphinscheduler.service.process.ProcessService;
import org.apache.dolphinscheduler.service.task.TaskPluginManager;
-
-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.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -73,8 +70,11 @@ import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.junit.MockitoJUnitRunner;
-
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.INSTANCE_DELETE;
+import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.INSTANCE_UPDATE;
+import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.WORKFLOW_INSTANCE;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.when;
/**
* process instance service test
@@ -163,7 +163,7 @@ public class ProcessInstanceServiceTest {
when(projectService.checkProjectAndAuth(loginUser, project,
projectCode, WORKFLOW_INSTANCE)).thenReturn(result);
Result proejctAuthFailRes =
processInstanceService.queryProcessInstanceList(loginUser, projectCode, 46,
"2020-01-01 00:00:00",
"2020-01-02 00:00:00", "", "test_user",
ExecutionStatus.SUBMITTED_SUCCESS,
- "192.168.xx.xx", 1, 10);
+ "192.168.xx.xx", "",1, 10);
Assert.assertEquals(Status.PROJECT_NOT_FOUND.getCode(), (int)
proejctAuthFailRes.getCode());
Date start = DateUtils.getScheduleDate("2020-01-01 00:00:00");
@@ -185,7 +185,7 @@ public class ProcessInstanceServiceTest {
Result dataParameterRes =
processInstanceService.queryProcessInstanceList(loginUser, projectCode, 1,
"20200101 00:00:00",
"20200102 00:00:00", "", loginUser.getUserName(),
ExecutionStatus.SUBMITTED_SUCCESS,
- "192.168.xx.xx", 1, 10);
+ "192.168.xx.xx", "",1, 10);
Assert.assertEquals(Status.REQUEST_PARAMS_NOT_VALID_ERROR.getCode(),
(int) dataParameterRes.getCode());
//project auth success
@@ -201,7 +201,7 @@ public class ProcessInstanceServiceTest {
Result successRes =
processInstanceService.queryProcessInstanceList(loginUser, projectCode, 1,
"2020-01-01 00:00:00",
"2020-01-02 00:00:00", "", loginUser.getUserName(),
ExecutionStatus.SUBMITTED_SUCCESS,
- "192.168.xx.xx", 1, 10);
+ "192.168.xx.xx", "",1, 10);
Assert.assertEquals(Status.SUCCESS.getCode(),
(int)successRes.getCode());
// data parameter empty
@@ -209,7 +209,7 @@ public class ProcessInstanceServiceTest {
eq("192.168.xx.xx"), eq(null), eq(null))).thenReturn(pageReturn);
successRes =
processInstanceService.queryProcessInstanceList(loginUser, projectCode, 1, "",
"", "", loginUser.getUserName(), ExecutionStatus.SUBMITTED_SUCCESS,
- "192.168.xx.xx", 1, 10);
+ "192.168.xx.xx", "",1, 10);
Assert.assertEquals(Status.SUCCESS.getCode(),
(int)successRes.getCode());
//executor null
@@ -217,7 +217,7 @@ public class ProcessInstanceServiceTest {
when(usersService.getUserIdByName(loginUser.getUserName())).thenReturn(-1);
Result executorExistRes =
processInstanceService.queryProcessInstanceList(loginUser, projectCode, 1,
"2020-01-01 00:00:00",
"2020-01-02 00:00:00", "", "admin",
ExecutionStatus.SUBMITTED_SUCCESS,
- "192.168.xx.xx", 1, 10);
+ "192.168.xx.xx", "",1, 10);
Assert.assertEquals(Status.SUCCESS.getCode(),
(int)executorExistRes.getCode());
@@ -226,7 +226,7 @@ public class ProcessInstanceServiceTest {
eq("192.168.xx.xx"), eq(start), eq(end))).thenReturn(pageReturn);
Result executorEmptyRes =
processInstanceService.queryProcessInstanceList(loginUser, projectCode, 1,
"2020-01-01 00:00:00",
"2020-01-02 00:00:00", "", "", ExecutionStatus.SUBMITTED_SUCCESS,
- "192.168.xx.xx", 1, 10);
+ "192.168.xx.xx", "",1, 10);
Assert.assertEquals(Status.SUCCESS.getCode(),
(int)executorEmptyRes.getCode());
}
diff --git
a/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/JSONUtilsTest.java
b/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/JSONUtilsTest.java
index 3a684785e1..6ff3c7dba5 100644
---
a/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/JSONUtilsTest.java
+++
b/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/JSONUtilsTest.java
@@ -17,21 +17,12 @@
package org.apache.dolphinscheduler.common.utils;
-import org.apache.dolphinscheduler.common.model.TaskNode;
-import org.apache.dolphinscheduler.plugin.task.api.enums.DataType;
-import org.apache.dolphinscheduler.plugin.task.api.enums.Direct;
-import org.apache.dolphinscheduler.plugin.task.api.model.Property;
-
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
-import java.util.TimeZone;
-
-import org.junit.Assert;
-import org.junit.Test;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.SerializationFeature;
@@ -39,6 +30,13 @@ import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
import com.fasterxml.jackson.databind.node.ObjectNode;
+import org.apache.dolphinscheduler.common.model.TaskNode;
+import org.apache.dolphinscheduler.plugin.task.api.enums.DataType;
+import org.apache.dolphinscheduler.plugin.task.api.enums.Direct;
+import org.apache.dolphinscheduler.plugin.task.api.model.Property;
+import org.junit.Assert;
+import org.junit.Test;
+
public class JSONUtilsTest {
@Test
@@ -262,7 +260,6 @@ public class JSONUtilsTest {
@Test
public void dateToString() {
- TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
String time = "2022-02-22 13:38:24";
Date date = DateUtils.stringToDate(time);
String json = JSONUtils.toJsonString(date);
@@ -274,7 +271,6 @@ public class JSONUtilsTest {
@Test
public void stringToDate() {
- TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
String json = "\"2022-02-22 13:38:24\"";
Date date = JSONUtils.parseObject(json, Date.class);
Assert.assertEquals(date, DateUtils.stringToDate("2022-02-22
13:38:24"));