This is an automated email from the ASF dual-hosted git repository.
leonbao pushed a commit to branch json_split
in repository https://gitbox.apache.org/repos/asf/incubator-dolphinscheduler.git
The following commit(s) were added to refs/heads/json_split by this push:
new 852710a [Feature][JsonSplit] add task delete/update/switch method
(#4654)
852710a is described below
commit 852710a711ea83abcbe348255097906ba223d901
Author: JinyLeeChina <[email protected]>
AuthorDate: Wed Feb 3 00:27:22 2021 +0800
[Feature][JsonSplit] add task delete/update/switch method (#4654)
* add task query
* modify codestyle
* add task delete/update/swich method
* add task delete/update/swich method
* codestyle
* use updateById save task definition
* modify method name
Co-authored-by: JinyLeeChina <[email protected]>
---
.../api/service/ProcessTaskRelationService.java | 72 +++++++
.../api/service/TaskDefinitionService.java | 37 ++++
.../impl/ProcessTaskRelationServiceImpl.java | 76 ++++++++
.../service/impl/TaskDefinitionServiceImpl.java | 210 ++++++++++++++++++++-
.../dao/mapper/ProcessDefinitionMapper.java | 11 +-
.../dao/mapper/ProcessTaskRelationMapper.java | 12 +-
.../dao/mapper/TaskDefinitionLogMapper.java | 10 +
.../dao/mapper/TaskDefinitionMapper.java | 8 +
.../dao/mapper/ProcessDefinitionMapper.xml | 12 ++
.../dao/mapper/ProcessTaskRelationMapper.xml | 13 +-
.../dao/mapper/TaskDefinitionLogMapper.xml | 24 ++-
.../dao/mapper/TaskDefinitionMapper.xml | 4 +
12 files changed, 467 insertions(+), 22 deletions(-)
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProcessTaskRelationService.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProcessTaskRelationService.java
index 9117e72..0d1d0ea 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProcessTaskRelationService.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProcessTaskRelationService.java
@@ -48,5 +48,77 @@ public interface ProcessTaskRelationService {
String conditionType,
String conditionParams);
+
+ /**
+ * query process task relation
+ *
+ * @param loginUser login user
+ * @param projectName project name
+ * @param processDefinitionCode process definition code
+ */
+ Map<String, Object> queryProcessTaskRelation(User loginUser,
+ String projectName,
+ Long processDefinitionCode);
+
+ /**
+ * delete process task relation
+ *
+ * @param loginUser login user
+ * @param projectName project name
+ * @param processDefinitionCode process definition code
+ */
+ Map<String, Object> deleteTaskDefinitionByProcessCode(User loginUser,
+ String projectName,
+ Long
processDefinitionCode);
+
+ /**
+ * delete process task relation
+ *
+ * @param loginUser login user
+ * @param projectName project name
+ * @param preTaskCode pre task code
+ */
+ Map<String, Object> deleteTaskDefinitionByTaskCode(User loginUser,
+ String projectName,
+ Long preTaskCode);
+
+
+ /**
+ * update process task relation
+ *
+ * @param loginUser login user
+ * @param id process task relation id
+ * @param name relation name
+ * @param projectName process name
+ * @param processDefinitionCode process definition code
+ * @param preTaskCode pre task code
+ * @param postTaskCode post task code
+ * @param conditionType condition type
+ * @param conditionParams condition params
+ */
+ Map<String, Object> updateTaskDefinition(User loginUser,
+ int id,
+ String name,
+ String projectName,
+ Long processDefinitionCode,
+ Long preTaskCode,
+ Long postTaskCode,
+ String conditionType,
+ String conditionParams);
+
+
+ /**
+ * switch process task relation version
+ *
+ * @param loginUser login user
+ * @param projectName project name
+ * @param processTaskRelationId process task relation id
+ * @param version the version user want to switch
+ * @return switch process task relation version result code
+ */
+ Map<String, Object> switchVersion(User loginUser,
+ String projectName,
+ int processTaskRelationId,
+ int version);
}
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/TaskDefinitionService.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/TaskDefinitionService.java
index 4c1f16c..ea0031a 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/TaskDefinitionService.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/TaskDefinitionService.java
@@ -47,5 +47,42 @@ public interface TaskDefinitionService {
Map<String, Object> queryTaskDefinitionByName(User loginUser,
String projectName,
String taskName);
+
+ /**
+ * delete task definition
+ *
+ * @param loginUser login user
+ * @param projectName project name
+ * @param taskCode task code
+ */
+ Map<String, Object> deleteTaskDefinitionByCode(User loginUser,
+ String projectName,
+ Long taskCode);
+
+ /**
+ * update task definition
+ *
+ * @param loginUser login user
+ * @param projectName project name
+ * @param taskCode task code
+ * @param taskDefinitionJson task definition json
+ */
+ Map<String, Object> updateTaskDefinition(User loginUser,
+ String projectName,
+ Long taskCode,
+ String taskDefinitionJson);
+
+ /**
+ * update task definition
+ *
+ * @param loginUser login user
+ * @param projectName project name
+ * @param taskCode task code
+ * @param version the version user want to switch
+ */
+ Map<String, Object> switchVersion(User loginUser,
+ String projectName,
+ Long taskCode,
+ int version);
}
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessTaskRelationServiceImpl.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessTaskRelationServiceImpl.java
index 463117d..f7c5706 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessTaskRelationServiceImpl.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessTaskRelationServiceImpl.java
@@ -147,4 +147,80 @@ public class ProcessTaskRelationServiceImpl extends
BaseService implements
putMsg(result, Status.TASK_DEFINE_NOT_EXIST, taskCode);
}
}
+
+ /**
+ * query process task relation
+ *
+ * @param loginUser login user
+ * @param projectName project name
+ * @param processDefinitionCode process definition code
+ */
+ @Override
+ public Map<String, Object> queryProcessTaskRelation(User loginUser, String
projectName, Long processDefinitionCode) {
+ return null;
+ }
+
+ /**
+ * delete process task relation
+ *
+ * @param loginUser login user
+ * @param projectName project name
+ * @param processDefinitionCode process definition code
+ */
+ @Override
+ public Map<String, Object> deleteTaskDefinitionByProcessCode(User
loginUser, String projectName, Long processDefinitionCode) {
+ return null;
+ }
+
+ /**
+ * delete process task relation
+ *
+ * @param loginUser login user
+ * @param projectName project name
+ * @param preTaskCode pre task code
+ */
+ @Override
+ public Map<String, Object> deleteTaskDefinitionByTaskCode(User loginUser,
String projectName, Long preTaskCode) {
+ return null;
+ }
+
+ /**
+ * update process task relation
+ *
+ * @param loginUser login user
+ * @param id process task relation id
+ * @param name relation name
+ * @param projectName process name
+ * @param processDefinitionCode process definition code
+ * @param preTaskCode pre task code
+ * @param postTaskCode post task code
+ * @param conditionType condition type
+ * @param conditionParams condition params
+ */
+ @Override
+ public Map<String, Object> updateTaskDefinition(User loginUser,
+ int id,
+ String name,
+ String projectName,
+ Long processDefinitionCode,
+ Long preTaskCode,
+ Long postTaskCode,
+ String conditionType,
+ String conditionParams) {
+ return null;
+ }
+
+ /**
+ * switch process task relation version
+ *
+ * @param loginUser login user
+ * @param projectName project name
+ * @param processTaskRelationId process task relation id
+ * @param version the version user want to switch
+ * @return switch process task relation version result code
+ */
+ @Override
+ public Map<String, Object> switchVersion(User loginUser, String
projectName, int processTaskRelationId, int version) {
+ return null;
+ }
}
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/TaskDefinitionServiceImpl.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/TaskDefinitionServiceImpl.java
index 7da467f..ed50788 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/TaskDefinitionServiceImpl.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/TaskDefinitionServiceImpl.java
@@ -24,6 +24,7 @@ import
org.apache.dolphinscheduler.api.service.TaskDefinitionService;
import org.apache.dolphinscheduler.api.utils.CheckUtils;
import org.apache.dolphinscheduler.common.Constants;
import org.apache.dolphinscheduler.common.enums.Flag;
+import org.apache.dolphinscheduler.common.enums.ReleaseState;
import org.apache.dolphinscheduler.common.enums.TaskType;
import org.apache.dolphinscheduler.common.enums.TimeoutFlag;
import org.apache.dolphinscheduler.common.model.TaskNode;
@@ -35,16 +36,21 @@ import
org.apache.dolphinscheduler.common.utils.SnowFlakeUtils;
import
org.apache.dolphinscheduler.common.utils.SnowFlakeUtils.SnowFlakeException;
import org.apache.dolphinscheduler.common.utils.StringUtils;
import org.apache.dolphinscheduler.common.utils.TaskParametersUtils;
+import org.apache.dolphinscheduler.dao.entity.ProcessDefinition;
+import org.apache.dolphinscheduler.dao.entity.ProcessTaskRelation;
import org.apache.dolphinscheduler.dao.entity.Project;
import org.apache.dolphinscheduler.dao.entity.TaskDefinition;
import org.apache.dolphinscheduler.dao.entity.TaskDefinitionLog;
import org.apache.dolphinscheduler.dao.entity.User;
+import org.apache.dolphinscheduler.dao.mapper.ProcessDefinitionMapper;
+import org.apache.dolphinscheduler.dao.mapper.ProcessTaskRelationMapper;
import org.apache.dolphinscheduler.dao.mapper.ProjectMapper;
import org.apache.dolphinscheduler.dao.mapper.TaskDefinitionLogMapper;
import org.apache.dolphinscheduler.dao.mapper.TaskDefinitionMapper;
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;
@@ -76,6 +82,11 @@ public class TaskDefinitionServiceImpl extends BaseService
implements
@Autowired
private TaskDefinitionLogMapper taskDefinitionLogMapper;
+ @Autowired
+ private ProcessTaskRelationMapper processTaskRelationMapper;
+
+ @Autowired
+ private ProcessDefinitionMapper processDefinitionMapper;
/**
* create task definition
@@ -100,14 +111,8 @@ public class TaskDefinitionServiceImpl extends BaseService
implements
}
TaskNode taskNode = JSONUtils.parseObject(taskDefinitionJson,
TaskNode.class);
- if (taskNode == null) {
- logger.error("taskDefinitionJson is not valid json");
- putMsg(result, Status.DATA_IS_NOT_VALID, taskDefinitionJson);
- return result;
- }
- if (!CheckUtils.checkTaskNodeParameters(taskNode.getParams(),
taskNode.getName())) {
- logger.error("task node {} parameter invalid", taskNode.getName());
- putMsg(result, Status.PROCESS_NODE_S_PARAMETER_INVALID,
taskNode.getName());
+ checkTaskNode(result, taskNode, taskDefinitionJson);
+ if (result.get(Constants.STATUS) != Status.SUCCESS) {
return result;
}
long code = 0L;
@@ -129,8 +134,10 @@ public class TaskDefinitionServiceImpl extends BaseService
implements
loginUser.getId(),
TaskType.of(taskNode.getType()),
taskNode.getParams(),
- taskNode.isForbidden() ? Flag.NO : Flag.YES,
taskNode.getTaskInstancePriority(),
- taskNode.getWorkerGroup(), taskNode.getMaxRetryTimes(),
+ taskNode.isForbidden() ? Flag.NO : Flag.YES,
+ taskNode.getTaskInstancePriority(),
+ taskNode.getWorkerGroup(),
+ taskNode.getMaxRetryTimes(),
taskNode.getRetryInterval(),
taskNode.getTaskTimeoutParameter().getEnable() ?
TimeoutFlag.OPEN : TimeoutFlag.CLOSE,
taskNode.getTaskTimeoutParameter().getStrategy(),
@@ -204,5 +211,188 @@ public class TaskDefinitionServiceImpl extends
BaseService implements
return result;
}
+ /**
+ * delete task definition
+ *
+ * @param loginUser login user
+ * @param projectName project name
+ * @param taskCode task code
+ */
+ @Transactional(rollbackFor = RuntimeException.class)
+ @Override
+ public Map<String, Object> deleteTaskDefinitionByCode(User loginUser,
String projectName, Long taskCode) {
+ Map<String, Object> result = new HashMap<>(5);
+ Project project = projectMapper.queryByName(projectName);
+
+ Map<String, Object> checkResult =
projectService.checkProjectAndAuth(loginUser, project, projectName);
+ Status resultEnum = (Status) checkResult.get(Constants.STATUS);
+ if (resultEnum != Status.SUCCESS) {
+ return checkResult;
+ }
+ checkTaskRelation(result, taskCode);
+ resultEnum = (Status) result.get(Constants.STATUS);
+ if (resultEnum != Status.SUCCESS) {
+ return result;
+ }
+ int delete = taskDefinitionMapper.deleteByCode(taskCode);
+ if (delete > 0) {
+ putMsg(result, Status.SUCCESS);
+ } else {
+ putMsg(result, Status.DELETE_PROCESS_DEFINE_BY_ID_ERROR);
+ }
+ return result;
+ }
+
+ /**
+ * update task definition
+ *
+ * @param loginUser login user
+ * @param projectName project name
+ * @param taskCode task code
+ * @param taskDefinitionJson task definition json
+ */
+ @Override
+ public Map<String, Object> updateTaskDefinition(User loginUser, String
projectName, Long taskCode, String taskDefinitionJson) {
+ Map<String, Object> result = new HashMap<>(5);
+ Project project = projectMapper.queryByName(projectName);
+
+ Map<String, Object> checkResult =
projectService.checkProjectAndAuth(loginUser, project, projectName);
+ Status resultEnum = (Status) checkResult.get(Constants.STATUS);
+ if (resultEnum != Status.SUCCESS) {
+ return checkResult;
+ }
+ checkTaskRelation(result, taskCode);
+ if (result.get(Constants.STATUS) != Status.SUCCESS) {
+ return result;
+ }
+ TaskDefinition taskDefinition =
taskDefinitionMapper.queryByDefinitionCode(taskCode);
+ if (taskDefinition == null) {
+ putMsg(result, Status.TASK_DEFINE_NOT_EXIST, taskCode);
+ return result;
+ }
+ TaskNode taskNode = JSONUtils.parseObject(taskDefinitionJson,
TaskNode.class);
+ checkTaskNode(result, taskNode, taskDefinitionJson);
+ if (result.get(Constants.STATUS) != Status.SUCCESS) {
+ return result;
+ }
+
+ List<TaskDefinitionLog> taskDefinitionLogs =
taskDefinitionLogMapper.queryByDefinitionCode(taskCode);
+ int version = taskDefinitionLogs
+ .stream()
+ .map(TaskDefinitionLog::getVersion)
+ .max((x, y) -> x > y ? x : y)
+ .orElse(0) + 1;
+ Date now = new Date();
+ taskDefinition.setVersion(version);
+ taskDefinition.setCode(taskCode);
+ taskDefinition.setName(taskNode.getName());
+ taskDefinition.setDescription(taskNode.getDesc());
+ taskDefinition.setProjectCode(project.getCode());
+ taskDefinition.setUserId(loginUser.getId());
+ taskDefinition.setTaskType(TaskType.of(taskNode.getType()));
+ taskDefinition.setTaskParams(taskNode.getParams());
+ taskDefinition.setFlag(taskNode.isForbidden() ? Flag.NO : Flag.YES);
+ taskDefinition.setTaskPriority(taskNode.getTaskInstancePriority());
+ taskDefinition.setWorkerGroup(taskNode.getWorkerGroup());
+ taskDefinition.setFailRetryTimes(taskNode.getMaxRetryTimes());
+ taskDefinition.setFailRetryInterval(taskNode.getRetryInterval());
+
taskDefinition.setTimeoutFlag(taskNode.getTaskTimeoutParameter().getEnable() ?
TimeoutFlag.OPEN : TimeoutFlag.CLOSE);
+
taskDefinition.setTaskTimeoutStrategy(taskNode.getTaskTimeoutParameter().getStrategy());
+
taskDefinition.setTimeout(taskNode.getTaskTimeoutParameter().getInterval());
+ taskDefinition.setUpdateTime(now);
+ taskDefinition.setResourceIds(getResourceIds(taskDefinition));
+ taskDefinitionMapper.updateById(taskDefinition);
+ // save task definition log
+ TaskDefinitionLog taskDefinitionLog = new TaskDefinitionLog();
+ taskDefinitionLog.set(taskDefinition);
+ taskDefinitionLog.setOperator(loginUser.getId());
+ taskDefinitionLog.setOperateTime(now);
+ taskDefinitionLogMapper.insert(taskDefinitionLog);
+ result.put(Constants.DATA_LIST, taskCode);
+ putMsg(result, Status.SUCCESS);
+ return result;
+ }
+
+ public void checkTaskRelation(Map<String, Object> result, Long taskCode) {
+ List<ProcessTaskRelation> processTaskRelationList =
processTaskRelationMapper.queryByTaskCode(taskCode, taskCode);
+ if (!processTaskRelationList.isEmpty()) {
+ Set<Long> processDefinitionCodes = processTaskRelationList
+ .stream()
+ .map(ProcessTaskRelation::getProcessDefinitionCode)
+ .collect(Collectors.toSet());
+ List<ProcessDefinition> processDefinitionList =
processDefinitionMapper.queryByCodes(processDefinitionCodes);
+ // check process definition is already online
+ for (ProcessDefinition processDefinition : processDefinitionList) {
+ if (processDefinition.getReleaseState() ==
ReleaseState.ONLINE) {
+ putMsg(result, Status.PROCESS_DEFINE_STATE_ONLINE,
processDefinition.getCode());
+ return;
+ }
+ }
+ }
+ }
+
+ public void checkTaskNode(Map<String, Object> result, TaskNode taskNode,
String taskDefinitionJson) {
+ if (taskNode == null) {
+ logger.error("taskDefinitionJson is not valid json");
+ putMsg(result, Status.DATA_IS_NOT_VALID, taskDefinitionJson);
+ return;
+ }
+ if (!CheckUtils.checkTaskNodeParameters(taskNode.getParams(),
taskNode.getName())) {
+ logger.error("task node {} parameter invalid", taskNode.getName());
+ putMsg(result, Status.PROCESS_NODE_S_PARAMETER_INVALID,
taskNode.getName());
+ }
+ }
+
+ /**
+ * update task definition
+ *
+ * @param loginUser login user
+ * @param projectName project name
+ * @param taskCode task code
+ * @param version the version user want to switch
+ */
+ @Override
+ public Map<String, Object> switchVersion(User loginUser, String
projectName, Long taskCode, int version) {
+ Map<String, Object> result = new HashMap<>(5);
+ Project project = projectMapper.queryByName(projectName);
+
+ Map<String, Object> checkResult =
projectService.checkProjectAndAuth(loginUser, project, projectName);
+ Status resultEnum = (Status) checkResult.get(Constants.STATUS);
+ if (resultEnum != Status.SUCCESS) {
+ return checkResult;
+ }
+ checkTaskRelation(result, taskCode);
+ if (result.get(Constants.STATUS) != Status.SUCCESS) {
+ return result;
+ }
+ TaskDefinition taskDefinition =
taskDefinitionMapper.queryByDefinitionCode(taskCode);
+ if (taskDefinition == null) {
+ putMsg(result, Status.TASK_DEFINE_NOT_EXIST, taskCode);
+ return result;
+ }
+ TaskDefinitionLog taskDefinitionLog =
taskDefinitionLogMapper.queryByDefinitionCodeAndVersion(taskCode, version);
+ taskDefinition.setVersion(version);
+ taskDefinition.setCode(taskCode);
+ taskDefinition.setName(taskDefinitionLog.getName());
+ taskDefinition.setDescription(taskDefinitionLog.getDescription());
+ taskDefinition.setProjectCode(taskDefinitionLog.getProjectCode());
+ taskDefinition.setUserId(loginUser.getId());
+ taskDefinition.setTaskType(taskDefinitionLog.getTaskType());
+ taskDefinition.setTaskParams(taskDefinitionLog.getTaskParams());
+ taskDefinition.setFlag(taskDefinitionLog.getFlag());
+ taskDefinition.setTaskPriority(taskDefinitionLog.getTaskPriority());
+ taskDefinition.setWorkerGroup(taskDefinitionLog.getWorkerGroup());
+
taskDefinition.setFailRetryTimes(taskDefinitionLog.getFailRetryTimes());
+
taskDefinition.setFailRetryInterval(taskDefinitionLog.getFailRetryInterval());
+ taskDefinition.setTimeoutFlag(taskDefinitionLog.getTimeoutFlag());
+
taskDefinition.setTaskTimeoutStrategy(taskDefinitionLog.getTaskTimeoutStrategy());
+ taskDefinition.setTimeout(taskDefinitionLog.getTimeout());
+ taskDefinition.setUpdateTime(new Date());
+ taskDefinition.setResourceIds(taskDefinitionLog.getResourceIds());
+ taskDefinitionMapper.updateById(taskDefinition);
+ result.put(Constants.DATA_LIST, taskCode);
+ putMsg(result, Status.SUCCESS);
+ return result;
+ }
}
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapper.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapper.java
index 4c61d68..ff4d944 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapper.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapper.java
@@ -23,6 +23,7 @@ import
org.apache.dolphinscheduler.dao.entity.ProcessDefinition;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;
+import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -41,7 +42,15 @@ public interface ProcessDefinitionMapper extends
BaseMapper<ProcessDefinition> {
* @return process definition
*/
ProcessDefinition queryByCode(@Param("code") Long code);
-
+
+ /**
+ * query process definition by code list
+ *
+ * @param codes codes
+ * @return process definition list
+ */
+ List<ProcessDefinition> queryByCodes(@Param("codes") Collection<Long>
codes);
+
/**
* delete process definition by code
*
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessTaskRelationMapper.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessTaskRelationMapper.java
index 6fb6f9f..1612fec 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessTaskRelationMapper.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessTaskRelationMapper.java
@@ -34,7 +34,17 @@ public interface ProcessTaskRelationMapper extends
BaseMapper<ProcessTaskRelatio
* process task relation by processDefinitionCode
*
* @param processDefinitionCode processDefinitionCode
- * @return task definition
+ * @return ProcessTaskRelation
*/
List<ProcessTaskRelation>
queryByProcessDefinitionCode(@Param("processDefinitionCode") String
processDefinitionCode);
+
+ /**
+ * process task relation by taskCode
+ *
+ * @param preTaskCode preTaskCode
+ * @param postTaskCode postTaskCode
+ * @return ProcessTaskRelation
+ */
+ List<ProcessTaskRelation> queryByTaskCode(@Param("preTaskCode") Long
preTaskCode,
+ @Param("postTaskCode") Long
postTaskCode);
}
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/TaskDefinitionLogMapper.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/TaskDefinitionLogMapper.java
index b4878a0..e49e01e 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/TaskDefinitionLogMapper.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/TaskDefinitionLogMapper.java
@@ -47,4 +47,14 @@ public interface TaskDefinitionLogMapper extends
BaseMapper<TaskDefinitionLog> {
* @return task definition log list
*/
List<TaskDefinitionLog> queryByDefinitionCode(@Param("taskDefinitionCode")
long taskDefinitionCode);
+
+ /**
+ * query task definition log
+ *
+ * @param taskDefinitionCode taskDefinitionCode
+ * @param version version
+ * @return task definition log
+ */
+ TaskDefinitionLog
queryByDefinitionCodeAndVersion(@Param("taskDefinitionCode") long
taskDefinitionCode,
+ @Param("version") int
version);
}
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/TaskDefinitionMapper.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/TaskDefinitionMapper.java
index 6e68fc5..b200d9a 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/TaskDefinitionMapper.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/TaskDefinitionMapper.java
@@ -98,4 +98,12 @@ public interface TaskDefinitionMapper extends
BaseMapper<TaskDefinition> {
*/
@MapKey("id")
List<Map<String, Object>> listResourcesByUser(@Param("userId") Integer
userId);
+
+ /**
+ * delete task definition by code
+ *
+ * @param code code
+ * @return int
+ */
+ int deleteByCode(@Param("code") Long code);
}
diff --git
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapper.xml
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapper.xml
index e9a4888..1dbb9fd 100644
---
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapper.xml
+++
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapper.xml
@@ -44,6 +44,18 @@
from t_ds_process_definition
where code = #{code}
</select>
+ <select id="queryByCodes"
resultType="org.apache.dolphinscheduler.dao.entity.ProcessDefinition">
+ select
+ <include refid="baseSql"/>
+ from t_ds_process_definition
+ where 1 = 1
+ <if test="codes != null and codes.length != 0">
+ and code in
+ <foreach collection="codes" index="index" item="i" open="("
separator="," close=")">
+ #{i}
+ </foreach>
+ </if>
+ </select>
<select id="queryByDefineName"
resultType="org.apache.dolphinscheduler.dao.entity.ProcessDefinition">
select pd.id, pd.name, pd.version, pd.release_state, pd.project_id,
pd.user_id, pd.description,
diff --git
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessTaskRelationMapper.xml
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessTaskRelationMapper.xml
index e6192cb..65c6906 100644
---
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessTaskRelationMapper.xml
+++
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessTaskRelationMapper.xml
@@ -19,8 +19,8 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper
namespace="org.apache.dolphinscheduler.dao.mapper.ProcessTaskRelationMapper">
<sql id="baseSql">
- id, `name`, version, project_code, process_definition_code,
pre_project_code, pre_task_code, post_project_code,
- post_task_code, condition_type, condition_params, create_time,
update_time
+ id, `name`, version, project_code, process_definition_code,
pre_task_code, post_task_code,
+ condition_type, condition_params, create_time, update_time
</sql>
<select id="queryByProcessDefinitionCode"
resultType="org.apache.dolphinscheduler.dao.entity.ProcessTaskRelation">
select
@@ -28,4 +28,13 @@
from t_ds_process_task_relation
WHERE process_definition_code = #{processDefinitionCode}
</select>
+ <select id="queryByTaskCode"
resultType="org.apache.dolphinscheduler.dao.entity.ProcessTaskRelation">
+ select
+ <include refid="baseSql"/>
+ from t_ds_process_task_relation
+ WHERE pre_task_code = #{preTaskCode}
+ <if test="postTaskCode != 0">
+ or post_task_code = #{postTaskCode}
+ </if>
+ </select>
</mapper>
diff --git
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/TaskDefinitionLogMapper.xml
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/TaskDefinitionLogMapper.xml
index 814ed70..689eff2 100644
---
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/TaskDefinitionLogMapper.xml
+++
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/TaskDefinitionLogMapper.xml
@@ -18,6 +18,11 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper
namespace="org.apache.dolphinscheduler.dao.mapper.TaskDefinitionLogMapper">
+ <sql id="baseSql">
+ id, code, `name`, version, description, project_code, user_id,
task_type, task_params, flag, task_priority,
+ worker_group, fail_retry_times, fail_retry_interval, timeout_flag,
timeout_notify_strategy, timeout,
+ resource_ids, operator, operate_time, create_time, update_time
+ </sql>
<select id="queryByDefinitionName"
resultType="org.apache.dolphinscheduler.dao.entity.TaskDefinitionLog">
select td.id, td.code, td.name, td.version, td.description,
td.project_code, td.user_id, td.task_type, td.task_params,
td.flag, td.task_priority, td.worker_group, td.fail_retry_times,
td.fail_retry_interval, td.timeout_flag,
@@ -30,13 +35,16 @@
and td.name = #{taskDefinitionName}
</select>
<select id="queryByDefinitionCode"
resultType="org.apache.dolphinscheduler.dao.entity.TaskDefinitionLog">
- select td.id, td.code, td.name, td.version, td.description,
td.project_code, td.user_id, td.task_type, td.task_params,
- td.flag, td.task_priority, td.worker_group, td.fail_retry_times,
td.fail_retry_interval, td.timeout_flag,
- td.timeout_notify_strategy, td.timeout, td.resource_ids,
td.operator,td.operate_time, td.create_time, td.update_time,
- u.user_name,p.name as project_name
- from t_ds_task_definition_log td
- JOIN t_ds_user u ON td.user_id = u.id
- JOIN t_ds_project p ON td.project_code = p.code
- WHERE td.code = #{taskDefinitionCode}
+ select
+ <include refid="baseSql"/>
+ from t_ds_task_definition_log
+ WHERE code = #{taskDefinitionCode}
+ </select>
+ <select id="queryByDefinitionCodeAndVersion"
resultType="org.apache.dolphinscheduler.dao.entity.TaskDefinitionLog">
+ select
+ <include refid="baseSql"/>
+ from t_ds_task_definition_log
+ WHERE code = #{taskDefinitionCode}
+ and version = #{version}
</select>
</mapper>
diff --git
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/TaskDefinitionMapper.xml
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/TaskDefinitionMapper.xml
index 055a70a..4d1d935 100644
---
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/TaskDefinitionMapper.xml
+++
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/TaskDefinitionMapper.xml
@@ -87,4 +87,8 @@
FROM t_ds_task_definition
WHERE user_id = #{userId} resource_ids is not null and resource_ids !=
''
</select>
+ <delete id="deleteByCode">
+ delete from t_ds_task_definition
+ where code = #{code}
+ </delete>
</mapper>