zhongjiajie commented on code in PR #13094:
URL: 
https://github.com/apache/dolphinscheduler/pull/13094#discussion_r1046781398


##########
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/dto/task/TaskCreateRequest.java:
##########
@@ -97,7 +97,7 @@ public class TaskCreateRequest {
     private Integer memoryMax;
 
     @Schema(example = "upstream-task-codes1,upstream-task-codes2", description 
= "use , to split multiple upstream task codes")
-    private String upstreamTasksCodes;
+    private String upstreamTasksCodes = "0";

Review Comment:
   @insist777  we should still use constants for this value



##########
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessDefinitionServiceImpl.java:
##########
@@ -2775,12 +2776,105 @@ public ProcessDefinition 
updateSingleProcessDefinition(User loginUser,
             }
             processDefinitionUpdate.setTenantId(tenant.getId());
         }
-        int update = 
processDefinitionMapper.updateById(processDefinitionUpdate);
-        if (update <= 0) {
+        int insertVersion = this.saveProcessDefine(loginUser, 
processDefinitionUpdate);
+        if (insertVersion == 0) {
+            logger.error("Update process definition error, projectCode:{}, 
processDefinitionName:{}.",
+                    processDefinitionUpdate.getCode(),
+                    processDefinitionUpdate.getName());
             throw new ServiceException(Status.UPDATE_PROCESS_DEFINITION_ERROR);
         }
-        this.syncObj2Log(loginUser, processDefinition);
-        return processDefinition;
+
+        int insertRelationVersion = this.saveTaskRelation(loginUser, 
processDefinitionUpdate, insertVersion);
+        if (insertRelationVersion != Constants.EXIT_CODE_SUCCESS) {
+            logger.error("Save process task relations error, projectCode:{}, 
processCode:{}, processVersion:{}.",
+                    processDefinition.getProjectCode(), 
processDefinition.getCode(), insertVersion);
+            throw new 
ServiceException(Status.CREATE_PROCESS_TASK_RELATION_ERROR);
+        }
+        logger.info("Save process task relations complete, projectCode:{}, 
processCode:{}, processVersion:{}.",
+                processDefinition.getProjectCode(), 
processDefinition.getCode(), insertVersion);
+        processDefinitionUpdate.setVersion(insertVersion);
+        return processDefinitionUpdate;
+    }
+    public int saveProcessDefine(User loginUser, ProcessDefinition 
processDefinition) {

Review Comment:
   should add new blank line
   ```suggestion
   
       public int saveProcessDefine(User loginUser, ProcessDefinition 
processDefinition) {
   ```



##########
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessDefinitionServiceImpl.java:
##########
@@ -2775,12 +2776,104 @@ public ProcessDefinition 
updateSingleProcessDefinition(User loginUser,
             }
             processDefinitionUpdate.setTenantId(tenant.getId());
         }
-        int update = 
processDefinitionMapper.updateById(processDefinitionUpdate);
-        if (update <= 0) {
+        int insertVersion = this.saveProcessDefine(loginUser, 
processDefinitionUpdate);
+        if (insertVersion == 0) {
+            logger.error("Update process definition error, projectCode:{}, 
processDefinitionName:{}.",
+                    processDefinitionUpdate.getCode(),
+                    processDefinitionUpdate.getName());
             throw new ServiceException(Status.UPDATE_PROCESS_DEFINITION_ERROR);
         }
-        this.syncObj2Log(loginUser, processDefinition);
-        return processDefinition;
+
+        int insertRelationVersion = this.saveTaskRelation(loginUser, 
processDefinitionUpdate, insertVersion);
+        if (insertRelationVersion != Constants.EXIT_CODE_SUCCESS) {
+            logger.error("Save process task relations error, projectCode:{}, 
processCode:{}, processVersion:{}.",
+                    processDefinition.getProjectCode(), 
processDefinition.getCode(), insertVersion);
+            throw new 
ServiceException(Status.CREATE_PROCESS_TASK_RELATION_ERROR);
+        } else {
+            logger.info("Save process task relations complete, projectCode:{}, 
processCode:{}, processVersion:{}.",
+                    processDefinition.getProjectCode(), 
processDefinition.getCode(), insertVersion);
+        }
+        processDefinitionUpdate.setVersion(insertVersion);
+        return processDefinitionUpdate;
+    }
+    public int saveProcessDefine(User loginUser, ProcessDefinition 
processDefinition) {
+        ProcessDefinitionLog processDefinitionLog = new 
ProcessDefinitionLog(processDefinition);
+        Integer version = 
processDefinitionLogMapper.queryMaxVersionForDefinition(processDefinition.getCode());
+        int insertVersion = version == null || version == 0 ? 
Constants.VERSION_FIRST : version + 1;
+        processDefinitionLog.setVersion(insertVersion);
+
+        processDefinitionLog.setOperator(loginUser.getId());
+        processDefinitionLog.setOperateTime(processDefinition.getUpdateTime());
+        processDefinitionLog.setId(null);
+        int insertLog = 
processDefinitionLogMapper.insert(processDefinitionLog);
+        processDefinitionLog.setId(processDefinition.getId());
+        int result = processDefinitionMapper.updateById(processDefinitionLog);

Review Comment:
   > Yeah, It seems you directly copy-paste the code from the process service 
to here, but is it better to refactor them and make them more sense, when we 
want to operator `processDefinitionMapper ` show use `ProcessDefinition` object 
instead of `ProcessDefinitionLog`
   
   Can we change according this suggestion



##########
dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/TaskDefinitionServiceImplTest.java:
##########
@@ -467,10 +486,53 @@ public void testUpdateTaskDefinitionV2() {
         // success
         
Mockito.when(taskDefinitionLogMapper.insert(isA(TaskDefinitionLog.class))).thenReturn(1);
         // we do not test updateUpstreamTaskDefinition, because it should be 
tested in processTaskRelationService
-        
Mockito.when(processTaskRelationService.updateUpstreamTaskDefinition(isA(User.class),
 isA(Long.class),
-                
isA(TaskRelationUpdateUpstreamRequest.class))).thenReturn(getProcessTaskRelationList());
+        Mockito.when(
+                
processTaskRelationService.updateUpstreamTaskDefinitionWithSyncDag(isA(User.class),
 isA(Long.class),
+                        isA(Boolean.class),
+                        isA(TaskRelationUpdateUpstreamRequest.class)))
+                .thenReturn(getProcessTaskRelationList());
         Assertions.assertDoesNotThrow(
                 () -> taskDefinitionService.updateTaskDefinitionV2(user, 
TASK_CODE, taskUpdateRequest));
+
+        TaskDefinition taskDefinition =
+                taskDefinitionService.updateTaskDefinitionV2(user, TASK_CODE, 
taskUpdateRequest);
+        Assertions.assertEquals(getTaskDefinition().getVersion() + 1, 
taskDefinition.getVersion());
+    }
+
+    @Test
+    public void testUpdateDag() {

Review Comment:
   well I remember we tell about testing other functions too during the 
meeting, did we?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to