This is an automated email from the ASF dual-hosted git repository.
wenhemin pushed a commit to branch json_split_two
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git
The following commit(s) were added to refs/heads/json_split_two by this push:
new 741d757 [Feature][JsonSplit-api]taskDefinition save interface (#5828)
741d757 is described below
commit 741d757dcb8c80c97c32d314c0fb5da08ebad5ea
Author: sky <[email protected]>
AuthorDate: Sat Jul 17 15:35:13 2021 +0800
[Feature][JsonSplit-api]taskDefinition save interface (#5828)
* create task definition api
create task definition api
create task definition api
* fix code smell
* use taskdefinitionlogs not taskdefinition
* fix code smell
* trigger GitHub actions
* fix unit test question
* fix unit test question
* fix unit test question
---
.../api/controller/TaskDefinitionController.java | 6 +-
.../apache/dolphinscheduler/api/enums/Status.java | 2 +-
.../service/impl/TaskDefinitionServiceImpl.java | 67 +++++++++++++++------
.../dolphinscheduler/api/utils/CheckUtils.java | 19 +++++-
.../api/service/TaskDefinitionServiceImplTest.java | 70 +++++++++-------------
.../dao/entity/TaskDefinition.java | 5 ++
.../dao/mapper/TaskDefinitionLogMapper.java | 8 +++
.../dao/mapper/TaskDefinitionMapper.java | 10 +++-
.../dao/mapper/TaskDefinitionLogMapper.xml | 14 +++++
.../dao/mapper/TaskDefinitionMapper.xml | 13 ++++
10 files changed, 148 insertions(+), 66 deletions(-)
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/TaskDefinitionController.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/TaskDefinitionController.java
index b4838c7..9a25cc2 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/TaskDefinitionController.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/TaskDefinitionController.java
@@ -17,7 +17,7 @@
package org.apache.dolphinscheduler.api.controller;
-import static
org.apache.dolphinscheduler.api.enums.Status.CREATE_TASK_DEFINITION;
+import static
org.apache.dolphinscheduler.api.enums.Status.CREATE_TASK_DEFINITION_ERROR;
import static
org.apache.dolphinscheduler.api.enums.Status.DELETE_TASK_DEFINE_BY_CODE_ERROR;
import static
org.apache.dolphinscheduler.api.enums.Status.DELETE_TASK_DEFINITION_VERSION_ERROR;
import static
org.apache.dolphinscheduler.api.enums.Status.QUERY_DETAIL_OF_TASK_DEFINITION_ERROR;
@@ -55,6 +55,8 @@ import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import springfox.documentation.annotations.ApiIgnore;
+
+
/**
* task definition controller
*/
@@ -81,7 +83,7 @@ public class TaskDefinitionController extends BaseController {
})
@PostMapping(value = "/save")
@ResponseStatus(HttpStatus.CREATED)
- @ApiException(CREATE_TASK_DEFINITION)
+ @ApiException(CREATE_TASK_DEFINITION_ERROR)
@AccessLogAnnotation(ignoreRequestArgs = "loginUser")
public Result createTaskDefinition(@ApiIgnore @RequestAttribute(value =
Constants.SESSION_USER) User loginUser,
@ApiParam(name = "projectCode", value =
"PROJECT_CODE", required = true) @PathVariable long projectCode,
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java
index 268dd8e..cc5a380 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java
@@ -270,7 +270,7 @@ public enum Status {
PROCESS_TASK_RELATION_EXIST(50034, "process task relation is already
exist, processCode:[{0}]", "工作流任务关系已存在, processCode:[{0}]"),
PROCESS_DAG_IS_EMPTY(50035, "process dag can not be empty", "工作流dag不能为空"),
CHECK_PROCESS_TASK_RELATION_ERROR(50036, "check process task relation
error", "工作流任务关系参数错误"),
- CREATE_TASK_DEFINITION(50037, "create task definition", "创建任务错误"),
+ CREATE_TASK_DEFINITION_ERROR(50037, "create task definition error",
"创建任务错误"),
UPDATE_TASK_DEFINITION_ERROR(50038, "update task definition error",
"更新任务定义错误"),
QUERY_TASK_DEFINITION_VERSIONS_ERROR(50039, "query task definition
versions error", "查询任务历史版本信息出错"),
SWITCH_TASK_DEFINITION_VERSION_ERROR(50040, "Switch task definition
version error", "切换任务版本出错"),
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 66bff85..4b2a963 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
@@ -19,6 +19,7 @@ package org.apache.dolphinscheduler.api.service.impl;
import static org.apache.dolphinscheduler.api.enums.Status.DATA_IS_NOT_VALID;
+
import org.apache.dolphinscheduler.api.enums.Status;
import org.apache.dolphinscheduler.api.service.ProjectService;
import org.apache.dolphinscheduler.api.service.TaskDefinitionService;
@@ -40,7 +41,9 @@ import
org.apache.dolphinscheduler.dao.mapper.TaskDefinitionLogMapper;
import org.apache.dolphinscheduler.dao.mapper.TaskDefinitionMapper;
import org.apache.dolphinscheduler.service.process.ProcessService;
+import java.util.ArrayList;
import java.util.Date;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -97,28 +100,48 @@ public class TaskDefinitionServiceImpl extends
BaseServiceImpl implements TaskDe
return result;
}
- TaskNode taskNode = JSONUtils.parseObject(taskDefinitionJson,
TaskNode.class);
- checkTaskNode(result, taskNode, taskDefinitionJson);
- if (result.get(Constants.STATUS) == DATA_IS_NOT_VALID
- || result.get(Constants.STATUS) ==
Status.PROCESS_NODE_S_PARAMETER_INVALID) {
- return result;
- }
- TaskDefinition taskDefinition = new TaskDefinition();
- long code = 0L;
- try {
- code = SnowFlakeUtils.getInstance().nextId();
- taskDefinition.setCode(code);
- } catch (SnowFlakeException e) {
- logger.error("Task code get error, ", e);
+ List<TaskDefinitionLog> taskDefinitionLogs =
JSONUtils.toList(taskDefinitionJson, TaskDefinitionLog.class);
+ int totalSuccessNumber = 0;
+ List<Long> totalSuccessCode = new ArrayList<>();
+ List<TaskDefinitionLog> taskDefinitionLogsList = new ArrayList<>();
+ for (TaskDefinitionLog taskDefinitionLog : taskDefinitionLogs) {
+ checkTaskDefinition(result, taskDefinitionLog);
+ if (result.get(Constants.STATUS) == DATA_IS_NOT_VALID
+ || result.get(Constants.STATUS) ==
Status.PROCESS_NODE_S_PARAMETER_INVALID) {
+ return result;
+ }
+ taskDefinitionLog.setProjectCode(projectCode);
+ taskDefinitionLog.setUserId(loginUser.getId());
+ taskDefinitionLog.setVersion(1);
+ Date now = new Date();
+ taskDefinitionLog.setCreateTime(now);
+ taskDefinitionLog.setUpdateTime(now);
+ long code = 0L;
+ try {
+ code = SnowFlakeUtils.getInstance().nextId();
+ taskDefinitionLog.setCode(code);
+ } catch (SnowFlakeException e) {
+ logger.error("Task code get error, ", e);
+ putMsg(result, Status.INTERNAL_SERVER_ERROR_ARGS, "Error
generating task definition code");
+ return result;
+ }
+ taskDefinitionLog.setOperator(loginUser.getId());
+ taskDefinitionLog.setOperateTime(now);
+ taskDefinitionLogsList.add(taskDefinitionLog);
+ totalSuccessCode.add(code);
+ totalSuccessNumber++;
}
- if (code == 0L) {
- putMsg(result, Status.INTERNAL_SERVER_ERROR_ARGS, "Error
generating task definition code");
+ int insert = taskDefinitionMapper.batchInsert(taskDefinitionLogsList);
+ int logInsert =
taskDefinitionLogMapper.batchInsert(taskDefinitionLogsList);
+ if ((logInsert & insert) == 0) {
+ putMsg(result, Status.CREATE_TASK_DEFINITION_ERROR);
return result;
}
- int insert = processService.saveTaskDefinition(loginUser,
project.getCode(), taskNode, taskDefinition);
- // return taskDefinition object with code
- result.put(Constants.DATA_LIST, code);
- putMsg(result, Status.SUCCESS, insert);
+ Map<String, Object> resData = new HashMap<>();
+ resData.put("total", totalSuccessNumber);
+ resData.put("code",totalSuccessCode);
+ putMsg(result, Status.SUCCESS);
+ result.put(Constants.DATA_LIST, resData);
return result;
}
@@ -232,6 +255,12 @@ public class TaskDefinitionServiceImpl extends
BaseServiceImpl implements TaskDe
}
}
+ private void checkTaskDefinition(Map<String, Object> result,
TaskDefinition taskDefinition) {
+ if (!CheckUtils.checkTaskDefinitionParameters(taskDefinition)) {
+ logger.error("task definition {} parameter invalid",
taskDefinition.getName());
+ putMsg(result, Status.PROCESS_NODE_S_PARAMETER_INVALID,
taskDefinition.getName());
+ }
+ }
/**
* update task definition
*
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/utils/CheckUtils.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/utils/CheckUtils.java
index aca9771..1149aa8 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/utils/CheckUtils.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/utils/CheckUtils.java
@@ -24,6 +24,7 @@ import
org.apache.dolphinscheduler.common.task.AbstractParameters;
import org.apache.dolphinscheduler.common.utils.JSONUtils;
import org.apache.dolphinscheduler.common.utils.StringUtils;
import org.apache.dolphinscheduler.common.utils.TaskParametersUtils;
+import org.apache.dolphinscheduler.dao.entity.TaskDefinition;
import java.text.MessageFormat;
import java.util.HashMap;
@@ -134,7 +135,23 @@ public class CheckUtils {
if (TaskType.DEPENDENT.getDesc().equalsIgnoreCase(taskType)) {
abstractParameters =
TaskParametersUtils.getParameters(taskType.toUpperCase(),
taskNode.getDependence());
} else {
- abstractParameters =
TaskParametersUtils.getParameters(taskType.toUpperCase(), taskNode.getParams());
+ abstractParameters =
TaskParametersUtils.getParameters(taskType.toUpperCase(),
taskNode.getTaskParams());
+ }
+
+ if (abstractParameters != null) {
+ return abstractParameters.checkParameters();
+ }
+
+ return false;
+ }
+
+ public static boolean checkTaskDefinitionParameters(TaskDefinition
taskDefinition) {
+ AbstractParameters abstractParameters;
+ String taskType = taskDefinition.getTaskType();
+ if (TaskType.DEPENDENT.getDesc().equalsIgnoreCase(taskType)) {
+ abstractParameters =
TaskParametersUtils.getParameters(taskType.toUpperCase(),
taskDefinition.getDependence());
+ } else {
+ abstractParameters =
TaskParametersUtils.getParameters(taskType.toUpperCase(),
taskDefinition.getTaskParams());
}
if (abstractParameters != null) {
diff --git
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/TaskDefinitionServiceImplTest.java
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/TaskDefinitionServiceImplTest.java
index b78fd82..d58c509 100644
---
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/TaskDefinitionServiceImplTest.java
+++
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/TaskDefinitionServiceImplTest.java
@@ -37,6 +37,7 @@ import
org.apache.dolphinscheduler.service.process.ProcessService;
import java.text.MessageFormat;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import org.junit.Assert;
@@ -49,7 +50,6 @@ import org.mockito.junit.MockitoJUnitRunner;
@RunWith(MockitoJUnitRunner.class)
public class TaskDefinitionServiceImplTest {
-
String taskDefinitionJson = "{\n"
+ " \"type\": \"SQL\",\n"
+ " \"id\": \"tasks-27297\",\n"
@@ -132,16 +132,34 @@ public class TaskDefinitionServiceImplTest {
putMsg(result, Status.SUCCESS, projectCode);
Mockito.when(projectService.checkProjectAndAuth(loginUser, project,
project.getName())).thenReturn(result);
- TaskNode taskNode = JSONUtils.parseObject(taskDefinitionJson,
TaskNode.class);
-
- Mockito.when(processService.saveTaskDefinition(Mockito.eq(loginUser)
- , Mockito.eq(project.getCode())
- , Mockito.eq(taskNode)
- , Mockito.any(TaskDefinition.class)))
- .thenReturn(1);
-
+ String createTaskDefinitionJson = "[{\n"
+ + "\"name\": \"test12111\",\n"
+ + "\"description\": \"test\",\n"
+ + "\"taskType\": \"SHELL\",\n"
+ + "\"flag\": 0,\n"
+ + "\"taskParams\": \n"
+ + "\"{\\\"resourceList\\\":[],\n"
+ + "\\\"localParams\\\":[],\n"
+ + "\\\"rawScript\\\":\\\"echo 11\\\",\n"
+ + "\\\"conditionResult\\\":\n"
+ + "{\\\"successNode\\\":[\\\"\\\"],\n"
+ + "\\\"failedNode\\\":[\\\"\\\"]},\n"
+ + "\\\"dependence\\\":{}}\",\n"
+ + "\"taskPriority\": 0,\n"
+ + "\"workerGroup\": \"default\",\n"
+ + "\"failRetryTimes\": 0,\n"
+ + "\"failRetryInterval\": 1,\n"
+ + "\"timeoutFlag\": 1, \n"
+ + "\"timeoutNotifyStrategy\": 0,\n"
+ + "\"timeout\": 0, \n"
+ + "\"delayTime\": 0,\n"
+ + "\"resourceIds\":\"\" \n"
+ + "}] ";
+ List<TaskDefinition> taskDefinitions =
JSONUtils.toList(createTaskDefinitionJson, TaskDefinition.class);
+
Mockito.when(taskDefinitionMapper.batchInsert(Mockito.anyList())).thenReturn(1);
+
Mockito.when(taskDefinitionLogMapper.batchInsert(Mockito.anyList())).thenReturn(1);
Map<String, Object> relation = taskDefinitionService
- .createTaskDefinition(loginUser, projectCode,
taskDefinitionJson);
+ .createTaskDefinition(loginUser, projectCode,
createTaskDefinitionJson);
Assert.assertEquals(Status.SUCCESS, relation.get(Constants.STATUS));
@@ -202,38 +220,6 @@ public class TaskDefinitionServiceImplTest {
}
@Test
- public void updateTaskDefinition() {
- long projectCode = 1L;
-
- Project project = getProject(projectCode);
-
Mockito.when(projectMapper.queryByCode(projectCode)).thenReturn(project);
-
- User loginUser = new User();
- loginUser.setId(-1);
- loginUser.setUserType(UserType.GENERAL_USER);
-
- Map<String, Object> result = new HashMap<>();
- putMsg(result, Status.SUCCESS, projectCode);
- Mockito.when(projectService.checkProjectAndAuth(loginUser, project,
project.getName())).thenReturn(result);
-
- TaskNode taskNode = JSONUtils.parseObject(taskDefinitionJson,
TaskNode.class);
-
- Mockito.when(processService.updateTaskDefinition(Mockito.eq(loginUser)
- , Mockito.eq(project.getCode())
- , Mockito.eq(taskNode)
- , Mockito.any(TaskDefinition.class)))
- .thenReturn(1);
-
- Mockito.when(taskDefinitionMapper.queryByDefinitionCode(11L))
- .thenReturn(new TaskDefinition());
-
- Map<String, Object> relation = taskDefinitionService
- .updateTaskDefinition(loginUser, projectCode, 11L,
taskDefinitionJson);
-
- Assert.assertEquals(Status.SUCCESS, relation.get(Constants.STATUS));
- }
-
- @Test
public void switchVersion() {
int version = 1;
long taskCode = 11L;
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskDefinition.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskDefinition.java
index 08ca28d..28859d4 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskDefinition.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskDefinition.java
@@ -17,6 +17,7 @@
package org.apache.dolphinscheduler.dao.entity;
+import org.apache.dolphinscheduler.common.Constants;
import org.apache.dolphinscheduler.common.enums.Flag;
import org.apache.dolphinscheduler.common.enums.Priority;
import org.apache.dolphinscheduler.common.enums.TaskTimeoutStrategy;
@@ -395,6 +396,10 @@ public class TaskDefinition {
this.delayTime = delayTime;
}
+ public String getDependence() {
+ return JSONUtils.getNodeString(this.taskParams, Constants.DEPENDENCE);
+ }
+
@Override
public String toString() {
return "TaskDefinition{"
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 1ad40e0..eb29b64 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
@@ -67,4 +67,12 @@ public interface TaskDefinitionLogMapper extends
BaseMapper<TaskDefinitionLog> {
*/
List<TaskDefinitionLog> queryByTaskDefinitions(@Param("taskDefinitions")
Collection<TaskDefinition> taskDefinitions);
+ /**
+ * batch insert task definition logs
+ *
+ * @param taskDefinitionLogs taskDefinitionLogs
+ * @return int
+ */
+ int batchInsert(@Param("taskDefinitionLogs") List<TaskDefinitionLog>
taskDefinitionLogs);
+
}
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 b200d9a..99503b2 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
@@ -19,7 +19,7 @@ package org.apache.dolphinscheduler.dao.mapper;
import org.apache.dolphinscheduler.dao.entity.DefinitionGroupByUser;
import org.apache.dolphinscheduler.dao.entity.TaskDefinition;
-
+import org.apache.dolphinscheduler.dao.entity.TaskDefinitionLog;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;
@@ -106,4 +106,12 @@ public interface TaskDefinitionMapper extends
BaseMapper<TaskDefinition> {
* @return int
*/
int deleteByCode(@Param("code") Long code);
+
+ /**
+ * batch insert task definitions
+ *
+ * @param taskDefinitions taskDefinitions
+ * @return int
+ */
+ int batchInsert(@Param("taskDefinitions") List<TaskDefinitionLog>
taskDefinitions);
}
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 7f31843..df9d115 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
@@ -59,4 +59,18 @@
</foreach>
</if>
</select>
+ <insert id="batchInsert">
+ insert into t_ds_task_definition_log (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, delay_time,
resource_ids, operator, operate_time, create_time, update_time)
+ values
+ <foreach collection="taskDefinitionLogs" item="taskDefinitionLog"
separator=",">
+
(#{taskDefinitionLog.code},#{taskDefinitionLog.name},#{taskDefinitionLog.version},#{taskDefinitionLog.description},
+
#{taskDefinitionLog.projectCode},#{taskDefinitionLog.userId},#{taskDefinitionLog.taskType},#{taskDefinitionLog.taskParams},
+
#{taskDefinitionLog.flag},#{taskDefinitionLog.taskPriority},#{taskDefinitionLog.workerGroup},#{taskDefinitionLog.failRetryTimes},
+
#{taskDefinitionLog.failRetryInterval},#{taskDefinitionLog.timeoutFlag},#{taskDefinitionLog.timeoutNotifyStrategy},#{taskDefinitionLog.timeout},
+
#{taskDefinitionLog.delayTime},#{taskDefinitionLog.resourceIds},#{taskDefinitionLog.operator},#{taskDefinitionLog.operateTime},
+ #{taskDefinitionLog.createTime},#{taskDefinitionLog.updateTime})
+ </foreach>
+ </insert>
</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 89801ef..cc8e180 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
@@ -91,4 +91,17 @@
delete from t_ds_task_definition
where code = #{code}
</delete>
+ <insert id="batchInsert">
+ insert into t_ds_task_definition (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, delay_time,
resource_ids, create_time, update_time)
+ values
+ <foreach collection="taskDefinitions" item="taskDefinition"
separator=",">
+
(#{taskDefinition.code},#{taskDefinition.name},#{taskDefinition.version},#{taskDefinition.description},
+
#{taskDefinition.projectCode},#{taskDefinition.userId},#{taskDefinition.taskType},#{taskDefinition.taskParams},
+
#{taskDefinition.flag},#{taskDefinition.taskPriority},#{taskDefinition.workerGroup},#{taskDefinition.failRetryTimes},
+
#{taskDefinition.failRetryInterval},#{taskDefinition.timeoutFlag},#{taskDefinition.timeoutNotifyStrategy},#{taskDefinition.timeout},
+
#{taskDefinition.delayTime},#{taskDefinition.resourceIds},#{taskDefinition.createTime},#{taskDefinition.updateTime})
+ </foreach>
+ </insert>
</mapper>