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 0fc2fe971a [DSIP-39][parameter] Improvement startup parameters/global
parameters/project parameters data type (#15967)
0fc2fe971a is described below
commit 0fc2fe971a9ca517b389f2d775281e56348417cf
Author: 小可耐 <[email protected]>
AuthorDate: Tue May 21 15:39:43 2024 +0800
[DSIP-39][parameter] Improvement startup parameters/global
parameters/project parameters data type (#15967)
* [Improvement][parameter] New data types and type filtering
* [Improvement][parameter] Improvement startup parameters/global parameters
data type
* fix api interfaces compatible
* add project parameter data type default value
* [Improvement][parameter] New data types and type filtering
* [Improvement][parameter] Improvement startup parameters/global parameters
data type
* fix api interfaces compatible
* add project parameter data type default value
* improvement project code
* remove useless imports
* remove method onClearSearchTaskType
* add parameter doc
* optimisation logic
* code conflict resolution
* code conflict resolution
* [Improvement][Monitor] Show master && worker Busy Or Normal Status and
Show Commands table list (#15978)
* update
* test
* add monitor enhance ui
* update
* update
* update doc
* fix spotless
* update
* update
* Update
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/DataAnalysisController.java
Co-authored-by: Wenjun Ruan <[email protected]>
* Update
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/DataAnalysisController.java
Co-authored-by: Wenjun Ruan <[email protected]>
* Update
dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ErrorCommandMapper.java
Co-authored-by: Wenjun Ruan <[email protected]>
* Update
dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ErrorCommandMapper.xml
Co-authored-by: Wenjun Ruan <[email protected]>
* Update
dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/CommandMapper.java
Co-authored-by: Wenjun Ruan <[email protected]>
* Update
dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ErrorCommandMapper.xml
Co-authored-by: Wenjun Ruan <[email protected]>
* update
* fix spotless
* update
---------
Co-authored-by: Wenjun Ruan <[email protected]>
* [Improvement][Monitor] Add UT for montor (#15998)
* formatting Code
---
docs/docs/en/guide/parameter/global.md | 2 +-
docs/docs/en/guide/parameter/project-parameter.md | 2 +-
docs/docs/en/guide/parameter/startup-parameter.md | 2 +-
docs/docs/zh/guide/parameter/global.md | 2 +-
docs/docs/zh/guide/parameter/project-parameter.md | 2 +-
docs/docs/zh/guide/parameter/startup-parameter.md | 2 +-
.../new_ui/dev/parameter/context-subprocess02.png | Bin 140118 -> 335292 bytes
.../new_ui/dev/parameter/context_parameter04.png | Bin 169900 -> 345902 bytes
.../new_ui/dev/parameter/global_parameter02.png | Bin 114779 -> 333617 bytes
.../new_ui/dev/parameter/project_parameter01.png | Bin 3242977 -> 121360
bytes
.../new_ui/dev/parameter/startup_parameter02.png | Bin 354036 -> 200413 bytes
.../new_ui/dev/parameter/startup_parameter04.png | Bin 355135 -> 199774 bytes
.../api/controller/ExecutorController.java | 18 ++--
.../api/controller/ProjectParameterController.java | 17 +--
.../api/service/ExecutorService.java | 6 +-
.../api/service/ProjectParameterService.java | 6 +-
.../api/service/impl/ExecutorServiceImpl.java | 13 +--
.../service/impl/ProjectParameterServiceImpl.java | 11 +-
.../controller/ExecuteFunctionControllerTest.java | 8 +-
.../controller/ProjectParameterControllerTest.java | 16 +--
.../api/service/ProjectParameterServiceTest.java | 40 ++++---
.../dao/entity/ProjectParameter.java | 3 +
.../dao/mapper/ProjectParameterMapper.java | 3 +-
.../dao/mapper/ProjectParameterMapper.xml | 7 +-
.../src/main/resources/sql/dolphinscheduler_h2.sql | 1 +
.../main/resources/sql/dolphinscheduler_mysql.sql | 1 +
.../resources/sql/dolphinscheduler_postgresql.sql | 1 +
.../3.2.2_schema/mysql/dolphinscheduler_ddl.sql | 4 +-
.../postgresql/dolphinscheduler_ddl.sql | 4 +-
.../dao/mapper/ProjectParameterMapperTest.java | 2 +-
.../service/expand/CuringParamsServiceImpl.java | 23 +++--
.../plugin/task/api/utils/PropertyUtils.java | 64 ++++++++++++
dolphinscheduler-ui/src/locales/en_US/project.ts | 2 +
dolphinscheduler-ui/src/locales/zh_CN/project.ts | 2 +
.../service/modules/projects-parameter/types.ts | 3 +
.../parameter/components/parameter-modal.tsx | 20 +++-
.../projects/parameter/components/use-modal.ts | 20 +++-
.../projects/parameter/data_type.ts} | 78 +++++++-------
.../src/views/projects/parameter/index.tsx | 15 ++-
.../src/views/projects/parameter/use-table.ts | 9 +-
.../workflow/components/dag/dag-save-modal.tsx | 30 +++++-
.../projects/workflow/components/dag/types.ts | 1 +
.../workflow/definition/components/start-modal.tsx | 115 ++++++++++++---------
.../workflow/definition/components/use-modal.ts | 10 +-
.../projects/workflow/definition/create/index.tsx | 2 +-
.../projects/workflow/definition/detail/index.tsx | 2 +-
.../projects/workflow/instance/detail/index.tsx | 2 +-
47 files changed, 384 insertions(+), 187 deletions(-)
diff --git a/docs/docs/en/guide/parameter/global.md
b/docs/docs/en/guide/parameter/global.md
index 86cfd69929..46e9fb151d 100644
--- a/docs/docs/en/guide/parameter/global.md
+++ b/docs/docs/en/guide/parameter/global.md
@@ -22,7 +22,7 @@ Create a shell task and enter `echo ${dt}` in the script
content. In this case,
### Save the workflow and set global parameters
-Set global parameter: On the workflow definition page, click the plus sign to
the right of "Set Global", after filling in the variable name and value, save
it.
+Set global parameter: On the workflow definition page, click the plus sign to
the right of "Set Global", after filling in the variable name and value, select
the appropriate parameter value type, save it.

diff --git a/docs/docs/en/guide/parameter/project-parameter.md
b/docs/docs/en/guide/parameter/project-parameter.md
index 235cd23512..f9509114d7 100644
--- a/docs/docs/en/guide/parameter/project-parameter.md
+++ b/docs/docs/en/guide/parameter/project-parameter.md
@@ -8,7 +8,7 @@ Project-level parameters are valid for all task nodes under the
entire project.
### Define project-level parameters
-On the project page, click Project Parameters and Create Parameters, and fill
in the parameter name and parameter value. As shown below:
+On the project page, click Project Parameters and Create Parameters, and fill
in the parameter name and parameter value, select the appropriate parameter
value type. As shown below:

diff --git a/docs/docs/en/guide/parameter/startup-parameter.md
b/docs/docs/en/guide/parameter/startup-parameter.md
index bf3acc2034..11cf5a9f63 100644
--- a/docs/docs/en/guide/parameter/startup-parameter.md
+++ b/docs/docs/en/guide/parameter/startup-parameter.md
@@ -6,7 +6,7 @@ Parameters are valid for all task nodes of the entire workflow.
It can be config
## Usage
-Usage of startup parameters is: at the task launch page, click the '+' below
the 'Startup Parameter' and fill in the key and value to save. The workflow
will add them into global parameters.
+Usage of startup parameters is: at the task launch page, click the '+' below
the 'Startup Parameter' and fill in the key and value, select the appropriate
parameter value type then to save. The workflow will add them into global
parameters.
## Example
diff --git a/docs/docs/zh/guide/parameter/global.md
b/docs/docs/zh/guide/parameter/global.md
index cd26a291b0..3b8b307f91 100644
--- a/docs/docs/zh/guide/parameter/global.md
+++ b/docs/docs/zh/guide/parameter/global.md
@@ -20,7 +20,7 @@
### 保存工作流,并设置全局参数
-全局参数配置方式如下:在工作流定义页面,点击“设置全局”右边的加号,填写对应的变量名称和对应的值,保存即可。如下图所示:
+全局参数配置方式如下:在工作流定义页面,点击“设置全局”右边的加号,填写对应的变量名称和对应的值,选择相应的参数值类型,保存即可。如下图所示:

diff --git a/docs/docs/zh/guide/parameter/project-parameter.md
b/docs/docs/zh/guide/parameter/project-parameter.md
index df26e7a7df..8692b198a8 100644
--- a/docs/docs/zh/guide/parameter/project-parameter.md
+++ b/docs/docs/zh/guide/parameter/project-parameter.md
@@ -8,7 +8,7 @@
### 定义项目级别参数
-在项目管理页面,点击项目级别参数,点击创建项目级别参数,填写参数名称和参数值。如下图所示:
+在项目管理页面,点击项目级别参数,点击创建项目级别参数,填写参数名称和参数值,选择相应的参数值类型。如下图所示:

diff --git a/docs/docs/zh/guide/parameter/startup-parameter.md
b/docs/docs/zh/guide/parameter/startup-parameter.md
index 7da65657a7..38e15787d0 100644
--- a/docs/docs/zh/guide/parameter/startup-parameter.md
+++ b/docs/docs/zh/guide/parameter/startup-parameter.md
@@ -6,7 +6,7 @@
## 使用方式
-启动参数配置方式如下:在启动前参数设置界面,点击“启动参数“下面的加号,填写对应的参数名称和对应的值,点击确定,工作流会将启动参数加入全局参数中。
+启动参数配置方式如下:在启动前参数设置界面,点击“启动参数“下面的加号,填写对应的参数名称和对应的值,选择相应的参数值类型,点击确定,工作流会将启动参数加入全局参数中。
## 任务样例
diff --git a/docs/img/new_ui/dev/parameter/context-subprocess02.png
b/docs/img/new_ui/dev/parameter/context-subprocess02.png
index 8c1acf5f11..7d7cd850ea 100644
Binary files a/docs/img/new_ui/dev/parameter/context-subprocess02.png and
b/docs/img/new_ui/dev/parameter/context-subprocess02.png differ
diff --git a/docs/img/new_ui/dev/parameter/context_parameter04.png
b/docs/img/new_ui/dev/parameter/context_parameter04.png
index b1dfd8b3cd..e307e607e7 100644
Binary files a/docs/img/new_ui/dev/parameter/context_parameter04.png and
b/docs/img/new_ui/dev/parameter/context_parameter04.png differ
diff --git a/docs/img/new_ui/dev/parameter/global_parameter02.png
b/docs/img/new_ui/dev/parameter/global_parameter02.png
index 1eeaf4b43a..3d6d535311 100644
Binary files a/docs/img/new_ui/dev/parameter/global_parameter02.png and
b/docs/img/new_ui/dev/parameter/global_parameter02.png differ
diff --git a/docs/img/new_ui/dev/parameter/project_parameter01.png
b/docs/img/new_ui/dev/parameter/project_parameter01.png
index 48ea149b40..5f6a483d4c 100644
Binary files a/docs/img/new_ui/dev/parameter/project_parameter01.png and
b/docs/img/new_ui/dev/parameter/project_parameter01.png differ
diff --git a/docs/img/new_ui/dev/parameter/startup_parameter02.png
b/docs/img/new_ui/dev/parameter/startup_parameter02.png
index cbeb96b658..d1819ad78e 100644
Binary files a/docs/img/new_ui/dev/parameter/startup_parameter02.png and
b/docs/img/new_ui/dev/parameter/startup_parameter02.png differ
diff --git a/docs/img/new_ui/dev/parameter/startup_parameter04.png
b/docs/img/new_ui/dev/parameter/startup_parameter04.png
index e32afb4b31..b5799b24a5 100644
Binary files a/docs/img/new_ui/dev/parameter/startup_parameter04.png and
b/docs/img/new_ui/dev/parameter/startup_parameter04.png differ
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ExecutorController.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ExecutorController.java
index a2a300b946..8c86de7fe6 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ExecutorController.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ExecutorController.java
@@ -44,6 +44,8 @@ import org.apache.dolphinscheduler.common.enums.WarningType;
import org.apache.dolphinscheduler.common.utils.JSONUtils;
import org.apache.dolphinscheduler.dao.entity.User;
import org.apache.dolphinscheduler.extract.master.dto.WorkflowExecuteDto;
+import org.apache.dolphinscheduler.plugin.task.api.model.Property;
+import org.apache.dolphinscheduler.plugin.task.api.utils.PropertyUtils;
import org.apache.commons.lang3.StringUtils;
@@ -163,10 +165,8 @@ public class ExecutorController extends BaseController {
if (timeout == null) {
timeout = Constants.MAX_TASK_TIMEOUT;
}
- Map<String, String> startParamMap = null;
- if (startParams != null) {
- startParamMap = JSONUtils.toMap(startParams);
- }
+
+ List<Property> startParamList =
PropertyUtils.startParamsTransformPropertyList(startParams);
if (complementDependentMode == null) {
complementDependentMode = ComplementDependentMode.OFF_MODE;
@@ -175,7 +175,7 @@ public class ExecutorController extends BaseController {
Map<String, Object> result =
execService.execProcessInstance(loginUser, projectCode, processDefinitionCode,
scheduleTime, execType, failureStrategy,
startNodeList, taskDependType, warningType, warningGroupId,
runMode, processInstancePriority,
- workerGroup, tenantCode, environmentCode, timeout,
startParamMap, expectedParallelismNumber, dryRun,
+ workerGroup, tenantCode, environmentCode, timeout,
startParamList, expectedParallelismNumber, dryRun,
testFlag,
complementDependentMode, version, allLevelDependent,
executionOrder);
return returnDataList(result);
@@ -262,10 +262,7 @@ public class ExecutorController extends BaseController {
timeout = Constants.MAX_TASK_TIMEOUT;
}
- Map<String, String> startParamMap = null;
- if (startParams != null) {
- startParamMap = JSONUtils.toMap(startParams);
- }
+ List<Property> startParamList =
PropertyUtils.startParamsTransformPropertyList(startParams);
if (complementDependentMode == null) {
log.debug("Parameter complementDependentMode set to {} due to
null.", ComplementDependentMode.OFF_MODE);
@@ -283,7 +280,8 @@ public class ExecutorController extends BaseController {
result = execService.execProcessInstance(loginUser, projectCode,
processDefinitionCode, scheduleTime,
execType, failureStrategy,
startNodeList, taskDependType, warningType,
warningGroupId, runMode, processInstancePriority,
- workerGroup, tenantCode, environmentCode, timeout,
startParamMap, expectedParallelismNumber, dryRun,
+ workerGroup, tenantCode, environmentCode, timeout,
startParamList, expectedParallelismNumber,
+ dryRun,
testFlag,
complementDependentMode, null, allLevelDependent,
executionOrder);
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ProjectParameterController.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ProjectParameterController.java
index 706c7e939a..efec970e6f 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ProjectParameterController.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ProjectParameterController.java
@@ -61,7 +61,8 @@ public class ProjectParameterController extends
BaseController {
@Operation(summary = "createProjectParameter", description =
"CREATE_PROJECT_PARAMETER_NOTES")
@Parameters({
@Parameter(name = "projectParameterName", description =
"PROJECT_PARAMETER_NAME", schema = @Schema(implementation = String.class)),
- @Parameter(name = "projectParameterValue", description =
"PROJECT_PARAMETER_VALUE", schema = @Schema(implementation = String.class))
+ @Parameter(name = "projectParameterValue", description =
"PROJECT_PARAMETER_VALUE", schema = @Schema(implementation = String.class)),
+ @Parameter(name = "projectParameterDataType", description =
"PROJECT_PARAMETER_DATA_TYPE", schema = @Schema(implementation = String.class))
})
@PostMapping()
@ResponseStatus(HttpStatus.CREATED)
@@ -69,9 +70,10 @@ public class ProjectParameterController extends
BaseController {
public Result createProjectParameter(@Parameter(hidden = true)
@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@Parameter(name = "projectCode",
description = "PROJECT_CODE", required = true) @PathVariable long projectCode,
@RequestParam("projectParameterName")
String projectParameterName,
- @RequestParam(value =
"projectParameterValue") String projectParameterValue) {
+ @RequestParam(value =
"projectParameterValue") String projectParameterValue,
+ @RequestParam(value =
"projectParameterDataType", defaultValue = "VARCHAR") String
projectParameterDataType) {
return projectParameterService.createProjectParameter(loginUser,
projectCode, projectParameterName,
- projectParameterValue);
+ projectParameterValue, projectParameterDataType);
}
@Operation(summary = "updateProjectParameter", description =
"UPDATE_PROJECT_PARAMETER_NOTES")
@@ -79,6 +81,7 @@ public class ProjectParameterController extends
BaseController {
@Parameter(name = "code", description = "PROJECT_PARAMETER_CODE",
schema = @Schema(implementation = long.class, example = "123456")),
@Parameter(name = "projectParameterName", description =
"PROJECT_PARAMETER_NAME", schema = @Schema(implementation = String.class)),
@Parameter(name = "projectParameterValue", description =
"PROJECT_PARAMETER_VALUE", schema = @Schema(implementation = String.class)),
+ @Parameter(name = "projectParameterDataType", description =
"PROJECT_PARAMETER_DATA_TYPE", schema = @Schema(implementation = String.class))
})
@PutMapping(value = "/{code}")
@ResponseStatus(HttpStatus.OK)
@@ -87,9 +90,10 @@ public class ProjectParameterController extends
BaseController {
@Parameter(name = "projectCode",
description = "PROJECT_CODE", required = true) @PathVariable long projectCode,
@PathVariable("code") Long code,
@RequestParam("projectParameterName")
String projectParameterName,
- @RequestParam(value =
"projectParameterValue") String projectParameterValue) {
+ @RequestParam(value =
"projectParameterValue") String projectParameterValue,
+ @RequestParam(value =
"projectParameterDataType") String projectParameterDataType) {
return projectParameterService.updateProjectParameter(loginUser,
projectCode, code, projectParameterName,
- projectParameterValue);
+ projectParameterValue, projectParameterDataType);
}
@Operation(summary = "deleteProjectParametersByCode", description =
"DELETE_PROJECT_PARAMETER_NOTES")
@@ -133,13 +137,14 @@ public class ProjectParameterController extends
BaseController {
@Parameter(hidden = true)
@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@Parameter(name =
"projectCode", description = "PROJECT_CODE", required = true) @PathVariable
long projectCode,
@RequestParam(value =
"searchVal", required = false) String searchVal,
+ @RequestParam(value =
"projectParameterDataType", required = false) String projectParameterDataType,
@RequestParam("pageNo")
Integer pageNo,
@RequestParam("pageSize")
Integer pageSize) {
checkPageParams(pageNo, pageSize);
searchVal = ParameterUtils.handleEscapes(searchVal);
return
projectParameterService.queryProjectParameterListPaging(loginUser, projectCode,
pageSize, pageNo,
- searchVal);
+ searchVal, projectParameterDataType);
}
@Operation(summary = "queryProjectParameterByCode", description =
"QUERY_PROJECT_PARAMETER_NOTES")
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ExecutorService.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ExecutorService.java
index 3166d3e718..55ca697412 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ExecutorService.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ExecutorService.java
@@ -30,7 +30,9 @@ import org.apache.dolphinscheduler.common.enums.WarningType;
import org.apache.dolphinscheduler.dao.entity.ProcessDefinition;
import org.apache.dolphinscheduler.dao.entity.User;
import org.apache.dolphinscheduler.extract.master.dto.WorkflowExecuteDto;
+import org.apache.dolphinscheduler.plugin.task.api.model.Property;
+import java.util.List;
import java.util.Map;
/**
@@ -57,7 +59,7 @@ public interface ExecutorService {
* @param environmentCode environment code
* @param runMode run mode
* @param timeout timeout
- * @param startParams the global param values which pass to new process
instance
+ * @param startParamList the global param values which pass to new process
instance
* @param expectedParallelismNumber the expected parallelism number when
execute complement in parallel mode
* @param executionOrder the execution order when complementing data
* @return execute process instance code
@@ -71,7 +73,7 @@ public interface ExecutorService {
Priority processInstancePriority,
String workerGroup, String tenantCode,
Long environmentCode,
Integer timeout,
- Map<String, String> startParams,
Integer expectedParallelismNumber,
+ List<Property> startParamList,
Integer expectedParallelismNumber,
int dryRun, int testFlag,
ComplementDependentMode
complementDependentMode, Integer version,
boolean allLevelDependent,
ExecutionOrder executionOrder);
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProjectParameterService.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProjectParameterService.java
index ef984dfac4..af2b047488 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProjectParameterService.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProjectParameterService.java
@@ -23,17 +23,17 @@ import org.apache.dolphinscheduler.dao.entity.User;
public interface ProjectParameterService {
Result createProjectParameter(User loginUser, long projectCode, String
projectParameterName,
- String projectParameterValue);
+ String projectParameterValue, String
projectParameterDataType);
Result updateProjectParameter(User loginUser, long projectCode, long code,
String projectParameterName,
- String projectParameterValue);
+ String projectParameterValue, String
projectParameterDataType);
Result deleteProjectParametersByCode(User loginUser, long projectCode,
long code);
Result batchDeleteProjectParametersByCodes(User loginUser, long
projectCode, String codes);
Result queryProjectParameterListPaging(User loginUser, long projectCode,
Integer pageSize, Integer pageNo,
- String searchVal);
+ String searchVal, String
projectParameterDataType);
Result queryProjectParameterByCode(User loginUser, long projectCode, long
code);
}
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ExecutorServiceImpl.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ExecutorServiceImpl.java
index dafef79615..3e613b11fa 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ExecutorServiceImpl.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ExecutorServiceImpl.java
@@ -90,6 +90,7 @@ import
org.apache.dolphinscheduler.extract.master.transportor.StreamingTaskTrigg
import
org.apache.dolphinscheduler.extract.master.transportor.StreamingTaskTriggerResponse;
import
org.apache.dolphinscheduler.extract.master.transportor.WorkflowInstanceStateChangeEvent;
import org.apache.dolphinscheduler.plugin.task.api.TaskConstants;
+import org.apache.dolphinscheduler.plugin.task.api.model.Property;
import org.apache.dolphinscheduler.registry.api.enums.RegistryNodeType;
import org.apache.dolphinscheduler.service.command.CommandService;
import org.apache.dolphinscheduler.service.cron.CronUtils;
@@ -204,7 +205,7 @@ public class ExecutorServiceImpl extends BaseServiceImpl
implements ExecutorServ
* @param environmentCode environment code
* @param runMode run mode
* @param timeout timeout
- * @param startParams the global param values which pass to
new process instance
+ * @param startParamList the global param values which pass
to new process instance
* @param expectedParallelismNumber the expected parallelism number when
execute complement in parallel mode
* @param testFlag testFlag
* @param executionOrder the execution order when complementing data
@@ -220,7 +221,7 @@ public class ExecutorServiceImpl extends BaseServiceImpl
implements ExecutorServ
Priority
processInstancePriority, String workerGroup,
String tenantCode,
Long environmentCode,
Integer timeout,
- Map<String, String>
startParams, Integer expectedParallelismNumber,
+ List<Property>
startParamList, Integer expectedParallelismNumber,
int dryRun, int testFlag,
ComplementDependentMode
complementDependentMode, Integer version,
boolean allLevelDependent,
ExecutionOrder executionOrder) {
@@ -270,7 +271,7 @@ public class ExecutorServiceImpl extends BaseServiceImpl
implements ExecutorServ
startNodeList,
cronTime, warningType, loginUser.getId(),
warningGroupId, runMode, processInstancePriority,
workerGroup, tenantCode,
- environmentCode, startParams,
expectedParallelismNumber, dryRun, testFlag,
+ environmentCode, startParamList,
expectedParallelismNumber, dryRun, testFlag,
complementDependentMode, allLevelDependent,
executionOrder);
if (create > 0) {
@@ -732,7 +733,7 @@ public class ExecutorServiceImpl extends BaseServiceImpl
implements ExecutorServ
WarningType warningType, int executorId, Integer
warningGroupId, RunMode runMode,
Priority processInstancePriority, String
workerGroup, String tenantCode,
Long environmentCode,
- Map<String, String> startParams, Integer
expectedParallelismNumber, int dryRun,
+ List<Property> startParamList, Integer
expectedParallelismNumber, int dryRun,
int testFlag, ComplementDependentMode
complementDependentMode,
boolean allLevelDependent, ExecutionOrder
executionOrder) {
@@ -761,8 +762,8 @@ public class ExecutorServiceImpl extends BaseServiceImpl
implements ExecutorServ
if (warningType != null) {
command.setWarningType(warningType);
}
- if (startParams != null && startParams.size() > 0) {
- cmdParam.put(CMD_PARAM_START_PARAMS,
JSONUtils.toJsonString(startParams));
+ if (CollectionUtils.isNotEmpty(startParamList)) {
+ cmdParam.put(CMD_PARAM_START_PARAMS,
JSONUtils.toJsonString(startParamList));
}
command.setCommandParam(JSONUtils.toJsonString(cmdParam));
command.setExecutorId(executorId);
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProjectParameterServiceImpl.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProjectParameterServiceImpl.java
index 17d1d04712..e23101da36 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProjectParameterServiceImpl.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProjectParameterServiceImpl.java
@@ -68,7 +68,7 @@ public class ProjectParameterServiceImpl extends
BaseServiceImpl implements Proj
@Override
@Transactional
public Result createProjectParameter(User loginUser, long projectCode,
String projectParameterName,
- String projectParameterValue) {
+ String projectParameterValue, String
projectParameterDataType) {
Result result = new Result();
// check if user have write perm for project
@@ -97,6 +97,7 @@ public class ProjectParameterServiceImpl extends
BaseServiceImpl implements Proj
.builder()
.paramName(projectParameterName)
.paramValue(projectParameterValue)
+ .paramDataType(projectParameterDataType)
.code(CodeGenerateUtils.genCode())
.projectCode(projectCode)
.userId(loginUser.getId())
@@ -122,7 +123,7 @@ public class ProjectParameterServiceImpl extends
BaseServiceImpl implements Proj
@Override
public Result updateProjectParameter(User loginUser, long projectCode,
long code, String projectParameterName,
- String projectParameterValue) {
+ String projectParameterValue, String
projectParameterDataType) {
Result result = new Result();
// check if user have write perm for project
@@ -155,6 +156,7 @@ public class ProjectParameterServiceImpl extends
BaseServiceImpl implements Proj
projectParameter.setParamName(projectParameterName);
projectParameter.setParamValue(projectParameterValue);
+ projectParameter.setParamDataType(projectParameterDataType);
projectParameter.setUpdateTime(new Date());
projectParameter.setOperator(loginUser.getId());
@@ -236,7 +238,7 @@ public class ProjectParameterServiceImpl extends
BaseServiceImpl implements Proj
@Override
public Result queryProjectParameterListPaging(User loginUser, long
projectCode, Integer pageSize, Integer pageNo,
- String searchVal) {
+ String searchVal, String
projectParameterDataType) {
Result result = new Result();
Project project = projectMapper.queryByCode(projectCode);
@@ -249,7 +251,8 @@ public class ProjectParameterServiceImpl extends
BaseServiceImpl implements Proj
Page<ProjectParameter> page = new Page<>(pageNo, pageSize);
IPage<ProjectParameter> iPage =
- projectParameterMapper.queryProjectParameterListPaging(page,
projectCode, null, searchVal);
+ projectParameterMapper.queryProjectParameterListPaging(page,
projectCode, null, searchVal,
+ projectParameterDataType);
List<ProjectParameter> projectParameterList = iPage.getRecords();
diff --git
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/ExecuteFunctionControllerTest.java
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/ExecuteFunctionControllerTest.java
index 2c1a62ccc6..5b77acc099 100644
---
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/ExecuteFunctionControllerTest.java
+++
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/ExecuteFunctionControllerTest.java
@@ -38,8 +38,13 @@ import org.apache.dolphinscheduler.common.enums.RunMode;
import org.apache.dolphinscheduler.common.enums.TaskDependType;
import org.apache.dolphinscheduler.common.enums.WarningType;
import org.apache.dolphinscheduler.dao.entity.User;
+import org.apache.dolphinscheduler.plugin.task.api.enums.DataType;
+import org.apache.dolphinscheduler.plugin.task.api.enums.Direct;
+import org.apache.dolphinscheduler.plugin.task.api.model.Property;
+import java.util.Collections;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import org.junit.jupiter.api.Test;
@@ -75,7 +80,8 @@ public class ExecuteFunctionControllerTest extends
AbstractControllerTest {
final String tenantCode = "root";
final Long environmentCode = 4L;
final Integer timeout = 5;
- final ImmutableMap<String, String> startParams = ImmutableMap.of("start",
"params");
+ final List<Property> startParams =
+ Collections.singletonList(new Property("start", Direct.IN,
DataType.VARCHAR, "params"));
final Integer expectedParallelismNumber = 6;
final int dryRun = 7;
final int testFlag = 0;
diff --git
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/ProjectParameterControllerTest.java
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/ProjectParameterControllerTest.java
index f1bd20bb23..ea8bbf67fd 100644
---
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/ProjectParameterControllerTest.java
+++
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/ProjectParameterControllerTest.java
@@ -22,6 +22,7 @@ import
org.apache.dolphinscheduler.api.service.impl.ProjectParameterServiceImpl;
import org.apache.dolphinscheduler.api.utils.Result;
import org.apache.dolphinscheduler.common.enums.UserType;
import org.apache.dolphinscheduler.dao.entity.User;
+import org.apache.dolphinscheduler.plugin.task.api.enums.DataType;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
@@ -48,8 +49,9 @@ public class ProjectParameterControllerTest {
User loginUser = getGeneralUser();
Mockito.when(projectParameterService.createProjectParameter(Mockito.any(),
Mockito.anyLong(), Mockito.any(),
- Mockito.any())).thenReturn(getSuccessResult());
- Result result =
projectParameterController.createProjectParameter(loginUser, 1, "key", "value");
+ Mockito.any(), Mockito.any())).thenReturn(getSuccessResult());
+ Result result =
projectParameterController.createProjectParameter(loginUser, 1, "key", "value",
+ DataType.VARCHAR.name());
Assertions.assertEquals(Status.SUCCESS.getCode(), result.getCode());
}
@@ -58,8 +60,9 @@ public class ProjectParameterControllerTest {
User loginUser = getGeneralUser();
Mockito.when(projectParameterService.updateProjectParameter(Mockito.any(),
Mockito.anyLong(), Mockito.anyLong(),
- Mockito.any(), Mockito.any())).thenReturn(getSuccessResult());
- Result result =
projectParameterController.updateProjectParameter(loginUser, 1, 1L, "key",
"value");
+ Mockito.any(), Mockito.any(),
Mockito.any())).thenReturn(getSuccessResult());
+ Result result =
projectParameterController.updateProjectParameter(loginUser, 1, 1L, "key",
"value",
+ DataType.LONG.name());
Assertions.assertEquals(Status.SUCCESS.getCode(), result.getCode());
}
@@ -88,8 +91,9 @@ public class ProjectParameterControllerTest {
User loginUser = getGeneralUser();
Mockito.when(projectParameterService.queryProjectParameterListPaging(Mockito.any(),
Mockito.anyLong(),
- Mockito.anyInt(), Mockito.anyInt(),
Mockito.any())).thenReturn(getSuccessResult());
- Result result =
projectParameterController.queryProjectParameterListPaging(loginUser, 1, "1",
1, 10);
+ Mockito.anyInt(), Mockito.anyInt(), Mockito.any(),
Mockito.any())).thenReturn(getSuccessResult());
+ Result result =
projectParameterController.queryProjectParameterListPaging(loginUser, 1, "1",
+ DataType.VARCHAR.name(), 1, 10);
Assertions.assertEquals(Status.SUCCESS.getCode(), result.getCode());
}
diff --git
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProjectParameterServiceTest.java
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProjectParameterServiceTest.java
index ca51690ce6..ef8ffd2768 100644
---
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProjectParameterServiceTest.java
+++
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProjectParameterServiceTest.java
@@ -36,6 +36,7 @@ import
org.apache.dolphinscheduler.dao.entity.ProjectParameter;
import org.apache.dolphinscheduler.dao.entity.User;
import org.apache.dolphinscheduler.dao.mapper.ProjectMapper;
import org.apache.dolphinscheduler.dao.mapper.ProjectParameterMapper;
+import org.apache.dolphinscheduler.plugin.task.api.enums.DataType;
import java.util.Collections;
@@ -76,7 +77,8 @@ public class ProjectParameterServiceTest {
// PERMISSION DENIED
when(projectService.hasProjectAndWritePerm(Mockito.any(),
Mockito.any(), Mockito.any(Result.class)))
.thenReturn(false);
- Result result =
projectParameterService.createProjectParameter(loginUser, projectCode, "key",
"value");
+ Result result =
projectParameterService.createProjectParameter(loginUser, projectCode, "key",
"value",
+ DataType.VARCHAR.name());
assertNull(result.getData());
assertNull(result.getCode());
assertNull(result.getMsg());
@@ -88,25 +90,29 @@ public class ProjectParameterServiceTest {
try (MockedStatic<CodeGenerateUtils> ignored =
Mockito.mockStatic(CodeGenerateUtils.class)) {
when(CodeGenerateUtils.genCode()).thenThrow(CodeGenerateUtils.CodeGenerateException.class);
- result = projectParameterService.createProjectParameter(loginUser,
projectCode, "key", "value");
+ result = projectParameterService.createProjectParameter(loginUser,
projectCode, "key", "value",
+ DataType.VARCHAR.name());
assertEquals(Status.CREATE_PROJECT_PARAMETER_ERROR.getCode(),
result.getCode());
}
// PROJECT_PARAMETER_ALREADY_EXISTS
when(projectMapper.queryByCode(projectCode)).thenReturn(getProject(projectCode));
when(projectParameterMapper.selectOne(Mockito.any())).thenReturn(getProjectParameter());
- result = projectParameterService.createProjectParameter(loginUser,
projectCode, "key", "value");
+ result = projectParameterService.createProjectParameter(loginUser,
projectCode, "key", "value",
+ DataType.VARCHAR.name());
assertEquals(Status.PROJECT_PARAMETER_ALREADY_EXISTS.getCode(),
result.getCode());
// INSERT DATA ERROR
when(projectParameterMapper.selectOne(Mockito.any())).thenReturn(null);
when(projectParameterMapper.insert(Mockito.any())).thenReturn(-1);
- result = projectParameterService.createProjectParameter(loginUser,
projectCode, "key1", "value");
+ result = projectParameterService.createProjectParameter(loginUser,
projectCode, "key1", "value",
+ DataType.VARCHAR.name());
assertEquals(Status.CREATE_PROJECT_PARAMETER_ERROR.getCode(),
result.getCode());
// SUCCESS
when(projectParameterMapper.insert(Mockito.any())).thenReturn(1);
- result = projectParameterService.createProjectParameter(loginUser,
projectCode, "key1", "value");
+ result = projectParameterService.createProjectParameter(loginUser,
projectCode, "key1", "value",
+ DataType.VARCHAR.name());
assertEquals(Status.SUCCESS.getCode(), result.getCode());
}
@@ -117,7 +123,8 @@ public class ProjectParameterServiceTest {
// NO PERMISSION
when(projectService.hasProjectAndWritePerm(Mockito.any(),
Mockito.any(), Mockito.any(Result.class)))
.thenReturn(false);
- Result result =
projectParameterService.updateProjectParameter(loginUser, projectCode, 1,
"key", "value");
+ Result result =
projectParameterService.updateProjectParameter(loginUser, projectCode, 1,
"key", "value",
+ DataType.VARCHAR.name());
assertNull(result.getData());
assertNull(result.getCode());
assertNull(result.getMsg());
@@ -127,28 +134,33 @@ public class ProjectParameterServiceTest {
when(projectService.hasProjectAndWritePerm(Mockito.any(),
Mockito.any(), Mockito.any(Result.class)))
.thenReturn(true);
when(projectParameterMapper.queryByCode(Mockito.anyLong())).thenReturn(null);
- result = projectParameterService.updateProjectParameter(loginUser,
projectCode, 1, "key", "value");
+ result = projectParameterService.updateProjectParameter(loginUser,
projectCode, 1, "key", "value",
+ DataType.VARCHAR.name());
assertEquals(Status.PROJECT_PARAMETER_NOT_EXISTS.getCode(),
result.getCode());
// PROJECT_PARAMETER_ALREADY_EXISTS
when(projectParameterMapper.queryByCode(Mockito.anyLong())).thenReturn(getProjectParameter());
when(projectParameterMapper.selectOne(Mockito.any())).thenReturn(getProjectParameter());
- result = projectParameterService.updateProjectParameter(loginUser,
projectCode, 1, "key", "value");
+ result = projectParameterService.updateProjectParameter(loginUser,
projectCode, 1, "key", "value",
+ DataType.VARCHAR.name());
assertEquals(Status.PROJECT_PARAMETER_ALREADY_EXISTS.getCode(),
result.getCode());
// PROJECT_UPDATE_ERROR
when(projectParameterMapper.selectOne(Mockito.any())).thenReturn(null);
when(projectParameterMapper.updateById(Mockito.any())).thenReturn(-1);
- result = projectParameterService.updateProjectParameter(loginUser,
projectCode, 1, "key1", "value");
+ result = projectParameterService.updateProjectParameter(loginUser,
projectCode, 1, "key1", "value",
+ DataType.VARCHAR.name());
assertEquals(Status.UPDATE_PROJECT_PARAMETER_ERROR.getCode(),
result.getCode());
// SUCCESS
when(projectParameterMapper.updateById(Mockito.any())).thenReturn(1);
- result = projectParameterService.updateProjectParameter(loginUser,
projectCode, 1, "key1", "value");
+ result = projectParameterService.updateProjectParameter(loginUser,
projectCode, 1, "key1", "value",
+ DataType.LONG.name());
assertEquals(Status.SUCCESS.getCode(), result.getCode());
ProjectParameter projectParameter = (ProjectParameter)
result.getData();
assertNotNull(projectParameter.getOperator());
assertNotNull(projectParameter.getUpdateTime());
+ assertEquals(DataType.LONG.name(),
projectParameter.getParamDataType());
}
@Test
@@ -223,7 +235,8 @@ public class ProjectParameterServiceTest {
.thenReturn(false);
Result result =
-
projectParameterService.queryProjectParameterListPaging(loginUser, projectCode,
pageSize, pageNo, null);
+
projectParameterService.queryProjectParameterListPaging(loginUser, projectCode,
pageSize, pageNo, null,
+ DataType.VARCHAR.name());
assertNull(result.getData());
assertNull(result.getCode());
assertNull(result.getMsg());
@@ -235,9 +248,10 @@ public class ProjectParameterServiceTest {
Page<ProjectParameter> page = new Page<>(pageNo, pageSize);
page.setRecords(Collections.singletonList(getProjectParameter()));
- when(projectParameterMapper.queryProjectParameterListPaging(any(),
anyLong(), any(), any())).thenReturn(page);
+ when(projectParameterMapper.queryProjectParameterListPaging(any(),
anyLong(), any(), any(), any()))
+ .thenReturn(page);
result =
projectParameterService.queryProjectParameterListPaging(loginUser, projectCode,
pageSize, pageNo,
- null);
+ null, null);
assertEquals(Status.SUCCESS.getCode(), result.getCode());
}
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProjectParameter.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProjectParameter.java
index 03e9140145..4343d07c29 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProjectParameter.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProjectParameter.java
@@ -55,6 +55,9 @@ public class ProjectParameter {
@TableField("param_value")
private String paramValue;
+ @TableField("param_data_type")
+ private String paramDataType;
+
private Date createTime;
private Date updateTime;
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProjectParameterMapper.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProjectParameterMapper.java
index 0e7810158c..3f700a9a84 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProjectParameterMapper.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProjectParameterMapper.java
@@ -38,7 +38,8 @@ public interface ProjectParameterMapper extends
BaseMapper<ProjectParameter> {
IPage<ProjectParameter>
queryProjectParameterListPaging(IPage<ProjectParameter> page,
@Param("projectCode") long projectCode,
@Param("projectParameterIds") List<Integer> projectParameterIds,
-
@Param("searchName") String searchName);
+
@Param("searchName") String searchName,
+
@Param("projectParameterDataType") String projectParameterDataType);
List<ProjectParameter> queryByProjectCode(@Param("projectCode") long
projectCode);
}
diff --git
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProjectParameterMapper.xml
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProjectParameterMapper.xml
index 5b22d40a81..4e1e972a04 100644
---
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProjectParameterMapper.xml
+++
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProjectParameterMapper.xml
@@ -19,7 +19,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper
namespace="org.apache.dolphinscheduler.dao.mapper.ProjectParameterMapper">
<sql id="baseSql">
- id, param_name, param_value, code, project_code, user_id, operator,
create_time, update_time
+ id, param_name, param_value, param_data_type, code, project_code,
user_id, operator, create_time, update_time
</sql>
<select id="queryByCode"
resultType="org.apache.dolphinscheduler.dao.entity.ProjectParameter">
@@ -51,7 +51,7 @@
<select id="queryProjectParameterListPaging"
resultType="org.apache.dolphinscheduler.dao.entity.ProjectParameter">
select
- pp.id, param_name, param_value, code, project_code, user_id, operator,
pp.create_time, pp.update_time,
+ pp.id, param_name, param_value, param_data_type, code, project_code,
user_id, operator, pp.create_time, pp.update_time,
u.user_name as create_user,
u2.user_name as modify_user
from t_ds_project_parameter pp
@@ -69,6 +69,9 @@
OR param_value LIKE concat('%', #{searchName}, '%')
)
</if>
+ <if test="projectParameterDataType!=null and projectParameterDataType
!= ''">
+ AND param_data_type = #{projectParameterDataType}
+ </if>
order by pp.update_time desc
</select>
diff --git
a/dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_h2.sql
b/dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_h2.sql
index 42c893bb05..a907ec69a1 100644
--- a/dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_h2.sql
+++ b/dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_h2.sql
@@ -667,6 +667,7 @@ CREATE TABLE t_ds_project_parameter
id int(11) NOT NULL AUTO_INCREMENT,
param_name varchar(255) NOT NULL,
param_value text NOT NULL,
+ param_data_type varchar(50) DEFAULT 'VARCHAR',
code bigint(20) NOT NULL,
project_code bigint(20) NOT NULL,
user_id int(11) DEFAULT NULL,
diff --git
a/dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_mysql.sql
b/dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_mysql.sql
index b30bc13887..3a4f17a357 100644
--- a/dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_mysql.sql
+++ b/dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_mysql.sql
@@ -668,6 +668,7 @@ CREATE TABLE `t_ds_project_parameter` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'key',
`param_name` varchar(255) NOT NULL COMMENT 'project parameter name',
`param_value` text NOT NULL COMMENT 'project parameter value',
+ `param_data_type` varchar(50) DEFAULT 'VARCHAR' COMMENT 'project parameter
data type',
`code` bigint(20) NOT NULL COMMENT 'encoding',
`project_code` bigint(20) NOT NULL COMMENT 'project code',
`user_id` int(11) DEFAULT NULL COMMENT 'creator id',
diff --git
a/dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_postgresql.sql
b/dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_postgresql.sql
index 2d224092c4..d314c6ef09 100644
---
a/dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_postgresql.sql
+++
b/dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_postgresql.sql
@@ -595,6 +595,7 @@ CREATE TABLE t_ds_project_parameter (
id int NOT NULL ,
param_name varchar(255) NOT NULL ,
param_value text NOT NULL ,
+ param_data_type varchar(50) DEFAULT 'VARCHAR',
code bigint NOT NULL,
project_code bigint NOT NULL,
user_id int DEFAULT NULL ,
diff --git
a/dolphinscheduler-dao/src/main/resources/sql/upgrade/3.2.2_schema/mysql/dolphinscheduler_ddl.sql
b/dolphinscheduler-dao/src/main/resources/sql/upgrade/3.2.2_schema/mysql/dolphinscheduler_ddl.sql
index d10ac6b710..000173b397 100644
---
a/dolphinscheduler-dao/src/main/resources/sql/upgrade/3.2.2_schema/mysql/dolphinscheduler_ddl.sql
+++
b/dolphinscheduler-dao/src/main/resources/sql/upgrade/3.2.2_schema/mysql/dolphinscheduler_ddl.sql
@@ -53,4 +53,6 @@ END;
d//
delimiter ;
CALL modify_data_t_ds_audit_log_input_entry;
-DROP PROCEDURE modify_data_t_ds_audit_log_input_entry;
\ No newline at end of file
+DROP PROCEDURE modify_data_t_ds_audit_log_input_entry;
+
+ALTER TABLE t_ds_project_parameter ADD `param_data_type` varchar (50) DEFAULT
'VARCHAR' COMMENT 'project parameter data type';
\ No newline at end of file
diff --git
a/dolphinscheduler-dao/src/main/resources/sql/upgrade/3.2.2_schema/postgresql/dolphinscheduler_ddl.sql
b/dolphinscheduler-dao/src/main/resources/sql/upgrade/3.2.2_schema/postgresql/dolphinscheduler_ddl.sql
index ee06588e58..4b4cb66651 100644
---
a/dolphinscheduler-dao/src/main/resources/sql/upgrade/3.2.2_schema/postgresql/dolphinscheduler_ddl.sql
+++
b/dolphinscheduler-dao/src/main/resources/sql/upgrade/3.2.2_schema/postgresql/dolphinscheduler_ddl.sql
@@ -56,4 +56,6 @@ $$ LANGUAGE plpgsql;
d//
select modify_data_t_ds_audit_log_input_entry();
-DROP FUNCTION IF EXISTS modify_data_t_ds_audit_log_input_entry();
\ No newline at end of file
+DROP FUNCTION IF EXISTS modify_data_t_ds_audit_log_input_entry();
+
+ALTER TABLE t_ds_project_parameter ADD COLUMN IF NOT EXISTS param_data_type
varchar(50) DEFAULT 'VARCHAR';
\ No newline at end of file
diff --git
a/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/ProjectParameterMapperTest.java
b/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/ProjectParameterMapperTest.java
index 48e51d9ca3..1c13d95a0e 100644
---
a/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/ProjectParameterMapperTest.java
+++
b/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/ProjectParameterMapperTest.java
@@ -89,7 +89,7 @@ public class ProjectParameterMapperTest extends BaseDaoTest {
insertOne(2, "name2", 2);
Page<ProjectParameter> page = new Page(1, 3);
- IPage<ProjectParameter> res =
projectParameterMapper.queryProjectParameterListPaging(page, 1, null, null);
+ IPage<ProjectParameter> res =
projectParameterMapper.queryProjectParameterListPaging(page, 1, null, null,
null);
Assertions.assertEquals(1, res.getRecords().size());
}
}
diff --git
a/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/expand/CuringParamsServiceImpl.java
b/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/expand/CuringParamsServiceImpl.java
index afcfae3fd6..5f042b7593 100644
---
a/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/expand/CuringParamsServiceImpl.java
+++
b/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/expand/CuringParamsServiceImpl.java
@@ -45,7 +45,9 @@ import
org.apache.dolphinscheduler.plugin.task.api.model.Property;
import
org.apache.dolphinscheduler.plugin.task.api.parameters.AbstractParameters;
import org.apache.dolphinscheduler.plugin.task.api.utils.MapUtils;
import org.apache.dolphinscheduler.plugin.task.api.utils.ParameterUtils;
+import org.apache.dolphinscheduler.plugin.task.api.utils.PropertyUtils;
+import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import java.util.Date;
@@ -54,6 +56,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.function.Function;
import java.util.stream.Collectors;
import javax.annotation.Nullable;
@@ -150,9 +153,11 @@ public class CuringParamsServiceImpl implements
CuringParamsService {
return new HashMap<>();
}
String startParamJson =
cmdParam.get(CommandKeyConstants.CMD_PARAM_START_PARAMS);
- Map<String, String> startParamMap = JSONUtils.toMap(startParamJson);
- return
startParamMap.entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey,
- entry -> new Property(entry.getKey(), Direct.IN,
DataType.VARCHAR, entry.getValue())));
+ List<Property> propertyList =
PropertyUtils.startParamsTransformPropertyList(startParamJson);
+ if (CollectionUtils.isEmpty(propertyList)) {
+ return new HashMap<>();
+ }
+ return
propertyList.stream().collect(Collectors.toMap(Property::getProp,
Function.identity()));
}
@Override
@@ -181,8 +186,7 @@ public class CuringParamsServiceImpl implements
CuringParamsService {
Map<String, Property> prepareParamsMap = new HashMap<>();
// assign value to definedParams here
- Map<String, String> globalParamsMap =
setGlobalParamsMap(processInstance);
- Map<String, Property> globalParams =
ParameterUtils.getUserDefParamsMap(globalParamsMap);
+ Map<String, Property> globalParams =
setGlobalParamsMap(processInstance);
// combining local and global parameters
Map<String, Property> localParams =
parameters.getInputLocalParametersMap();
@@ -287,15 +291,16 @@ public class CuringParamsServiceImpl implements
CuringParamsService {
Long.toString(taskInstance.getProcessInstance().getProcessDefinition().getProjectCode()));
return params;
}
- private Map<String, String> setGlobalParamsMap(ProcessInstance
processInstance) {
- Map<String, String> globalParamsMap = new HashMap<>(16);
+ private Map<String, Property> setGlobalParamsMap(ProcessInstance
processInstance) {
+ Map<String, Property> globalParamsMap = new HashMap<>(16);
// global params string
String globalParamsStr = processInstance.getGlobalParams();
if (globalParamsStr != null) {
List<Property> globalParamsList =
JSONUtils.toList(globalParamsStr, Property.class);
globalParamsMap
-
.putAll(globalParamsList.stream().collect(Collectors.toMap(Property::getProp,
Property::getValue)));
+ .putAll(globalParamsList.stream()
+ .collect(Collectors.toMap(Property::getProp,
Function.identity())));
}
return globalParamsMap;
}
@@ -323,7 +328,7 @@ public class CuringParamsServiceImpl implements
CuringParamsService {
projectParameterList.forEach(projectParameter -> {
Property property = new Property(projectParameter.getParamName(),
Direct.IN,
- DataType.VARCHAR,
+ Enum.valueOf(DataType.class,
projectParameter.getParamDataType()),
projectParameter.getParamValue());
result.put(projectParameter.getParamName(), property);
});
diff --git
a/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/utils/PropertyUtils.java
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/utils/PropertyUtils.java
new file mode 100644
index 0000000000..41c115ab0f
--- /dev/null
+++
b/dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/utils/PropertyUtils.java
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.dolphinscheduler.plugin.task.api.utils;
+
+import org.apache.dolphinscheduler.common.utils.JSONUtils;
+import org.apache.dolphinscheduler.plugin.task.api.enums.DataType;
+import org.apache.dolphinscheduler.plugin.task.api.enums.Direct;
+import org.apache.dolphinscheduler.plugin.task.api.model.Property;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import com.google.gson.JsonElement;
+import com.google.gson.JsonParser;
+
+/**
+ * property utils
+ */
+public class PropertyUtils {
+
+ private PropertyUtils() {
+ throw new IllegalStateException("PropertyUtils class");
+ }
+
+ /**
+ * startParams transform propertyList
+ *
+ * @param startParams startParams
+ * @return startParamList
+ */
+ public static List<Property> startParamsTransformPropertyList(String
startParams) {
+ List<Property> startParamList = null;
+ if (startParams != null) {
+ JsonElement jsonElement = JsonParser.parseString(startParams);
+ boolean isJson = jsonElement.isJsonObject();
+ if (isJson) {
+ Map<String, String> startParamMap =
JSONUtils.toMap(startParams);
+ startParamList = startParamMap.entrySet().stream()
+ .map(entry -> new Property(entry.getKey(), Direct.IN,
DataType.VARCHAR, entry.getValue()))
+ .collect(Collectors.toList());
+ } else {
+ startParamList = JSONUtils.toList(startParams, Property.class);
+ }
+ }
+ return startParamList;
+ }
+
+}
diff --git a/dolphinscheduler-ui/src/locales/en_US/project.ts
b/dolphinscheduler-ui/src/locales/en_US/project.ts
index 5e5ee4b2a9..68eb7b3102 100644
--- a/dolphinscheduler-ui/src/locales/en_US/project.ts
+++ b/dolphinscheduler-ui/src/locales/en_US/project.ts
@@ -930,12 +930,14 @@ export default {
code: 'Parameter Code',
name: 'Parameter Name',
value: 'Parameter Value',
+ data_type: 'Parameter Data Type',
create_user: 'Create User',
modify_user: 'Modify User',
create_time: 'Create Time',
update_time: 'Update Time',
name_tips: 'Please enter your parameter name',
value_tips: 'Please enter your parameter value',
+ data_type_tips: 'Please choose your parameter data type',
operation: 'Operation',
edit: 'Edit',
delete: 'Delete',
diff --git a/dolphinscheduler-ui/src/locales/zh_CN/project.ts
b/dolphinscheduler-ui/src/locales/zh_CN/project.ts
index 85de0122fb..e1bfd6f672 100644
--- a/dolphinscheduler-ui/src/locales/zh_CN/project.ts
+++ b/dolphinscheduler-ui/src/locales/zh_CN/project.ts
@@ -900,12 +900,14 @@ export default {
code: '参数编码',
name: '参数名称',
value: '参数值',
+ data_type: '参数类型',
create_user: '创建用户',
modify_user: '修改用户',
create_time: '创建时间',
update_time: '更新时间',
name_tips: '请输入参数名称',
value_tips: '请输入参数值',
+ data_type_tips: '请选择参数类型',
operation: '操作',
edit: '编辑',
delete: '删除',
diff --git
a/dolphinscheduler-ui/src/service/modules/projects-parameter/types.ts
b/dolphinscheduler-ui/src/service/modules/projects-parameter/types.ts
index 9e0f747136..0e2a9c76bb 100644
--- a/dolphinscheduler-ui/src/service/modules/projects-parameter/types.ts
+++ b/dolphinscheduler-ui/src/service/modules/projects-parameter/types.ts
@@ -19,6 +19,7 @@ interface ListReq {
pageNo: number
pageSize: number
searchVal?: string
+ projectParameterDataType?: string
}
interface ProjectParameterCodeReq {
@@ -28,6 +29,7 @@ interface ProjectParameterCodeReq {
interface ProjectParameterReq {
projectParameterName: string
projectParameterValue: string
+ projectParameterDataType: string
}
interface UpdateProjectParameterReq extends ProjectParameterReq {
@@ -39,6 +41,7 @@ interface ProjectParameterList {
code: number
name: string
value: string
+ data_type: string
createTime: string
updateTime: string
}
diff --git
a/dolphinscheduler-ui/src/views/projects/parameter/components/parameter-modal.tsx
b/dolphinscheduler-ui/src/views/projects/parameter/components/parameter-modal.tsx
index c69ae864b2..d0e20569d1 100644
---
a/dolphinscheduler-ui/src/views/projects/parameter/components/parameter-modal.tsx
+++
b/dolphinscheduler-ui/src/views/projects/parameter/components/parameter-modal.tsx
@@ -23,9 +23,10 @@ import {
watch
} from 'vue'
import Modal from '@/components/modal'
-import { NForm, NFormItem, NInput } from 'naive-ui'
+import { NForm, NFormItem, NInput, NSelect } from 'naive-ui'
import { useModal } from './use-modal'
import { useI18n } from 'vue-i18n'
+import { DATA_TYPES_MAP, DEFAULT_DATA_TYPE } from
"@/views/projects/parameter/data_type"
const ParameterModal = defineComponent({
name: 'ParameterModal',
@@ -52,9 +53,11 @@ const ParameterModal = defineComponent({
if (props.statusRef === 0) {
variables.model.projectParameterName = ''
variables.model.projectParameterValue = ''
+ variables.model.projectParameterDataType = DEFAULT_DATA_TYPE
} else {
variables.model.projectParameterName = props.row.paramName
variables.model.projectParameterValue = props.row.paramValue
+ variables.model.projectParameterDataType = props.row.paramDataType
}
ctx.emit('cancelModal', props.showModalRef)
}
@@ -78,10 +81,12 @@ const ParameterModal = defineComponent({
if (props.statusRef === 0) {
variables.model.projectParameterName = ''
variables.model.projectParameterValue = ''
+ variables.model.projectParameterDataType = DEFAULT_DATA_TYPE
} else {
variables.model.code = props.row.code
variables.model.projectParameterName = props.row.paramName
variables.model.projectParameterValue = props.row.paramValue
+ variables.model.projectParameterDataType = props.row.paramDataType
}
}
)
@@ -92,6 +97,7 @@ const ParameterModal = defineComponent({
variables.model.code = props.row.code
variables.model.projectParameterName = props.row.paramName
variables.model.projectParameterValue = props.row.paramValue
+ variables.model.projectParameterDataType = props.row.paramDataType
}
)
@@ -112,7 +118,8 @@ const ParameterModal = defineComponent({
onConfirm={this.confirmModal}
confirmDisabled={
!this.model.projectParameterName ||
- !this.model.projectParameterValue
+ !this.model.projectParameterValue ||
+ !this.model.projectParameterDataType
}
confirmClassName='btn-submit'
cancelClassName='btn-cancel'
@@ -135,6 +142,15 @@ const ParameterModal = defineComponent({
v-model={[this.model.projectParameterValue, 'value']}
/>
</NFormItem>
+ <NFormItem label={t('project.parameter.data_type')}
path='data_type'>
+ <NSelect
+ placeholder={t('project.parameter.data_type_tips')}
+ options={Object.keys(DATA_TYPES_MAP).map((item) => {
+ return { value: item, label: item }
+ })}
+ v-model={[this.model.projectParameterDataType, 'value']}
+ />
+ </NFormItem>
</NForm>
)
}}
diff --git
a/dolphinscheduler-ui/src/views/projects/parameter/components/use-modal.ts
b/dolphinscheduler-ui/src/views/projects/parameter/components/use-modal.ts
index 56b5186846..50dae38a49 100644
--- a/dolphinscheduler-ui/src/views/projects/parameter/components/use-modal.ts
+++ b/dolphinscheduler-ui/src/views/projects/parameter/components/use-modal.ts
@@ -27,6 +27,7 @@ import {
UpdateProjectParameterReq
} from '@/service/modules/projects-parameter/types'
import { useRouter } from 'vue-router'
+import { DEFAULT_DATA_TYPE } from "@/views/projects/parameter/data_type";
export function useModal(
props: any,
@@ -41,7 +42,8 @@ export function useModal(
model: {
code: ref<number>(-1),
projectParameterName: ref(''),
- projectParameterValue: ref('')
+ projectParameterValue: ref(''),
+ projectParameterDataType: ref(DEFAULT_DATA_TYPE)
},
saving: false,
rules: {
@@ -62,6 +64,15 @@ export function useModal(
return new Error(t('project.parameter.value_tips'))
}
}
+ },
+ data_type: {
+ required: true,
+ trigger: ['input', 'blur'],
+ validator() {
+ if (variables.model.projectParameterDataType === '') {
+ return new Error(t('project.parameter.data_type_tips'))
+ }
+ }
}
}
})
@@ -83,12 +94,14 @@ export function useModal(
const submitModal = () => {
const data: ProjectParameterReq = {
projectParameterName: variables.model.projectParameterName,
- projectParameterValue: variables.model.projectParameterValue
+ projectParameterValue: variables.model.projectParameterValue,
+ projectParameterDataType: variables.model.projectParameterDataType
}
createProjectParameter(data, variables.projectCode).then(() => {
variables.model.projectParameterName = ''
variables.model.projectParameterValue = ''
+ variables.model.projectParameterDataType = DEFAULT_DATA_TYPE
ctx.emit('confirmModal', props.showModalRef)
})
}
@@ -97,7 +110,8 @@ export function useModal(
const data: UpdateProjectParameterReq = {
code: variables.model.code,
projectParameterName: variables.model.projectParameterName,
- projectParameterValue: variables.model.projectParameterValue
+ projectParameterValue: variables.model.projectParameterValue,
+ projectParameterDataType: variables.model.projectParameterDataType
}
updateProjectParameter(data, variables.projectCode).then(() => {
diff --git
a/dolphinscheduler-ui/src/service/modules/projects-parameter/types.ts
b/dolphinscheduler-ui/src/views/projects/parameter/data_type.ts
similarity index 51%
copy from dolphinscheduler-ui/src/service/modules/projects-parameter/types.ts
copy to dolphinscheduler-ui/src/views/projects/parameter/data_type.ts
index 9e0f747136..1d90384436 100644
--- a/dolphinscheduler-ui/src/service/modules/projects-parameter/types.ts
+++ b/dolphinscheduler-ui/src/views/projects/parameter/data_type.ts
@@ -15,48 +15,40 @@
* limitations under the License.
*/
-interface ListReq {
- pageNo: number
- pageSize: number
- searchVal?: string
+export const DATA_TYPES_MAP = {
+ VARCHAR: {
+ alias: 'VARCHAR'
+ },
+ INTEGER: {
+ alias: 'INTEGER'
+ },
+ LONG: {
+ alias: 'LONG'
+ },
+ FLOAT: {
+ alias: 'FLOAT'
+ },
+ DOUBLE: {
+ alias: 'DOUBLE'
+ },
+ DATE: {
+ alias: 'DATE'
+ },
+ TIME: {
+ alias: 'TIME'
+ },
+ TIMESTAMP: {
+ alias: 'TIMESTAMP'
+ },
+ BOOLEAN: {
+ alias: 'BOOLEAN'
+ },
+ LIST: {
+ alias: 'LIST'
+ },
+ FILE: {
+ alias: 'FILE'
+ }
}
-interface ProjectParameterCodeReq {
- code: number
-}
-
-interface ProjectParameterReq {
- projectParameterName: string
- projectParameterValue: string
-}
-
-interface UpdateProjectParameterReq extends ProjectParameterReq {
- code: number
-}
-
-interface ProjectParameterList {
- id: number
- code: number
- name: string
- value: string
- createTime: string
- updateTime: string
-}
-
-interface ProjectParameterRes {
- totalList: ProjectParameterList[]
- total: number
- totalPage: number
- pageSize: number
- currentPage: number
- start: number
-}
-
-export {
- ListReq,
- ProjectParameterCodeReq,
- ProjectParameterReq,
- UpdateProjectParameterReq,
- ProjectParameterRes,
- ProjectParameterList
-}
+export const DEFAULT_DATA_TYPE = 'VARCHAR'
diff --git a/dolphinscheduler-ui/src/views/projects/parameter/index.tsx
b/dolphinscheduler-ui/src/views/projects/parameter/index.tsx
index f8d0719f18..6b9519830b 100644
--- a/dolphinscheduler-ui/src/views/projects/parameter/index.tsx
+++ b/dolphinscheduler-ui/src/views/projects/parameter/index.tsx
@@ -21,7 +21,8 @@ import {
NInput,
NPagination,
NSpace,
- NButton
+ NButton,
+ NSelect
} from 'naive-ui'
import { defineComponent, onMounted, toRefs, watch } from 'vue'
import { useI18n } from 'vue-i18n'
@@ -29,6 +30,7 @@ import { useTable } from
'@/views/projects/parameter/use-table'
import Card from '@/components/card'
import ParameterModal from
'@/views/projects/parameter/components/parameter-modal'
import { SearchOutlined } from '@vicons/antd'
+import { DATA_TYPES_MAP } from "@/views/projects/parameter/data_type"
export default defineComponent({
name: 'ProjectParameterList',
@@ -40,6 +42,7 @@ export default defineComponent({
pageSize: variables.pageSize,
pageNo: variables.page,
searchVal: variables.searchVal,
+ projectParameterDataType: variables.projectParameterDataType,
projectCode: variables.projectCode
})
}
@@ -116,6 +119,16 @@ export default defineComponent({
v-model={[this.searchVal, 'value']}
placeholder={t('project.parameter.name')}
/>
+ <NSelect
+ v-model={[this.projectParameterDataType, 'value']}
+ size='small'
+ options={Object.keys(DATA_TYPES_MAP).map((item) => {
+ return { value: item, label: item }
+ })}
+ placeholder={t('project.parameter.data_type_tips')}
+ style={{ width: '180px' }}
+ clearable
+ />
<NButton size='small' type='primary' onClick={handleSearch}>
<NIcon>
<SearchOutlined />
diff --git a/dolphinscheduler-ui/src/views/projects/parameter/use-table.ts
b/dolphinscheduler-ui/src/views/projects/parameter/use-table.ts
index 9d0bf35dcd..6d98a7e163 100644
--- a/dolphinscheduler-ui/src/views/projects/parameter/use-table.ts
+++ b/dolphinscheduler-ui/src/views/projects/parameter/use-table.ts
@@ -45,6 +45,7 @@ export function useTable() {
page: ref(1),
pageSize: ref(10),
searchVal: ref(),
+ projectParameterDataType: ref(),
totalPage: ref(1),
showRef: ref(false),
statusRef: ref(0),
@@ -69,6 +70,11 @@ export function useTable() {
key: 'paramValue',
...COLUMN_WIDTH_CONFIG['name']
},
+ {
+ title: t('project.parameter.data_type'),
+ key: 'paramDataType',
+ ...COLUMN_WIDTH_CONFIG['name']
+ },
{
title: t('project.parameter.create_user'),
key: 'createUser',
@@ -192,7 +198,8 @@ export function useTable() {
getTableData({
pageSize: variables.pageSize,
pageNo: variables.page,
- searchVal: variables.searchVal
+ searchVal: variables.searchVal,
+ projectParameterDataType: variables.projectParameterDataType
})
})
}
diff --git
a/dolphinscheduler-ui/src/views/projects/workflow/components/dag/dag-save-modal.tsx
b/dolphinscheduler-ui/src/views/projects/workflow/components/dag/dag-save-modal.tsx
index 9a55f8d3b2..bfd76e79b1 100644
---
a/dolphinscheduler-ui/src/views/projects/workflow/components/dag/dag-save-modal.tsx
+++
b/dolphinscheduler-ui/src/views/projects/workflow/components/dag/dag-save-modal.tsx
@@ -154,7 +154,8 @@ export default defineComponent({
formValue.value.globalParams = process.globalParamList.map((param) =>
({
key: param.prop,
value: param.value,
- direct: param.direct
+ direct: param.direct,
+ type: param.type
}))
}
}
@@ -239,6 +240,7 @@ export default defineComponent({
return {
key: '',
direct: 'IN',
+ type: 'VARCHAR',
value: ''
}
}}
@@ -246,16 +248,16 @@ export default defineComponent({
>
{{
default: (param: {
- value: { key: string; direct: string; value: string }
+ value: { key: string; direct: string; type: string; value:
string }
}) => (
<NGrid xGap={12} cols={24}>
- <NGridItem span={9}>
+ <NGridItem span={6}>
<NInput
v-model:value={param.value.key}
placeholder={t('project.dag.key')}
/>
</NGridItem>
- <NGridItem span={6}>
+ <NGridItem span={5}>
<NSelect
options={[
{ value: 'IN', label: 'IN' },
@@ -265,7 +267,25 @@ export default defineComponent({
defaultValue={'IN'}
/>
</NGridItem>
- <NGridItem span={9}>
+ <NGridItem span={7}>
+ <NSelect
+ options={[
+ { value: 'VARCHAR', label: 'VARCHAR' },
+ { value: 'INTEGER', label: 'INTEGER' },
+ { value: 'LONG', label: 'LONG' },
+ { value: 'FLOAT', label: 'FLOAT' },
+ { value: 'DOUBLE', label: 'DOUBLE' },
+ { value: 'DATE', label: 'DATE' },
+ { value: 'TIME', label: 'TIME' },
+ { value: 'BOOLEAN', label: 'BOOLEAN' },
+ { value: 'LIST', label: 'LIST' },
+ { value: 'FILE', label: 'FILE' }
+ ]}
+ v-model:value={param.value.type}
+ defaultValue={'VARCHAR'}
+ />
+ </NGridItem>
+ <NGridItem span={6}>
<NInput
v-model:value={param.value.value}
placeholder={t('project.dag.value')}
diff --git
a/dolphinscheduler-ui/src/views/projects/workflow/components/dag/types.ts
b/dolphinscheduler-ui/src/views/projects/workflow/components/dag/types.ts
index 09869407db..c80f2f9216 100644
--- a/dolphinscheduler-ui/src/views/projects/workflow/components/dag/types.ts
+++ b/dolphinscheduler-ui/src/views/projects/workflow/components/dag/types.ts
@@ -138,6 +138,7 @@ export interface Coordinate {
export interface GlobalParam {
key: string
direct: string
+ type: string
value: string
}
diff --git
a/dolphinscheduler-ui/src/views/projects/workflow/definition/components/start-modal.tsx
b/dolphinscheduler-ui/src/views/projects/workflow/definition/components/start-modal.tsx
index 8a4b07b4bc..2bce9764d4 100644
---
a/dolphinscheduler-ui/src/views/projects/workflow/definition/components/start-modal.tsx
+++
b/dolphinscheduler-ui/src/views/projects/workflow/definition/components/start-modal.tsx
@@ -34,7 +34,6 @@ import { useModal } from './use-modal'
import {
NForm,
NFormItem,
- NButton,
NIcon,
NInput,
NSpace,
@@ -45,13 +44,14 @@ import {
NCheckbox,
NDatePicker,
NRadioButton,
- NInputNumber
+ NInputNumber,
+ NDynamicInput,
+ NGrid,
+ NGridItem
} from 'naive-ui'
import {
ArrowDownOutlined,
- ArrowUpOutlined,
- DeleteOutlined,
- PlusCircleOutlined
+ ArrowUpOutlined
} from '@vicons/antd'
import { IDefinitionData } from '../types'
import styles from '../index.module.scss'
@@ -580,50 +580,67 @@ export default defineComponent({
label={t('project.workflow.startup_parameter')}
path='startup_parameter'
>
- {this.startParamsList.length === 0 ? (
- <NButton text type='primary' onClick={this.addStartParams}>
- <NIcon>
- <PlusCircleOutlined />
- </NIcon>
- </NButton>
- ) : (
- <NSpace vertical>
- {this.startParamsList.map((item, index) => (
- <NSpace class={styles.startup} key={Date.now() + index}>
- <NInput
- allowInput={this.trim}
- pair
- separator=':'
- placeholder={['prop', 'value']}
- defaultValue={[item.prop, item.value]}
- onUpdateValue={(param) =>
- this.updateParamsList(index, param)
- }
- />
- <NButton
- text
- type='error'
- onClick={() => this.removeStartParams(index)}
- class='btn-delete-custom-parameter'
- >
- <NIcon>
- <DeleteOutlined />
- </NIcon>
- </NButton>
- <NButton
- text
- type='primary'
- onClick={this.addStartParams}
- class='btn-create-custom-parameter'
- >
- <NIcon>
- <PlusCircleOutlined />
- </NIcon>
- </NButton>
- </NSpace>
- ))}
- </NSpace>
- )}
+ <NDynamicInput
+ v-model:value={this.startParamsList}
+ onCreate={() => {
+ return {
+ key: '',
+ direct: 'IN',
+ type: 'VARCHAR',
+ value: ''
+ }
+ }}
+ class='input-startup-params'
+ >
+ {{
+ default: (param: {
+ value: { prop: string; direct: string; type: string; value:
string }
+ }) => (
+ <NGrid xGap={12} cols={24}>
+ <NGridItem span={6}>
+ <NInput
+ v-model:value={param.value.prop}
+ placeholder={t('project.dag.key')}
+ />
+ </NGridItem>
+ <NGridItem span={5}>
+ <NSelect
+ options={[
+ { value: 'IN', label: 'IN' },
+ { value: 'OUT', label: 'OUT' }
+ ]}
+ v-model:value={param.value.direct}
+ defaultValue={'IN'}
+ />
+ </NGridItem>
+ <NGridItem span={7}>
+ <NSelect
+ options={[
+ { value: 'VARCHAR', label: 'VARCHAR' },
+ { value: 'INTEGER', label: 'INTEGER' },
+ { value: 'LONG', label: 'LONG' },
+ { value: 'FLOAT', label: 'FLOAT' },
+ { value: 'DOUBLE', label: 'DOUBLE' },
+ { value: 'DATE', label: 'DATE' },
+ { value: 'TIME', label: 'TIME' },
+ { value: 'BOOLEAN', label: 'BOOLEAN' },
+ { value: 'LIST', label: 'LIST' },
+ { value: 'FILE', label: 'FILE' }
+ ]}
+ v-model:value={param.value.type}
+ defaultValue={'VARCHAR'}
+ />
+ </NGridItem>
+ <NGridItem span={6}>
+ <NInput
+ v-model:value={param.value.value}
+ placeholder={t('project.dag.value')}
+ />
+ </NGridItem>
+ </NGrid>
+ )
+ }}
+ </NDynamicInput>
</NFormItem>
<NFormItem
label={t('project.workflow.whether_dry_run')}
diff --git
a/dolphinscheduler-ui/src/views/projects/workflow/definition/components/use-modal.ts
b/dolphinscheduler-ui/src/views/projects/workflow/definition/components/use-modal.ts
index 100940ea14..479ad71505 100644
---
a/dolphinscheduler-ui/src/views/projects/workflow/definition/components/use-modal.ts
+++
b/dolphinscheduler-ui/src/views/projects/workflow/definition/components/use-modal.ts
@@ -119,14 +119,8 @@ export function useModal(
})
}
- const startParams = {} as any
- for (const item of variables.startParamsList) {
- if (item.value !== '') {
- startParams[item.prop] = item.value
- }
- }
- params.startParams = !_.isEmpty(startParams)
- ? JSON.stringify(startParams)
+ params.startParams = !_.isEmpty(variables.startParamsList)
+ ? JSON.stringify(variables.startParamsList)
: ''
await startProcessInstance(params, variables.projectCode)
window.$message.success(t('project.workflow.success'))
diff --git
a/dolphinscheduler-ui/src/views/projects/workflow/definition/create/index.tsx
b/dolphinscheduler-ui/src/views/projects/workflow/definition/create/index.tsx
index 258d7b8f42..e18e798595 100644
---
a/dolphinscheduler-ui/src/views/projects/workflow/definition/create/index.tsx
+++
b/dolphinscheduler-ui/src/views/projects/workflow/definition/create/index.tsx
@@ -59,7 +59,7 @@ export default defineComponent({
prop: p.key,
value: p.value,
direct: p.direct,
- type: 'VARCHAR'
+ type: p.type
}
})
diff --git
a/dolphinscheduler-ui/src/views/projects/workflow/definition/detail/index.tsx
b/dolphinscheduler-ui/src/views/projects/workflow/definition/detail/index.tsx
index d337f5f02e..979be030ca 100644
---
a/dolphinscheduler-ui/src/views/projects/workflow/definition/detail/index.tsx
+++
b/dolphinscheduler-ui/src/views/projects/workflow/definition/detail/index.tsx
@@ -85,7 +85,7 @@ export default defineComponent({
prop: p.key,
value: p.value,
direct: p.direct,
- type: 'VARCHAR'
+ type: p.type
}
})
diff --git
a/dolphinscheduler-ui/src/views/projects/workflow/instance/detail/index.tsx
b/dolphinscheduler-ui/src/views/projects/workflow/instance/detail/index.tsx
index 5f416c3654..2b87d17d33 100644
--- a/dolphinscheduler-ui/src/views/projects/workflow/instance/detail/index.tsx
+++ b/dolphinscheduler-ui/src/views/projects/workflow/instance/detail/index.tsx
@@ -82,7 +82,7 @@ export default defineComponent({
prop: p.key,
value: p.value,
direct: p.direct,
- type: 'VARCHAR'
+ type: p.type
}
})