|
@@ -22,6 +22,8 @@ import org.apache.dolphinscheduler.common.enums.ExecutionStatus;
|
|
|
import org.apache.dolphinscheduler.common.enums.TaskType;
|
|
|
import org.apache.dolphinscheduler.common.enums.UdfType;
|
|
|
import org.apache.dolphinscheduler.common.model.TaskNode;
|
|
|
+import org.apache.dolphinscheduler.common.process.ResourceInfo;
|
|
|
+import org.apache.dolphinscheduler.common.task.AbstractParameters;
|
|
|
import org.apache.dolphinscheduler.common.task.datax.DataxParameters;
|
|
|
import org.apache.dolphinscheduler.common.task.procedure.ProcedureParameters;
|
|
|
import org.apache.dolphinscheduler.common.task.sql.SqlParameters;
|
|
@@ -29,10 +31,8 @@ import org.apache.dolphinscheduler.common.thread.Stopper;
|
|
|
import org.apache.dolphinscheduler.common.utils.EnumUtils;
|
|
|
import org.apache.dolphinscheduler.common.utils.FileUtils;
|
|
|
import org.apache.dolphinscheduler.common.utils.StringUtils;
|
|
|
-import org.apache.dolphinscheduler.dao.entity.DataSource;
|
|
|
-import org.apache.dolphinscheduler.dao.entity.TaskInstance;
|
|
|
-import org.apache.dolphinscheduler.dao.entity.Tenant;
|
|
|
-import org.apache.dolphinscheduler.dao.entity.UdfFunc;
|
|
|
+import org.apache.dolphinscheduler.common.utils.TaskParametersUtils;
|
|
|
+import org.apache.dolphinscheduler.dao.entity.*;
|
|
|
import org.apache.dolphinscheduler.server.builder.TaskExecutionContextBuilder;
|
|
|
import org.apache.dolphinscheduler.server.entity.*;
|
|
|
import org.apache.dolphinscheduler.server.master.dispatch.ExecutorDispatcher;
|
|
@@ -47,7 +47,12 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
import javax.annotation.PostConstruct;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.HashSet;
|
|
|
import java.util.List;
|
|
|
+import java.util.Set;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+import java.util.stream.Stream;
|
|
|
|
|
|
/**
|
|
|
* TaskUpdateQueue consumer
|
|
@@ -127,6 +132,12 @@ public class TaskPriorityQueueConsumer extends Thread{
|
|
|
protected TaskExecutionContext getTaskExecutionContext(int taskInstanceId){
|
|
|
TaskInstance taskInstance = processService.getTaskInstanceDetailByTaskId(taskInstanceId);
|
|
|
|
|
|
+ // task type
|
|
|
+ TaskType taskType = TaskType.valueOf(taskInstance.getTaskType());
|
|
|
+
|
|
|
+ // task node
|
|
|
+ TaskNode taskNode = JSONObject.parseObject(taskInstance.getTaskJson(), TaskNode.class);
|
|
|
+
|
|
|
Integer userId = taskInstance.getProcessDefine() == null ? 0 : taskInstance.getProcessDefine().getUserId();
|
|
|
Tenant tenant = processService.getTenantForProcess(taskInstance.getProcessInstance().getTenantId(), userId);
|
|
|
|
|
@@ -145,14 +156,14 @@ public class TaskPriorityQueueConsumer extends Thread{
|
|
|
taskInstance.getProcessInstance().setQueue(StringUtils.isEmpty(userQueue) ? tenant.getQueue() : userQueue);
|
|
|
taskInstance.getProcessInstance().setTenantCode(tenant.getTenantCode());
|
|
|
taskInstance.setExecutePath(getExecLocalPath(taskInstance));
|
|
|
+ taskInstance.setResources(getResourceFullNames(taskNode));
|
|
|
+
|
|
|
|
|
|
SQLTaskExecutionContext sqlTaskExecutionContext = new SQLTaskExecutionContext();
|
|
|
DataxTaskExecutionContext dataxTaskExecutionContext = new DataxTaskExecutionContext();
|
|
|
ProcedureTaskExecutionContext procedureTaskExecutionContext = new ProcedureTaskExecutionContext();
|
|
|
|
|
|
- TaskType taskType = TaskType.valueOf(taskInstance.getTaskType());
|
|
|
|
|
|
- TaskNode taskNode = JSONObject.parseObject(taskInstance.getTaskJson(), TaskNode.class);
|
|
|
// SQL task
|
|
|
if (taskType == TaskType.SQL){
|
|
|
setSQLTaskRelation(sqlTaskExecutionContext, taskNode);
|
|
@@ -171,7 +182,6 @@ public class TaskPriorityQueueConsumer extends Thread{
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
return TaskExecutionContextBuilder.get()
|
|
|
.buildTaskInstanceRelatedInfo(taskInstance)
|
|
|
.buildProcessInstanceRelatedInfo(taskInstance.getProcessInstance())
|
|
@@ -270,4 +280,33 @@ public class TaskPriorityQueueConsumer extends Thread{
|
|
|
}
|
|
|
return false;
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * create project resource files
|
|
|
+ */
|
|
|
+ private List<String> getResourceFullNames(TaskNode taskNode){
|
|
|
+
|
|
|
+ Set<Integer> resourceIdsSet = new HashSet<>();
|
|
|
+ AbstractParameters baseParam = TaskParametersUtils.getParameters(taskNode.getType(), taskNode.getParams());
|
|
|
+
|
|
|
+ if (baseParam != null) {
|
|
|
+ List<ResourceInfo> projectResourceFiles = baseParam.getResourceFilesList();
|
|
|
+ if (projectResourceFiles != null) {
|
|
|
+ Stream<Integer> resourceInfotream = projectResourceFiles.stream().map(resourceInfo -> resourceInfo.getId());
|
|
|
+ resourceIdsSet.addAll(resourceInfotream.collect(Collectors.toSet()));
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ Integer[] resourceIds = resourceIdsSet.toArray(new Integer[resourceIdsSet.size()]);
|
|
|
+
|
|
|
+ List<Resource> resources = processService.listResourceByIds(resourceIds);
|
|
|
+
|
|
|
+ List<String> resourceFullNames = resources.stream()
|
|
|
+ .map(resourceInfo -> resourceInfo.getFullName())
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ return resourceFullNames;
|
|
|
+ }
|
|
|
}
|