|
116 | 116 | import org.apache.dolphinscheduler.plugin.task.api.model.DependentItem; |
117 | 117 | import org.apache.dolphinscheduler.plugin.task.api.model.DependentTaskModel; |
118 | 118 | import org.apache.dolphinscheduler.plugin.task.api.model.Property; |
119 | | -import org.apache.dolphinscheduler.plugin.task.api.model.SwitchResultVo; |
120 | 119 | import org.apache.dolphinscheduler.plugin.task.api.parameters.ConditionsParameters; |
121 | 120 | import org.apache.dolphinscheduler.plugin.task.api.parameters.DependentParameters; |
122 | 121 | import org.apache.dolphinscheduler.plugin.task.api.parameters.SqlParameters; |
@@ -2120,10 +2119,10 @@ protected void doBatchOperateWorkflowDefinition(User loginUser, |
2120 | 2119 | taskDefinitionLog.setVersion(0); |
2121 | 2120 | taskDefinitionLog.setName(taskDefinitionLog.getName()); |
2122 | 2121 | if (TaskTypeUtils.isSwitchTask(taskDefinitionLog.getTaskType())) { |
2123 | | - updateSwitchTaskParams(taskDefinitionLog, taskCodeMap); |
| 2122 | + replaceTaskCodeForSwitchTaskParams(taskDefinitionLog, taskCodeMap); |
2124 | 2123 | } |
2125 | 2124 | if (TaskTypeUtils.isConditionTask(taskDefinitionLog.getTaskType())) { |
2126 | | - updateConditionTaskParams(taskDefinitionLog, taskCodeMap); |
| 2125 | + replaceTaskCodeForConditionTaskParams(taskDefinitionLog, taskCodeMap); |
2127 | 2126 | } |
2128 | 2127 | } |
2129 | 2128 | for (WorkflowTaskRelationLog workflowTaskRelationLog : taskRelationList) { |
@@ -2198,118 +2197,109 @@ protected void doBatchOperateWorkflowDefinition(User loginUser, |
2198 | 2197 | } |
2199 | 2198 |
|
2200 | 2199 | /** |
2201 | | - * Updates task code references inside the task parameters of a SWITCH-type task. |
2202 | | - * Replaces {@code nextNode} in both the default branch and conditional branches |
2203 | | - * using the provided {@code taskCodeMap}. |
2204 | | - * <p> |
2205 | | - * If parsing fails, an error is recorded in {@code result} and the method returns {@code false}. |
| 2200 | + * replace task code references inside the task parameters of a Switch task. |
2206 | 2201 | * |
2207 | 2202 | * @param taskDefinitionLog the task log to update |
2208 | 2203 | * @param taskCodeMap mapping from old task code to new task code |
2209 | 2204 | * @throws IllegalArgumentException if taskParams is invalid or cannot be parsed |
2210 | 2205 | */ |
2211 | | - private void updateSwitchTaskParams(TaskDefinitionLog taskDefinitionLog, Map<Long, Long> taskCodeMap) { |
| 2206 | + private void replaceTaskCodeForSwitchTaskParams(TaskDefinitionLog taskDefinitionLog, Map<Long, Long> taskCodeMap) { |
2212 | 2207 | final String taskParams = taskDefinitionLog.getTaskParams(); |
2213 | | - final SwitchParameters switchParameters = JSONUtils.parseObject(taskParams, SwitchParameters.class); |
2214 | | - |
| 2208 | + final SwitchParameters switchParameters = |
| 2209 | + JSONUtils.parseObject(taskParams, SwitchParameters.class); |
2215 | 2210 | if (switchParameters == null) { |
2216 | | - log.warn("Failed to parse SWITCH task params: {}", taskParams); |
| 2211 | + log.warn("Failed to parse Switch task params: {}", taskParams); |
2217 | 2212 | throw new IllegalArgumentException( |
2218 | 2213 | "Switch task params: " + taskParams + " is invalid."); |
2219 | 2214 | } |
2220 | 2215 |
|
2221 | | - // Update top-level nextBranch if used |
| 2216 | + // SwitchParameters.nextBranch |
2222 | 2217 | if (switchParameters.getNextBranch() != null && taskCodeMap.containsKey(switchParameters.getNextBranch())) { |
2223 | 2218 | switchParameters.setNextBranch(taskCodeMap.get(switchParameters.getNextBranch())); |
2224 | 2219 | } |
2225 | 2220 |
|
2226 | | - // Update switchResult block |
| 2221 | + // SwitchParameters.SwitchResult |
2227 | 2222 | SwitchParameters.SwitchResult switchResult = switchParameters.getSwitchResult(); |
2228 | 2223 | if (switchResult != null) { |
2229 | | - // Default branch |
| 2224 | + // SwitchParameters.SwitchResult.nextNode |
2230 | 2225 | if (switchResult.getNextNode() != null && taskCodeMap.containsKey(switchResult.getNextNode())) { |
2231 | | - switchResult.setNextNode(taskCodeMap.get(switchResult.getNextNode())); |
| 2226 | + switchResult.setNextNode( |
| 2227 | + taskCodeMap.get(switchResult.getNextNode())); |
2232 | 2228 | } |
2233 | 2229 |
|
2234 | | - // Conditional branches |
2235 | | - if (CollectionUtils.isNotEmpty(switchResult.getDependTaskList())) { |
2236 | | - for (SwitchResultVo vo : switchResult.getDependTaskList()) { |
2237 | | - if (vo != null && vo.getNextNode() != null && taskCodeMap.containsKey(vo.getNextNode())) { |
2238 | | - vo.setNextNode(taskCodeMap.get(vo.getNextNode())); |
2239 | | - } |
2240 | | - } |
2241 | | - } |
| 2230 | + // SwitchParameters.SwitchResult.SwitchResultVo.nextNode |
| 2231 | + switchResult.getDependTaskList().forEach(switchResultVo -> { |
| 2232 | + switchResultVo.setNextNode(taskCodeMap.get(switchResultVo.getNextNode())); |
| 2233 | + }); |
2242 | 2234 | } |
2243 | 2235 |
|
2244 | 2236 | taskDefinitionLog.setTaskParams(JSONUtils.toJsonString(switchParameters)); |
2245 | 2237 | } |
2246 | 2238 |
|
2247 | 2239 | /** |
2248 | | - * Updates task code references inside the task parameters of a CONDITIONS-type task. |
2249 | | - * Replaces: |
2250 | | - * - {@code depTaskCode} in each {@code ConditionDependentItem} |
2251 | | - * - node IDs in {@code successNode} and {@code failedNode} |
2252 | | - * using the provided {@code taskCodeMap}. |
| 2240 | + * replace task code references inside the task parameters of a Condition task. |
2253 | 2241 | * |
2254 | 2242 | * @param taskDefinitionLog the task log to update |
2255 | 2243 | * @param taskCodeMap mapping from old task code to new task code |
2256 | 2244 | * @throws IllegalArgumentException if taskParams is invalid or cannot be parsed |
2257 | 2245 | */ |
2258 | | - private void updateConditionTaskParams(TaskDefinitionLog taskDefinitionLog, Map<Long, Long> taskCodeMap) { |
| 2246 | + private void replaceTaskCodeForConditionTaskParams(TaskDefinitionLog taskDefinitionLog, |
| 2247 | + Map<Long, Long> taskCodeMap) { |
2259 | 2248 | final String taskParams = taskDefinitionLog.getTaskParams(); |
2260 | | - final ConditionsParameters conditionsParameters = JSONUtils.parseObject(taskParams, ConditionsParameters.class); |
| 2249 | + final ConditionsParameters conditionsParameters = |
| 2250 | + JSONUtils.parseObject(taskParams, ConditionsParameters.class); |
2261 | 2251 |
|
2262 | 2252 | if (conditionsParameters == null) { |
2263 | | - log.warn("Failed to parse CONDITION task params: {}", taskParams); |
2264 | | - throw new IllegalArgumentException("Condition task params: " + taskParams + " is invalid."); |
| 2253 | + log.warn("Failed to parse Condition task params: {}", taskParams); |
| 2254 | + throw new IllegalArgumentException( |
| 2255 | + "Condition task params: " + taskParams + " is invalid."); |
2265 | 2256 | } |
2266 | 2257 |
|
2267 | | - // Update dependence -> depTaskCode |
2268 | | - ConditionsParameters.ConditionDependency dependence = conditionsParameters.getDependence(); |
2269 | | - if (dependence != null && CollectionUtils.isNotEmpty(dependence.getDependTaskList())) { |
2270 | | - for (ConditionDependentTaskModel dependTask : dependence.getDependTaskList()) { |
2271 | | - if (CollectionUtils.isEmpty(dependTask.getDependItemList())) { |
| 2258 | + // ConditionsParameters.ConditionDependency |
| 2259 | + ConditionsParameters.ConditionDependency conditionDependency = conditionsParameters.getDependence(); |
| 2260 | + if (conditionDependency != null && CollectionUtils.isNotEmpty(conditionDependency.getDependTaskList())) { |
| 2261 | + for (ConditionDependentTaskModel conditionDependentTaskModel : conditionDependency.getDependTaskList()) { |
| 2262 | + if (CollectionUtils.isEmpty(conditionDependentTaskModel.getDependItemList())) { |
2272 | 2263 | continue; |
2273 | 2264 | } |
2274 | | - for (ConditionDependentItem item : dependTask.getDependItemList()) { |
2275 | | - if (item == null) { |
| 2265 | + for (ConditionDependentItem conditionDependentItem : conditionDependentTaskModel.getDependItemList()) { |
| 2266 | + if (conditionDependentItem == null) { |
2276 | 2267 | continue; |
2277 | 2268 | } |
2278 | | - Long oldCode = item.getDepTaskCode(); |
2279 | | - if (taskCodeMap.containsKey(oldCode)) { |
2280 | | - item.setDepTaskCode(taskCodeMap.get(oldCode)); |
| 2269 | + // ConditionsParameters.ConditionDependency.ConditionDependentTaskModel.ConditionDependentItem.depTaskCode |
| 2270 | + Long depTaskCode = conditionDependentItem.getDepTaskCode(); |
| 2271 | + if (taskCodeMap.containsKey(depTaskCode)) { |
| 2272 | + conditionDependentItem.setDepTaskCode(taskCodeMap.get(depTaskCode)); |
2281 | 2273 | } |
2282 | 2274 | } |
2283 | 2275 | } |
2284 | 2276 | } |
2285 | 2277 |
|
2286 | | - // Update condition result branches |
| 2278 | + // ConditionsParameters.ConditionResult |
2287 | 2279 | ConditionsParameters.ConditionResult conditionResult = conditionsParameters.getConditionResult(); |
2288 | 2280 | if (conditionResult != null) { |
2289 | | - // Success branch |
| 2281 | + // ConditionsParameters.ConditionResult.successNode |
2290 | 2282 | if (CollectionUtils.isNotEmpty(conditionResult.getSuccessNode())) { |
2291 | | - List<Long> updatedSuccess = conditionResult.getSuccessNode().stream() |
2292 | | - .map(code -> { |
2293 | | - if (code != null && taskCodeMap.containsKey(code)) { |
2294 | | - return taskCodeMap.get(code); |
| 2283 | + List<Long> successNode = conditionResult.getSuccessNode().stream() |
| 2284 | + .map(taskCode -> { |
| 2285 | + if (taskCode != null && taskCodeMap.containsKey(taskCode)) { |
| 2286 | + return taskCodeMap.get(taskCode); |
2295 | 2287 | } |
2296 | | - return code; |
2297 | | - }) |
2298 | | - .collect(Collectors.toList()); |
2299 | | - conditionResult.setSuccessNode(updatedSuccess); |
| 2288 | + return taskCode; |
| 2289 | + }).collect(Collectors.toList()); |
| 2290 | + conditionResult.setSuccessNode(successNode); |
2300 | 2291 | } |
2301 | 2292 |
|
2302 | | - // Failed branch |
| 2293 | + // ConditionsParameters.ConditionResult.failedNode |
2303 | 2294 | if (CollectionUtils.isNotEmpty(conditionResult.getFailedNode())) { |
2304 | | - List<Long> updatedFailed = conditionResult.getFailedNode().stream() |
2305 | | - .map(code -> { |
2306 | | - if (code != null && taskCodeMap.containsKey(code)) { |
2307 | | - return taskCodeMap.get(code); |
| 2295 | + List<Long> failedNode = conditionResult.getFailedNode().stream() |
| 2296 | + .map(taskCode -> { |
| 2297 | + if (taskCode != null && taskCodeMap.containsKey(taskCode)) { |
| 2298 | + return taskCodeMap.get(taskCode); |
2308 | 2299 | } |
2309 | | - return code; |
2310 | | - }) |
2311 | | - .collect(Collectors.toList()); |
2312 | | - conditionResult.setFailedNode(updatedFailed); |
| 2300 | + return taskCode; |
| 2301 | + }).collect(Collectors.toList()); |
| 2302 | + conditionResult.setFailedNode(failedNode); |
2313 | 2303 | } |
2314 | 2304 | } |
2315 | 2305 |
|
|
0 commit comments