This is an automated email from the ASF dual-hosted git repository.
zihaoxiang pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git
The following commit(s) were added to refs/heads/dev by this push:
new 2ae4402fde [Fix-16934][api] When creating workflows containing switch
nodes in different orders, the copied workflows may lose associations (#16939)
2ae4402fde is described below
commit 2ae4402fde1a16cc05057f0cda64502e4d7a9e44
Author: LiWenXin <[email protected]>
AuthorDate: Fri Jan 17 14:44:07 2025 +0800
[Fix-16934][api] When creating workflows containing switch nodes in
different orders, the copied workflows may lose associations (#16939)
---
.../impl/WorkflowDefinitionServiceImpl.java | 45 +++++++++++-----------
1 file changed, 23 insertions(+), 22 deletions(-)
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/WorkflowDefinitionServiceImpl.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/WorkflowDefinitionServiceImpl.java
index f9432da84f..1b743e2c0c 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/WorkflowDefinitionServiceImpl.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/WorkflowDefinitionServiceImpl.java
@@ -2118,37 +2118,38 @@ public class WorkflowDefinitionServiceImpl extends
BaseServiceImpl implements Wo
List<TaskDefinitionLog> taskDefinitionLogs =
taskDefinitionLogDao.queryTaskDefineLogList(workflowTaskRelations);
Map<Long, Long> taskCodeMap = new HashMap<>();
- for (TaskDefinitionLog taskDefinitionLog : taskDefinitionLogs)
{
+ taskDefinitionLogs.forEach(taskDefinitionLog -> {
try {
- long taskCode = CodeGenerateUtils.genCode();
- taskCodeMap.put(taskDefinitionLog.getCode(), taskCode);
- taskDefinitionLog.setCode(taskCode);
- if
(TaskTypeUtils.isSwitchTask(taskDefinitionLog.getTaskType())) {
- final String taskParams =
taskDefinitionLog.getTaskParams();
- final SwitchParameters switchParameters =
- JSONUtils.parseObject(taskParams,
SwitchParameters.class);
- if (switchParameters == null) {
- throw new IllegalArgumentException(
- "Switch task params: " + taskParams +
" is invalid.");
- }
- SwitchParameters.SwitchResult switchResult =
switchParameters.getSwitchResult();
-
switchResult.getDependTaskList().forEach(switchResultVo -> {
-
switchResultVo.setNextNode(taskCodeMap.get(switchResultVo.getNextNode()));
- });
- if (switchResult.getNextNode() != null) {
- switchResult.setNextNode(
-
taskCodeMap.get(switchResult.getNextNode()));
- }
-
taskDefinitionLog.setTaskParams(JSONUtils.toJsonString(switchParameters));
- }
+ taskCodeMap.put(taskDefinitionLog.getCode(),
CodeGenerateUtils.genCode());
} catch (CodeGenerateException e) {
log.error("Generate task definition code error,
projectCode:{}.", targetProjectCode, e);
putMsg(result, Status.INTERNAL_SERVER_ERROR_ARGS);
throw new
ServiceException(Status.INTERNAL_SERVER_ERROR_ARGS);
}
+ });
+ for (TaskDefinitionLog taskDefinitionLog : taskDefinitionLogs)
{
+
taskDefinitionLog.setCode(taskCodeMap.get(taskDefinitionLog.getCode()));
taskDefinitionLog.setProjectCode(targetProjectCode);
taskDefinitionLog.setVersion(0);
taskDefinitionLog.setName(taskDefinitionLog.getName());
+ if
(TaskTypeUtils.isSwitchTask(taskDefinitionLog.getTaskType())) {
+ final String taskParams =
taskDefinitionLog.getTaskParams();
+ final SwitchParameters switchParameters =
+ JSONUtils.parseObject(taskParams,
SwitchParameters.class);
+ if (switchParameters == null) {
+ throw new IllegalArgumentException(
+ "Switch task params: " + taskParams + " is
invalid.");
+ }
+ SwitchParameters.SwitchResult switchResult =
switchParameters.getSwitchResult();
+
switchResult.getDependTaskList().forEach(switchResultVo -> {
+
switchResultVo.setNextNode(taskCodeMap.get(switchResultVo.getNextNode()));
+ });
+ if (switchResult.getNextNode() != null) {
+ switchResult.setNextNode(
+
taskCodeMap.get(switchResult.getNextNode()));
+ }
+
taskDefinitionLog.setTaskParams(JSONUtils.toJsonString(switchParameters));
+ }
}
for (WorkflowTaskRelationLog workflowTaskRelationLog :
taskRelationList) {
if (workflowTaskRelationLog.getPreTaskCode() > 0) {