|
|
@ -17,8 +17,15 @@ |
|
|
|
|
|
|
|
|
|
|
|
package org.apache.dolphinscheduler.service.expand; |
|
|
|
package org.apache.dolphinscheduler.service.expand; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import static org.apache.dolphinscheduler.plugin.task.api.TaskConstants.PARAMETER_PROJECT_CODE; |
|
|
|
|
|
|
|
import static org.apache.dolphinscheduler.plugin.task.api.TaskConstants.PARAMETER_PROJECT_NAME; |
|
|
|
|
|
|
|
import static org.apache.dolphinscheduler.plugin.task.api.TaskConstants.PARAMETER_TASK_DEFINITION_CODE; |
|
|
|
|
|
|
|
import static org.apache.dolphinscheduler.plugin.task.api.TaskConstants.PARAMETER_TASK_DEFINITION_NAME; |
|
|
|
import static org.apache.dolphinscheduler.plugin.task.api.TaskConstants.PARAMETER_TASK_EXECUTE_PATH; |
|
|
|
import static org.apache.dolphinscheduler.plugin.task.api.TaskConstants.PARAMETER_TASK_EXECUTE_PATH; |
|
|
|
import static org.apache.dolphinscheduler.plugin.task.api.TaskConstants.PARAMETER_TASK_INSTANCE_ID; |
|
|
|
import static org.apache.dolphinscheduler.plugin.task.api.TaskConstants.PARAMETER_TASK_INSTANCE_ID; |
|
|
|
|
|
|
|
import static org.apache.dolphinscheduler.plugin.task.api.TaskConstants.PARAMETER_WORKFLOW_DEFINITION_CODE; |
|
|
|
|
|
|
|
import static org.apache.dolphinscheduler.plugin.task.api.TaskConstants.PARAMETER_WORKFLOW_DEFINITION_NAME; |
|
|
|
|
|
|
|
import static org.apache.dolphinscheduler.plugin.task.api.TaskConstants.PARAMETER_WORKFLOW_INSTANCE_ID; |
|
|
|
|
|
|
|
|
|
|
|
import org.apache.dolphinscheduler.common.constants.Constants; |
|
|
|
import org.apache.dolphinscheduler.common.constants.Constants; |
|
|
|
import org.apache.dolphinscheduler.common.constants.DateConstants; |
|
|
|
import org.apache.dolphinscheduler.common.constants.DateConstants; |
|
|
@ -123,7 +130,7 @@ public class CuringGlobalParams implements CuringParamsService { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* the global parameters and local parameters used in the worker will be prepared here. |
|
|
|
* the global parameters and local parameters used in the worker will be prepared here, and built-in parameters. |
|
|
|
* |
|
|
|
* |
|
|
|
* @param taskInstance |
|
|
|
* @param taskInstance |
|
|
|
* @param parameters |
|
|
|
* @param parameters |
|
|
@ -137,8 +144,6 @@ public class CuringGlobalParams implements CuringParamsService { |
|
|
|
// assign value to definedParams here
|
|
|
|
// assign value to definedParams here
|
|
|
|
Map<String, String> globalParamsMap = setGlobalParamsMap(processInstance); |
|
|
|
Map<String, String> globalParamsMap = setGlobalParamsMap(processInstance); |
|
|
|
Map<String, Property> globalParams = ParamUtils.getUserDefParamsMap(globalParamsMap); |
|
|
|
Map<String, Property> globalParams = ParamUtils.getUserDefParamsMap(globalParamsMap); |
|
|
|
CommandType commandType = processInstance.getCmdTypeIfComplement(); |
|
|
|
|
|
|
|
Date scheduleTime = processInstance.getScheduleTime(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// combining local and global parameters
|
|
|
|
// combining local and global parameters
|
|
|
|
Map<String, Property> localParams = parameters.getInputLocalParametersMap(); |
|
|
|
Map<String, Property> localParams = parameters.getInputLocalParametersMap(); |
|
|
@ -147,24 +152,18 @@ public class CuringGlobalParams implements CuringParamsService { |
|
|
|
parameters.setVarPool(taskInstance.getVarPool()); |
|
|
|
parameters.setVarPool(taskInstance.getVarPool()); |
|
|
|
Map<String, Property> varParams = parameters.getVarPoolMap(); |
|
|
|
Map<String, Property> varParams = parameters.getVarPoolMap(); |
|
|
|
|
|
|
|
|
|
|
|
if (MapUtils.isEmpty(globalParams) && MapUtils.isEmpty(localParams) && MapUtils.isEmpty(varParams)) { |
|
|
|
|
|
|
|
return null; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
// if it is a complement,
|
|
|
|
// if it is a complement,
|
|
|
|
// you need to pass in the task instance id to locate the time
|
|
|
|
// you need to pass in the task instance id to locate the time
|
|
|
|
// of the process instance complement
|
|
|
|
// of the process instance complement
|
|
|
|
Map<String, String> cmdParam = JSONUtils.toMap(processInstance.getCommandParam()); |
|
|
|
Map<String, String> cmdParam = JSONUtils.toMap(processInstance.getCommandParam()); |
|
|
|
String timeZone = cmdParam.get(Constants.SCHEDULE_TIMEZONE); |
|
|
|
String timeZone = cmdParam.get(Constants.SCHEDULE_TIMEZONE); |
|
|
|
Map<String, String> params = BusinessTimeUtils.getBusinessTime(commandType, scheduleTime, timeZone); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (MapUtils.isNotEmpty(globalParamsMap)) { |
|
|
|
// built-in params
|
|
|
|
params.putAll(globalParamsMap); |
|
|
|
Map<String, String> params = setBuiltInParamsMap(taskInstance, timeZone); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(taskInstance.getExecutePath())) { |
|
|
|
if (MapUtils.isNotEmpty(params)) { |
|
|
|
params.put(PARAMETER_TASK_EXECUTE_PATH, taskInstance.getExecutePath()); |
|
|
|
globalParams.putAll(ParamUtils.getUserDefParamsMap(params)); |
|
|
|
} |
|
|
|
} |
|
|
|
params.put(PARAMETER_TASK_INSTANCE_ID, Integer.toString(taskInstance.getId())); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (MapUtils.isNotEmpty(varParams)) { |
|
|
|
if (MapUtils.isNotEmpty(varParams)) { |
|
|
|
globalParams.putAll(varParams); |
|
|
|
globalParams.putAll(varParams); |
|
|
@ -206,6 +205,33 @@ public class CuringGlobalParams implements CuringParamsService { |
|
|
|
return globalParams; |
|
|
|
return globalParams; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* build all built-in parameters |
|
|
|
|
|
|
|
* @param taskInstance |
|
|
|
|
|
|
|
* @param timeZone |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
private Map<String, String> setBuiltInParamsMap(@NonNull TaskInstance taskInstance, String timeZone) { |
|
|
|
|
|
|
|
CommandType commandType = taskInstance.getProcessInstance().getCmdTypeIfComplement(); |
|
|
|
|
|
|
|
Date scheduleTime = taskInstance.getProcessInstance().getScheduleTime(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Map<String, String> params = BusinessTimeUtils.getBusinessTime(commandType, scheduleTime, timeZone); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(taskInstance.getExecutePath())) { |
|
|
|
|
|
|
|
params.put(PARAMETER_TASK_EXECUTE_PATH, taskInstance.getExecutePath()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
params.put(PARAMETER_TASK_INSTANCE_ID, Integer.toString(taskInstance.getId())); |
|
|
|
|
|
|
|
params.put(PARAMETER_TASK_DEFINITION_NAME, taskInstance.getTaskDefine().getName()); |
|
|
|
|
|
|
|
params.put(PARAMETER_TASK_DEFINITION_CODE, Long.toString(taskInstance.getTaskDefine().getCode())); |
|
|
|
|
|
|
|
params.put(PARAMETER_WORKFLOW_INSTANCE_ID, Integer.toString(taskInstance.getProcessInstance().getId())); |
|
|
|
|
|
|
|
params.put(PARAMETER_WORKFLOW_DEFINITION_NAME, |
|
|
|
|
|
|
|
taskInstance.getProcessInstance().getProcessDefinition().getName()); |
|
|
|
|
|
|
|
params.put(PARAMETER_WORKFLOW_DEFINITION_CODE, |
|
|
|
|
|
|
|
Long.toString(taskInstance.getProcessInstance().getProcessDefinition().getCode())); |
|
|
|
|
|
|
|
params.put(PARAMETER_PROJECT_NAME, taskInstance.getProcessInstance().getProcessDefinition().getProjectName()); |
|
|
|
|
|
|
|
params.put(PARAMETER_PROJECT_CODE, |
|
|
|
|
|
|
|
Long.toString(taskInstance.getProcessInstance().getProcessDefinition().getProjectCode())); |
|
|
|
|
|
|
|
return params; |
|
|
|
|
|
|
|
} |
|
|
|
private Map<String, String> setGlobalParamsMap(ProcessInstance processInstance) { |
|
|
|
private Map<String, String> setGlobalParamsMap(ProcessInstance processInstance) { |
|
|
|
Map<String, String> globalParamsMap = new HashMap<>(16); |
|
|
|
Map<String, String> globalParamsMap = new HashMap<>(16); |
|
|
|
|
|
|
|
|
|
|
|