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 13cdc117f31b358cd58c49c7aaed4935a7bade38..2312c99f0ed4dd44ebcb51d96ff03c62610d4482 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 @@ -403,10 +403,6 @@ public class ProcessDefinitionService extends BaseDAGService { } } - // get the processdefinitionjson before saving,and then save the name and taskid - String oldJson = processDefine.getProcessDefinitionJson(); - processDefinitionJson = processService.changeJson(processData,oldJson); - Date now = new Date(); processDefine.setId(id); 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 f6ec3f957b4fcc57781dc3b135ef378fe42e1958..b5b5c6675db5ac02da18c4ce6bf2c86474a56937 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 @@ -359,15 +359,16 @@ public class ProcessInstanceService extends BaseDAGService { processInstance.getName(), processInstance.getState().toString(), "update"); return result; } - Date schedule ; - schedule = processInstance.getScheduleTime(); + Date schedule = null; if (scheduleTime != null) { schedule = DateUtils.getScheduleDate(scheduleTime); + } else { + schedule = processInstance.getScheduleTime(); } processInstance.setScheduleTime(schedule); processInstance.setLocations(locations); processInstance.setConnects(connects); - String globalParams; + String globalParams = null; String originDefParams = null; int timeout = processInstance.getTimeout(); ProcessDefinition processDefinition = processService.findProcessDefineById(processInstance.getProcessDefinitionId()); @@ -391,18 +392,13 @@ public class ProcessInstanceService extends BaseDAGService { if(tenant != null){ processInstance.setTenantCode(tenant.getTenantCode()); } - // get the processinstancejson before saving,and then save the name and taskid - String oldJson = processInstance.getProcessInstanceJson(); - if (StringUtils.isNotEmpty(oldJson)) { - processInstanceJson = processService.changeJson(processData,oldJson); - } processInstance.setProcessInstanceJson(processInstanceJson); processInstance.setGlobalParams(globalParams); } int update = processService.updateProcessInstance(processInstance); int updateDefine = 1; - if (Boolean.TRUE.equals(syncDefine)) { + if (Boolean.TRUE.equals(syncDefine) && StringUtils.isNotEmpty(processInstanceJson)) { processDefinition.setProcessDefinitionJson(processInstanceJson); processDefinition.setGlobalParams(originDefParams); processDefinition.setLocations(locations); diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/task/conditions/ConditionsParameters.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/task/conditions/ConditionsParameters.java index 43ba825c48edc3fcd76706742d67d09a2d6a90f8..7f0f2c807907cc9971d75efc6af81d72a21f4af9 100644 --- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/task/conditions/ConditionsParameters.java +++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/task/conditions/ConditionsParameters.java @@ -36,13 +36,6 @@ public class ConditionsParameters extends AbstractParameters { private List failedNode; - public String getConditionResult() { - return "{" - + "\"successNode\": [\"" + successNode.get(0) - + "\"],\"failedNode\": [\"" + failedNode.get(0) - + "\"]}"; - } - @Override public boolean checkParameters() { return true; 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 484985a529e39cbd3c15492a25446525bd916abf..f1a554fcda9b2f1adec5a86c0d21671727f2a298 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 @@ -25,7 +25,6 @@ import org.apache.dolphinscheduler.common.enums.*; import org.apache.dolphinscheduler.common.model.DateInterval; import org.apache.dolphinscheduler.common.model.TaskNode; import org.apache.dolphinscheduler.common.process.Property; -import org.apache.dolphinscheduler.common.task.conditions.ConditionsParameters; import org.apache.dolphinscheduler.common.task.subprocess.SubProcessParameters; import org.apache.dolphinscheduler.common.utils.*; import org.apache.dolphinscheduler.dao.entity.*; @@ -1907,60 +1906,4 @@ public class ProcessService { taskInstance.getId()); } - /** - * solve the branch rename bug - * - * @param processData - * @param oldJson - * @return String - */ - public String changeJson(ProcessData processData, String oldJson) { - ProcessData oldProcessData = JSONUtils.parseObject(oldJson, ProcessData.class); - HashMap oldNameTaskId = new HashMap<>(); - List oldTasks = oldProcessData.getTasks(); - for (int i = 0; i < oldTasks.size(); i++) { - TaskNode taskNode = oldTasks.get(i); - String oldName = taskNode.getName(); - String oldId = taskNode.getId(); - oldNameTaskId.put(oldName, oldId); - } - - // take the processdefinitionjson saved this time, and then save the taskid and name - HashMap newNameTaskId = new HashMap<>(); - List newTasks = processData.getTasks(); - for (int i = 0; i < newTasks.size(); i++) { - TaskNode taskNode = newTasks.get(i); - String newId = taskNode.getId(); - String newName = taskNode.getName(); - newNameTaskId.put(newId, newName); - } - - // replace the previous conditionresult with a new one - List tasks = processData.getTasks(); - for (int i = 0; i < tasks.size(); i++) { - TaskNode taskNode = newTasks.get(i); - String type = taskNode.getType(); - if (TaskType.CONDITIONS.getDescp().equalsIgnoreCase(type)) { - ConditionsParameters conditionsParameters = JSONUtils.parseObject(taskNode.getConditionResult(), ConditionsParameters.class); - String oldSuccessNodeName = conditionsParameters.getSuccessNode().get(0); - String oldFailedNodeName = conditionsParameters.getFailedNode().get(0); - String newSuccessNodeName = newNameTaskId.get(oldNameTaskId.get(oldSuccessNodeName)); - String newFailedNodeName = newNameTaskId.get(oldNameTaskId.get(oldFailedNodeName)); - if (newSuccessNodeName != null) { - ArrayList successNode = new ArrayList<>(); - successNode.add(newSuccessNodeName); - conditionsParameters.setSuccessNode(successNode); - } - if (newFailedNodeName != null) { - ArrayList failedNode = new ArrayList<>(); - failedNode.add(newFailedNodeName); - conditionsParameters.setFailedNode(failedNode); - } - String conditionResultStr = conditionsParameters.getConditionResult(); - taskNode.setConditionResult(conditionResultStr); - tasks.set(i, taskNode); - } - } - return JSONUtils.toJsonString(processData); - } } diff --git a/dolphinscheduler-service/src/test/java/org/apache/dolphinscheduler/service/process/ProcessServiceTest.java b/dolphinscheduler-service/src/test/java/org/apache/dolphinscheduler/service/process/ProcessServiceTest.java index cd3ca199ba7aff9c16a6c9c187840d9be6b21c8f..6ca96d91bba37fcb6ffe906a628684f4511c4318 100644 --- a/dolphinscheduler-service/src/test/java/org/apache/dolphinscheduler/service/process/ProcessServiceTest.java +++ b/dolphinscheduler-service/src/test/java/org/apache/dolphinscheduler/service/process/ProcessServiceTest.java @@ -19,17 +19,12 @@ package org.apache.dolphinscheduler.service.process; import org.apache.dolphinscheduler.common.Constants; import org.apache.dolphinscheduler.common.enums.CommandType; import org.apache.dolphinscheduler.common.enums.WarningType; -import org.apache.dolphinscheduler.common.model.TaskNode; -import org.apache.dolphinscheduler.common.task.conditions.ConditionsParameters; import org.apache.dolphinscheduler.common.utils.JSONUtils; import org.apache.dolphinscheduler.dao.entity.Command; -import org.apache.dolphinscheduler.dao.entity.ProcessData; import org.apache.dolphinscheduler.dao.entity.ProcessInstance; import org.apache.dolphinscheduler.dao.entity.ProcessInstanceMap; import org.apache.dolphinscheduler.dao.entity.TaskInstance; -import java.util.ArrayList; - import org.junit.Assert; import org.junit.Test; @@ -107,110 +102,6 @@ public class ProcessServiceTest { ); Assert.assertEquals(CommandType.START_FAILURE_TASK_PROCESS, command.getCommandType()); - } - - - @Test - public void testChangeJson() { - - ProcessData oldProcessData = new ProcessData(); - ConditionsParameters conditionsParameters = new ConditionsParameters(); - ArrayList tasks = new ArrayList<>(); - TaskNode taskNode = new TaskNode(); - TaskNode taskNode11 = new TaskNode(); - TaskNode taskNode111 = new TaskNode(); - ArrayList successNode = new ArrayList<>(); - ArrayList faildNode = new ArrayList<>(); - - taskNode.setName("bbb"); - taskNode.setType("SHELL"); - taskNode.setId("222"); - - taskNode11.setName("vvv"); - taskNode11.setType("CONDITIONS"); - taskNode11.setId("444"); - successNode.add("bbb"); - faildNode.add("ccc"); - - taskNode111.setName("ccc"); - taskNode111.setType("SHELL"); - taskNode111.setId("333"); - - conditionsParameters.setSuccessNode(successNode); - conditionsParameters.setFailedNode(faildNode); - taskNode11.setConditionResult(conditionsParameters.getConditionResult()); - tasks.add(taskNode); - tasks.add(taskNode11); - tasks.add(taskNode111); - oldProcessData.setTasks(tasks); - - ProcessData newProcessData = new ProcessData(); - ConditionsParameters conditionsParameters2 = new ConditionsParameters(); - TaskNode taskNode2 = new TaskNode(); - TaskNode taskNode22 = new TaskNode(); - TaskNode taskNode222 = new TaskNode(); - ArrayList tasks2 = new ArrayList<>(); - ArrayList successNode2 = new ArrayList<>(); - ArrayList faildNode2 = new ArrayList<>(); - - taskNode2.setName("bbbchange"); - taskNode2.setType("SHELL"); - taskNode2.setId("222"); - - taskNode22.setName("vv"); - taskNode22.setType("CONDITIONS"); - taskNode22.setId("444"); - successNode2.add("bbb"); - faildNode2.add("ccc"); - - taskNode222.setName("ccc"); - taskNode222.setType("SHELL"); - taskNode222.setId("333"); - - conditionsParameters2.setSuccessNode(successNode2); - conditionsParameters2.setFailedNode(faildNode2); - taskNode22.setConditionResult(conditionsParameters2.getConditionResult()); - tasks2.add(taskNode2); - tasks2.add(taskNode22); - tasks2.add(taskNode222); - - newProcessData.setTasks(tasks2); - - ProcessData exceptProcessData = new ProcessData(); - ConditionsParameters conditionsParameters3 = new ConditionsParameters(); - TaskNode taskNode3 = new TaskNode(); - TaskNode taskNode33 = new TaskNode(); - TaskNode taskNode333 = new TaskNode(); - ArrayList tasks3 = new ArrayList<>(); - ArrayList successNode3 = new ArrayList<>(); - ArrayList faildNode3 = new ArrayList<>(); - - taskNode3.setName("bbbchange"); - taskNode3.setType("SHELL"); - taskNode3.setId("222"); - - taskNode33.setName("vv"); - taskNode33.setType("CONDITIONS"); - taskNode33.setId("444"); - successNode3.add("bbbchange"); - faildNode3.add("ccc"); - - taskNode333.setName("ccc"); - taskNode333.setType("SHELL"); - taskNode333.setId("333"); - - conditionsParameters3.setSuccessNode(successNode3); - conditionsParameters3.setFailedNode(faildNode3); - taskNode33.setConditionResult(conditionsParameters3.getConditionResult()); - tasks3.add(taskNode3); - tasks3.add(taskNode33); - tasks3.add(taskNode333); - exceptProcessData.setTasks(tasks3); - - String expect = JSONUtils.toJsonString(exceptProcessData); - String oldJson = JSONUtils.toJsonString(oldProcessData); - - Assert.assertEquals(expect, new ProcessService().changeJson(newProcessData,oldJson)); } }