From 80c18a62c04ee88c2c5b5cd035e526ac54ccc1da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E4=B9=89=E8=B6=85?= Date: Fri, 6 Feb 2026 11:34:04 +0800 Subject: [PATCH 1/3] add golbalParams check in backend --- .../impl/WorkflowDefinitionServiceImpl.java | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) 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 f0c060562035..eb903adb494c 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 @@ -109,6 +109,7 @@ import org.apache.dolphinscheduler.dao.repository.WorkflowDefinitionDao; import org.apache.dolphinscheduler.dao.repository.WorkflowDefinitionLogDao; import org.apache.dolphinscheduler.dao.utils.WorkerGroupUtils; +import org.apache.dolphinscheduler.plugin.task.api.enums.Direct; import org.apache.dolphinscheduler.plugin.task.api.enums.SqlType; import org.apache.dolphinscheduler.plugin.task.api.enums.TaskTimeoutStrategy; import org.apache.dolphinscheduler.plugin.task.api.model.DependentItem; @@ -291,6 +292,15 @@ public Map createWorkflowDefinition(User loginUser, definition.getName(), definition.getCode()); throw new ServiceException(Status.WORKFLOW_DEFINITION_NAME_EXIST, name); } + + try { + validateGlobalParams(globalParams); + } catch (ServiceException ex) { + log.warn("Invalid globalParams: {}", ex.getMessage()); + putMsg(result, Status.REQUEST_PARAMS_NOT_VALID_ERROR, ex.getMessage()); + return result; + } + List taskDefinitionLogs = generateTaskDefinitionList(taskDefinitionJson); List taskRelationList = generateTaskRelationList(taskRelationJson, taskDefinitionLogs); @@ -811,6 +821,15 @@ public Map updateWorkflowDefinition(User loginUser, putMsg(result, Status.DESCRIPTION_TOO_LONG_ERROR); return result; } + + try { + validateGlobalParams(globalParams); + } catch (ServiceException ex) { + log.warn("Invalid globalParams: {}", ex.getMessage()); + putMsg(result, Status.REQUEST_PARAMS_NOT_VALID_ERROR, ex.getMessage()); + return result; + } + List taskDefinitionLogs = generateTaskDefinitionList(taskDefinitionJson); List taskRelationList = generateTaskRelationList(taskRelationJson, taskDefinitionLogs); @@ -847,6 +866,42 @@ public Map updateWorkflowDefinition(User loginUser, return result; } + /** + * Validates global parameters: non-empty keys, no duplicates, and required values for IN-type params. + */ + private void validateGlobalParams(String globalParams) { + if (StringUtils.isBlank(globalParams)) { + return; + } + + List params; + try { + params = JSONUtils.toList(globalParams, Property.class); + } catch (Exception e) { + throw new ServiceException("Invalid globalParams"); + } + + if (params == null || params.isEmpty()) { + return; + } + + Set keys = new HashSet<>(); + for (Property p : params) { + if (StringUtils.isEmpty(p.getProp())) { + throw new ServiceException("Global param key cannot be empty"); + } + + String key = p.getProp().trim(); + if (!keys.add(key)) { + throw new ServiceException("Duplicate global param key: " + key); + } + + if (Direct.IN.equals(p.getDirect()) && StringUtils.isEmpty(p.getValue())) { + throw new ServiceException("IN param value required for key: " + key); + } + } + } + /** * Task want to delete whether used in other task, should throw exception when have be used. *

From d6d74b835c44797f368d27483c9cc57fac2c9caf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E4=B9=89=E8=B6=85?= Date: Tue, 3 Mar 2026 10:52:01 +0800 Subject: [PATCH 2/3] simple validateGlobalParams --- .../impl/WorkflowDefinitionServiceImpl.java | 20 ++----------------- 1 file changed, 2 insertions(+), 18 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 c7a937bb49e9..8ed30840d136 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 @@ -265,13 +265,7 @@ public Map createWorkflowDefinition(User loginUser, throw new ServiceException(Status.WORKFLOW_DEFINITION_NAME_EXIST, name); } - try { - validateGlobalParams(globalParams); - } catch (ServiceException ex) { - log.warn("Invalid globalParams: {}", ex.getMessage()); - putMsg(result, Status.REQUEST_PARAMS_NOT_VALID_ERROR, ex.getMessage()); - return result; - } + validateGlobalParams(globalParams); List taskDefinitionLogs = generateTaskDefinitionList(taskDefinitionJson); List taskRelationList = generateTaskRelationList(taskRelationJson, taskDefinitionLogs); @@ -794,13 +788,7 @@ public Map updateWorkflowDefinition(User loginUser, return result; } - try { - validateGlobalParams(globalParams); - } catch (ServiceException ex) { - log.warn("Invalid globalParams: {}", ex.getMessage()); - putMsg(result, Status.REQUEST_PARAMS_NOT_VALID_ERROR, ex.getMessage()); - return result; - } + validateGlobalParams(globalParams); List taskDefinitionLogs = generateTaskDefinitionList(taskDefinitionJson); List taskRelationList = generateTaskRelationList(taskRelationJson, taskDefinitionLogs); @@ -867,10 +855,6 @@ private void validateGlobalParams(String globalParams) { if (!keys.add(key)) { throw new ServiceException("Duplicate global param key: " + key); } - - if (Direct.IN.equals(p.getDirect()) && StringUtils.isEmpty(p.getValue())) { - throw new ServiceException("IN param value required for key: " + key); - } } } From 81ecdc7deab40021d599d8939047c4e02f98ddd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E4=B9=89=E8=B6=85?= Date: Tue, 3 Mar 2026 10:55:04 +0800 Subject: [PATCH 3/3] update comment --- .../api/service/impl/WorkflowDefinitionServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 8ed30840d136..87717171bc85 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 @@ -827,7 +827,7 @@ public Map updateWorkflowDefinition(User loginUser, } /** - * Validates global parameters: non-empty keys, no duplicates, and required values for IN-type params. + * Validates global parameters: non-empty keys, no duplicates */ private void validateGlobalParams(String globalParams) { if (StringUtils.isBlank(globalParams)) {