This is an automated email from the ASF dual-hosted git repository.
leonbao 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 2f0a277 [Feature][JsonSplit-api] update method of ProcessDefinition
(#6089)
2f0a277 is described below
commit 2f0a27720633f5b9fc21353bae4b66a40ff9c535
Author: JinyLeeChina <[email protected]>
AuthorDate: Thu Sep 2 15:55:50 2021 +0800
[Feature][JsonSplit-api] update method of ProcessDefinition (#6089)
* refactor method of task save
* fix ut
* fix ut
* update method of processDefinition
* fix ut
Co-authored-by: JinyLeeChina <[email protected]>
---
.../api/controller/ExecutorController.java | 2 +-
.../service/impl/ProcessDefinitionServiceImpl.java | 79 +++++++++++++---------
.../service/impl/ProcessInstanceServiceImpl.java | 14 ++--
.../api/service/ProcessDefinitionServiceTest.java | 9 ++-
.../apache/dolphinscheduler/common/Constants.java | 2 +-
.../common/enums/TaskTimeoutStrategy.java | 13 ++--
.../dao/entity/ProcessDefinition.java | 44 +++++++++++-
.../dao/entity/ProcessDefinitionLog.java | 4 ++
.../dao/entity/ProcessTaskRelation.java | 25 +++++++
.../dao/entity/ProcessTaskRelationLog.java | 10 +++
.../service/process/ProcessService.java | 20 ++++--
11 files changed, 164 insertions(+), 58 deletions(-)
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ExecutorController.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ExecutorController.java
index 762c525..0a0b533 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ExecutorController.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ExecutorController.java
@@ -175,7 +175,7 @@ public class ExecutorController extends BaseController {
@ResponseStatus(HttpStatus.OK)
@ApiException(CHECK_PROCESS_DEFINITION_ERROR)
@AccessLogAnnotation(ignoreRequestArgs = "loginUser")
- public Result startCheckProcessDefinition(@RequestParam(value =
"processDefinitionCode") int processDefinitionCode) {
+ public Result startCheckProcessDefinition(@RequestParam(value =
"processDefinitionCode") long processDefinitionCode) {
Map<String, Object> result =
execService.startCheckByProcessDefinedCode(processDefinitionCode);
return returnDataList(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 1750098..7c57e66 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
@@ -142,6 +142,18 @@ public class ProcessDefinitionServiceImpl extends
BaseServiceImpl implements Pro
@Autowired
private ProcessTaskRelationMapper processTaskRelationMapper;
+ @Autowired
+ TaskDefinitionLogMapper taskDefinitionLogMapper;
+
+ @Autowired
+ private TaskDefinitionMapper taskDefinitionMapper;
+
+ @Autowired
+ private SchedulerService schedulerService;
+
+ @Autowired
+ private TenantMapper tenantMapper;
+
/**
* create process definition
*
@@ -193,10 +205,14 @@ public class ProcessDefinitionServiceImpl extends
BaseServiceImpl implements Pro
return checkRelationJson;
}
- Tenant tenant = tenantMapper.queryByTenantCode(tenantCode);
- if (tenant == null) {
- putMsg(result, Status.TENANT_NOT_EXIST);
- return result;
+ int tenantId = -1;
+ if (!Constants.DEFAULT.equals(tenantCode)) {
+ Tenant tenant = tenantMapper.queryByTenantCode(tenantCode);
+ if (tenant == null) {
+ putMsg(result, Status.TENANT_NOT_EXIST);
+ return result;
+ }
+ tenantId = tenant.getId();
}
long processDefinitionCode;
@@ -207,23 +223,11 @@ public class ProcessDefinitionServiceImpl extends
BaseServiceImpl implements Pro
return result;
}
ProcessDefinition processDefinition = new
ProcessDefinition(projectCode, name, processDefinitionCode, description,
- globalParams, locations, timeout, loginUser.getId(),
tenant.getId());
+ globalParams, locations, timeout, loginUser.getId(), tenantId);
return createProcessDefine(loginUser, result, taskRelationList,
processDefinition, taskDefinitionLogs);
}
- @Autowired
- TaskDefinitionLogMapper taskDefinitionLogMapper;
-
- @Autowired
- private TaskDefinitionMapper taskDefinitionMapper;
-
- @Autowired
- private SchedulerService schedulerService;
-
- @Autowired
- private TenantMapper tenantMapper;
-
private void createTaskDefinition(Map<String, Object> result,
User loginUser,
long projectCode,
@@ -240,12 +244,6 @@ public class ProcessDefinitionServiceImpl extends
BaseServiceImpl implements Pro
putMsg(result, Status.PROCESS_NODE_S_PARAMETER_INVALID,
taskDefinitionLog.getName());
return;
}
- TaskDefinition taskDefinition =
taskDefinitionMapper.queryByName(projectCode, taskDefinitionLog.getName());
- if (taskDefinition != null) {
- logger.error("task definition name {} already exists",
taskDefinitionLog.getName());
- putMsg(result, Status.TASK_DEFINITION_NAME_EXISTED,
taskDefinitionLog.getName());
- return;
- }
}
if (processService.saveTaskDefine(loginUser, projectCode,
taskDefinitionLogs)) {
putMsg(result, Status.SUCCESS);
@@ -401,6 +399,10 @@ public class ProcessDefinitionServiceImpl extends
BaseServiceImpl implements Pro
if (processDefinition == null) {
putMsg(result, Status.PROCESS_DEFINE_NOT_EXIST, code);
} else {
+ Tenant tenant =
tenantMapper.queryById(processDefinition.getTenantId());
+ if (tenant != null) {
+ processDefinition.setTenantCode(tenant.getTenantCode());
+ }
DagData dagData = processService.genDagData(processDefinition);
result.put(Constants.DATA_LIST, dagData);
putMsg(result, Status.SUCCESS);
@@ -475,10 +477,14 @@ public class ProcessDefinitionServiceImpl extends
BaseServiceImpl implements Pro
return checkRelationJson;
}
- Tenant tenant = tenantMapper.queryByTenantCode(tenantCode);
- if (tenant == null) {
- putMsg(result, Status.TENANT_NOT_EXIST);
- return result;
+ int tenantId = -1;
+ if (!Constants.DEFAULT.equals(tenantCode)) {
+ Tenant tenant = tenantMapper.queryByTenantCode(tenantCode);
+ if (tenant == null) {
+ putMsg(result, Status.TENANT_NOT_EXIST);
+ return result;
+ }
+ tenantId = tenant.getId();
}
ProcessDefinition processDefinition =
processDefinitionMapper.queryByCode(code);
@@ -500,21 +506,28 @@ public class ProcessDefinitionServiceImpl extends
BaseServiceImpl implements Pro
return result;
}
}
- processDefinition.set(projectCode, name, description, globalParams,
locations, timeout, tenant.getId());
- return updateProcessDefine(loginUser, result, taskRelationList,
processDefinition, taskDefinitionLogs);
+ ProcessDefinition processDefinitionDeepCopy =
JSONUtils.parseObject(JSONUtils.toJsonString(processDefinition),
ProcessDefinition.class);
+ processDefinition.set(projectCode, name, description, globalParams,
locations, timeout, tenantId);
+ return updateProcessDefine(loginUser, result, taskRelationList,
processDefinition, processDefinitionDeepCopy, taskDefinitionLogs);
}
private Map<String, Object> updateProcessDefine(User loginUser,
Map<String, Object> result,
List<ProcessTaskRelationLog> taskRelationList,
ProcessDefinition
processDefinition,
+ ProcessDefinition
processDefinitionDeepCopy,
List<TaskDefinitionLog>
taskDefinitionLogs) {
- processDefinition.setUpdateTime(new Date());
- int insertVersion = processService.saveProcessDefine(loginUser,
processDefinition, true);
+ int insertVersion;
+ if (processDefinition.equals(processDefinitionDeepCopy)) {
+ insertVersion = processDefinitionDeepCopy.getVersion();
+ } else {
+ processDefinition.setUpdateTime(new Date());
+ insertVersion = processService.saveProcessDefine(loginUser,
processDefinition, true);
+ }
if (insertVersion > 0) {
int insertResult = processService.saveTaskRelation(loginUser,
processDefinition.getProjectCode(),
processDefinition.getCode(), insertVersion, taskRelationList,
taskDefinitionLogs);
- if (insertResult > 0) {
+ if (insertResult == Constants.EXIT_CODE_SUCCESS) {
putMsg(result, Status.SUCCESS);
result.put(Constants.DATA_LIST, processDefinition);
} else {
@@ -1286,7 +1299,7 @@ public class ProcessDefinitionServiceImpl extends
BaseServiceImpl implements Pro
processDefinition.setName(processDefinition.getName() +
"_copy_" + DateUtils.getCurrentTimeStamp());
createProcessDefine(loginUser, result, taskRelationList,
processDefinition, Lists.newArrayList());
} else {
- updateProcessDefine(loginUser, result, taskRelationList,
processDefinition, Lists.newArrayList());
+ updateProcessDefine(loginUser, result, taskRelationList,
processDefinition, null, Lists.newArrayList());
}
if (result.get(Constants.STATUS) != Status.SUCCESS) {
failedProcessList.add(processDefinition.getCode() + "[" +
processDefinition.getName() + "]");
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 9007e00..6c23e39 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
@@ -459,13 +459,17 @@ public class ProcessInstanceServiceImpl extends
BaseServiceImpl implements Proce
if (result.get(Constants.STATUS) != Status.SUCCESS) {
return result;
}
- Tenant tenant = tenantMapper.queryByTenantCode(tenantCode);
- if (tenant == null) {
- putMsg(result, Status.TENANT_NOT_EXIST);
- return result;
+ int tenantId = -1;
+ if (!Constants.DEFAULT.equals(tenantCode)) {
+ Tenant tenant = tenantMapper.queryByTenantCode(tenantCode);
+ if (tenant == null) {
+ putMsg(result, Status.TENANT_NOT_EXIST);
+ return result;
+ }
+ tenantId = tenant.getId();
}
- processDefinition.set(projectCode, processDefinition.getName(),
processDefinition.getDescription(), globalParams, locations, timeout,
tenant.getId());
+ processDefinition.set(projectCode, processDefinition.getName(),
processDefinition.getDescription(), globalParams, locations, timeout, tenantId);
processDefinition.setUpdateTime(new Date());
int insertVersion = processService.saveProcessDefine(loginUser,
processDefinition, false);
if (insertVersion > 0) {
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 f727b91..9abf6c4 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
@@ -36,12 +36,14 @@ 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.Schedule;
+import org.apache.dolphinscheduler.dao.entity.Tenant;
import org.apache.dolphinscheduler.dao.entity.User;
import org.apache.dolphinscheduler.dao.mapper.ProcessDefinitionMapper;
import org.apache.dolphinscheduler.dao.mapper.ProcessTaskRelationMapper;
import org.apache.dolphinscheduler.dao.mapper.ProjectMapper;
import org.apache.dolphinscheduler.dao.mapper.ScheduleMapper;
import org.apache.dolphinscheduler.dao.mapper.TaskInstanceMapper;
+import org.apache.dolphinscheduler.dao.mapper.TenantMapper;
import org.apache.dolphinscheduler.service.process.ProcessService;
import java.text.MessageFormat;
@@ -96,6 +98,8 @@ public class ProcessDefinitionServiceTest {
private ProcessInstanceService processInstanceService;
@Mock
private TaskInstanceMapper taskInstanceMapper;
+ @Mock
+ private TenantMapper tenantMapper;
@Test
public void testQueryProcessDefinitionList() {
@@ -173,7 +177,9 @@ public class ProcessDefinitionServiceTest {
User loginUser = new User();
loginUser.setId(-1);
loginUser.setUserType(UserType.GENERAL_USER);
-
+ Tenant tenant = new Tenant();
+ tenant.setId(1);
+ tenant.setTenantCode("root");
Map<String, Object> result = new HashMap<>();
putMsg(result, Status.PROJECT_NOT_FOUNT, projectCode);
@@ -195,6 +201,7 @@ public class ProcessDefinitionServiceTest {
Mockito.when(processDefineMapper.queryByCode(46L)).thenReturn(getProcessDefinition());
putMsg(result, Status.SUCCESS, projectCode);
Mockito.when(projectService.checkProjectAndAuth(loginUser, project,
projectCode)).thenReturn(result);
+ Mockito.when(tenantMapper.queryById(1)).thenReturn(tenant);
Map<String, Object> successRes =
processDefinitionService.queryProcessDefinitionByCode(loginUser, projectCode,
46L);
Assert.assertEquals(Status.SUCCESS, successRes.get(Constants.STATUS));
}
diff --git
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/Constants.java
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/Constants.java
index 592fa6c..e0e39ae 100644
---
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/Constants.java
+++
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/Constants.java
@@ -435,7 +435,7 @@ public final class Constants {
*/
public static final String DATASOURCE_PROPERTIES =
"/datasource.properties";
- public static final String DEFAULT = "Default";
+ public static final String DEFAULT = "default";
public static final String USER = "user";
public static final String PASSWORD = "password";
public static final String XXXXXX = "******";
diff --git
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/enums/TaskTimeoutStrategy.java
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/enums/TaskTimeoutStrategy.java
index 335b986..a203fd4 100644
---
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/enums/TaskTimeoutStrategy.java
+++
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/enums/TaskTimeoutStrategy.java
@@ -28,11 +28,10 @@ public enum TaskTimeoutStrategy {
* 2 warn+failed
*/
WARN(0, "warn"),
- FAILED(1,"failed"),
- WARNFAILED(2,"warnfailed");
+ FAILED(1, "failed"),
+ WARNFAILED(2, "warnfailed");
-
- TaskTimeoutStrategy(int code, String descp){
+ TaskTimeoutStrategy(int code, String descp) {
this.code = code;
this.descp = descp;
}
@@ -49,9 +48,9 @@ public enum TaskTimeoutStrategy {
return descp;
}
- public static TaskTimeoutStrategy of(int status){
- for(TaskTimeoutStrategy es : values()){
- if(es.getCode() == status){
+ public static TaskTimeoutStrategy of(int status) {
+ for (TaskTimeoutStrategy es : values()) {
+ if (es.getCode() == status) {
return es;
}
}
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessDefinition.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessDefinition.java
index 321666b..8e50ce8 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessDefinition.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessDefinition.java
@@ -26,6 +26,7 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.annotation.IdType;
@@ -150,6 +151,12 @@ public class ProcessDefinition {
private int tenantId;
/**
+ * tenant code
+ */
+ @TableField(exist = false)
+ private String tenantCode;
+
+ /**
* modify user name
*/
@TableField(exist = false)
@@ -167,7 +174,8 @@ public class ProcessDefinition {
@TableField(exist = false)
private int warningGroupId;
- public ProcessDefinition() {}
+ public ProcessDefinition() {
+ }
public ProcessDefinition(long projectCode,
String name,
@@ -356,6 +364,14 @@ public class ProcessDefinition {
this.tenantId = tenantId;
}
+ public String getTenantCode() {
+ return tenantCode;
+ }
+
+ public void setTenantCode(String tenantCode) {
+ this.tenantCode = tenantCode;
+ }
+
public String getDescription() {
return description;
}
@@ -397,11 +413,32 @@ public class ProcessDefinition {
}
@Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ ProcessDefinition that = (ProcessDefinition) o;
+ return projectCode == that.projectCode
+ && userId == that.userId
+ && timeout == that.timeout
+ && tenantId == that.tenantId
+ && Objects.equals(name, that.name)
+ && releaseState == that.releaseState
+ && Objects.equals(description, that.description)
+ && Objects.equals(globalParams, that.globalParams)
+ && flag == that.flag
+ && Objects.equals(locations, that.locations);
+ }
+
+ @Override
public String toString() {
return "ProcessDefinition{"
+ "id=" + id
- + ", name='" + name + '\''
+ ", code=" + code
+ + ", name='" + name + '\''
+ ", version=" + version
+ ", releaseState=" + releaseState
+ ", projectCode=" + projectCode
@@ -418,10 +455,11 @@ public class ProcessDefinition {
+ ", locations='" + locations + '\''
+ ", scheduleReleaseState=" + scheduleReleaseState
+ ", timeout=" + timeout
- + ", warningGroupId=" + warningGroupId
+ ", tenantId=" + tenantId
+ + ", tenantCode='" + tenantCode + '\''
+ ", modifyBy='" + modifyBy + '\''
+ ", resourceIds='" + resourceIds + '\''
+ + ", warningGroupId=" + warningGroupId
+ '}';
}
}
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessDefinitionLog.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessDefinitionLog.java
index aa01c45..30840e8 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessDefinitionLog.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessDefinitionLog.java
@@ -85,4 +85,8 @@ public class ProcessDefinitionLog extends ProcessDefinition {
this.operateTime = operateTime;
}
+ @Override
+ public boolean equals(Object o) {
+ return super.equals(o);
+ }
}
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessTaskRelation.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessTaskRelation.java
index 27162d0..06f7cd0 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessTaskRelation.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessTaskRelation.java
@@ -21,6 +21,7 @@ import org.apache.dolphinscheduler.common.enums.ConditionType;
import org.apache.dolphinscheduler.common.utils.JSONUtils;
import java.util.Date;
+import java.util.Objects;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
@@ -239,6 +240,30 @@ public class ProcessTaskRelation {
}
@Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ ProcessTaskRelation that = (ProcessTaskRelation) o;
+ return processDefinitionVersion == that.processDefinitionVersion
+ && projectCode == that.projectCode
+ && processDefinitionCode == that.processDefinitionCode
+ && preTaskCode == that.preTaskCode
+ && preTaskVersion == that.preTaskVersion
+ && postTaskCode == that.postTaskCode
+ && postTaskVersion == that.postTaskVersion
+ && Objects.equals(name, that.name);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name, processDefinitionVersion, projectCode,
processDefinitionCode, preTaskCode, preTaskVersion, postTaskCode,
postTaskVersion);
+ }
+
+ @Override
public String toString() {
return "ProcessTaskRelation{"
+ "id=" + id
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessTaskRelationLog.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessTaskRelationLog.java
index 34dc027..28e89e5 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessTaskRelationLog.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessTaskRelationLog.java
@@ -77,6 +77,16 @@ public class ProcessTaskRelationLog extends
ProcessTaskRelation {
}
@Override
+ public boolean equals(Object o) {
+ return super.equals(o);
+ }
+
+ @Override
+ public int hashCode() {
+ return super.hashCode();
+ }
+
+ @Override
public String toString() {
return super.toString();
}
diff --git
a/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/process/ProcessService.java
b/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/process/ProcessService.java
index 9f0f312..528eef1 100644
---
a/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/process/ProcessService.java
+++
b/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/process/ProcessService.java
@@ -2135,8 +2135,9 @@ public class ProcessService {
if (task == null) {
newTaskDefinitionLogs.add(taskDefinitionToUpdate);
} else {
- int update =
taskDefinitionMapper.updateById(taskDefinitionToUpdate);
int insert =
taskDefinitionLogMapper.insert(taskDefinitionToUpdate);
+ taskDefinitionToUpdate.setId(task.getId());
+ int update =
taskDefinitionMapper.updateById(taskDefinitionToUpdate);
if ((update & insert) != 1) {
return false;
}
@@ -2177,10 +2178,6 @@ public class ProcessService {
*/
public int saveTaskRelation(User operator, long projectCode, long
processDefinitionCode, int processDefinitionVersion,
List<ProcessTaskRelationLog> taskRelationList,
List<TaskDefinitionLog> taskDefinitionLogs) {
- List<ProcessTaskRelation> processTaskRelationList =
processTaskRelationMapper.queryByProcessCode(projectCode,
processDefinitionCode);
- if (!processTaskRelationList.isEmpty()) {
- processTaskRelationMapper.deleteByCode(projectCode,
processDefinitionCode);
- }
Map<Long, TaskDefinitionLog> taskDefinitionLogMap = null;
if (CollectionUtils.isNotEmpty(taskDefinitionLogs)) {
taskDefinitionLogMap = taskDefinitionLogs.stream()
@@ -2203,12 +2200,21 @@ public class ProcessService {
processTaskRelationLog.setOperator(operator.getId());
processTaskRelationLog.setOperateTime(now);
}
+ List<ProcessTaskRelation> processTaskRelationList =
processTaskRelationMapper.queryByProcessCode(projectCode,
processDefinitionCode);
+ if (!processTaskRelationList.isEmpty()) {
+ Set<Integer> processTaskRelationSet =
processTaskRelationList.stream().map(ProcessTaskRelation::hashCode).collect(toSet());
+ Set<Integer> taskRelationSet =
taskRelationList.stream().map(ProcessTaskRelationLog::hashCode).collect(toSet());
+ if (CollectionUtils.isEqualCollection(processTaskRelationSet,
taskRelationSet)) {
+ return Constants.EXIT_CODE_SUCCESS;
+ }
+ processTaskRelationMapper.deleteByCode(projectCode,
processDefinitionCode);
+ }
int result = processTaskRelationMapper.batchInsert(taskRelationList);
int resultLog =
processTaskRelationLogMapper.batchInsert(taskRelationList);
- return result & resultLog;
+ return (result & resultLog) > 0 ? Constants.EXIT_CODE_SUCCESS :
Constants.EXIT_CODE_FAILURE;
}
- public boolean isTaskOnline(Long taskCode) {
+ public boolean isTaskOnline(long taskCode) {
List<ProcessTaskRelation> processTaskRelationList =
processTaskRelationMapper.queryByTaskCode(taskCode);
if (!processTaskRelationList.isEmpty()) {
Set<Long> processDefinitionCodes = processTaskRelationList