use of com.dtstack.taier.dao.domain.ScheduleTaskShade in project Taier by DTStack.
the class BatchTaskService method allProductGlobalSearch.
/**
* 查找所有产品提交的任务
*
* @param searchVO
* @return
*/
public List<BatchAllProductGlobalReturnVO> allProductGlobalSearch(AllProductGlobalSearchVO searchVO) {
BatchTask batchTask = developTaskDao.getOne(searchVO.getTaskId());
if (batchTask == null) {
throw new RdosDefineException(ErrorCode.CAN_NOT_FIND_TASK);
}
if (batchTask.getTaskType().intValue() == EScheduleJobType.VIRTUAL.getVal().intValue()) {
throw new RdosDefineException(ErrorCode.VIRTUAL_TASK_UNSUPPORTED_OPERATION);
}
// 过滤掉已经依赖的任务
final List<BatchTaskTask> taskTasks = this.batchTaskTaskService.getByParentTaskId(searchVO.getTaskId());
final List<Long> excludeIds = new ArrayList<>(taskTasks.size());
excludeIds.add(searchVO.getTaskId());
taskTasks.forEach(taskTask -> excludeIds.add(taskTask.getTaskId()));
List<ScheduleTaskShade> scheduleTaskShadeList = taskService.findTaskByTaskName(searchVO.getTaskName(), searchVO.getSelectTenantId(), searchVO.getUserId());
List<ScheduleTaskShade> filterTask = scheduleTaskShadeList.stream().filter(scheduleTask -> !excludeIds.contains(scheduleTask.getTaskId())).collect(Collectors.toList());
Map<Long, Tenant> tenantMap = tenantService.listAllTenant().stream().collect(Collectors.toMap(Tenant::getId, g -> (g)));
List<BatchAllProductGlobalReturnVO> voList = Lists.newArrayList();
for (ScheduleTaskShade scheduleTaskShade : filterTask) {
BatchAllProductGlobalReturnVO vo = new BatchAllProductGlobalReturnVO();
vo.setTaskId(scheduleTaskShade.getTaskId());
vo.setTaskName(scheduleTaskShade.getName());
Tenant tenant = tenantMap.get(scheduleTaskShade.getTenantId());
if (tenant != null) {
vo.setTenantId(tenant.getId());
vo.setTenantName(tenant.getTenantName());
}
voList.add(vo);
}
return voList;
}
use of com.dtstack.taier.dao.domain.ScheduleTaskShade in project Taier by DTStack.
the class AbstractJobScanningScheduler method scanningJob.
/**
* 扫描实例
*/
private void scanningJob() {
try {
String nodeAddress = zkService.getLocalAddress();
// 1. 获得节点信息
if (StringUtils.isBlank(nodeAddress)) {
return;
}
LOGGER.info("scanningJob start scheduleType : {} nodeAddress:{}", getSchedulerName(), nodeAddress);
// 2. 获得排序最小序号
Long minSort = getMinSort();
LOGGER.info("scanning start param: scheduleType {} nodeAddress {} minSort {} ", getSchedulerName(), nodeAddress, minSort);
// 3. 扫描实例
List<ScheduleJobDetails> scheduleJobDetails = listExecJob(minSort, nodeAddress, Boolean.TRUE);
while (CollectionUtils.isNotEmpty(scheduleJobDetails)) {
// 查询任务
List<Long> taskIds = scheduleJobDetails.stream().map(ScheduleJobDetails::getScheduleJob).map(ScheduleJob::getTaskId).collect(Collectors.toList());
Map<Long, ScheduleTaskShade> scheduleTaskShadeMap = scheduleTaskService.lambdaQuery().in(ScheduleTaskShade::getTaskId, taskIds).eq(ScheduleTaskShade::getIsDeleted, Deleted.NORMAL.getStatus()).list().stream().collect(Collectors.toMap(ScheduleTaskShade::getTaskId, g -> (g)));
for (ScheduleJobDetails scheduleJobDetail : scheduleJobDetails) {
// 提交实例
ScheduleJob scheduleJob = scheduleJobDetail.getScheduleJob();
ScheduleTaskShade scheduleTaskShade = scheduleTaskShadeMap.get(scheduleJob.getTaskId());
if (scheduleTaskShade == null) {
String errMsg = JobCheckStatus.NO_TASK.getMsg();
scheduleJobService.updateStatusAndLogInfoById(scheduleJob.getJobId(), TaskStatus.SUBMITFAILD.getStatus(), errMsg);
LOGGER.warn("jobId:{} scheduleType:{} submit failed for taskId:{} already deleted.", scheduleJob.getJobId(), getSchedulerName(), scheduleJob.getTaskId());
continue;
}
scheduleJobDetail.setScheduleTaskShade(scheduleTaskShade);
if (isSubmitJob(scheduleJobDetail)) {
submitJob(scheduleJobDetail);
}
if (minSort < scheduleJob.getJobExecuteOrder()) {
minSort = scheduleJob.getJobExecuteOrder();
}
}
scheduleJobDetails = listExecJob(minSort, nodeAddress, Boolean.FALSE);
}
} catch (Exception e) {
LOGGER.error("scheduleType:{} emitJob2Queue error:", getSchedulerName(), e);
}
}
use of com.dtstack.taier.dao.domain.ScheduleTaskShade in project Taier by DTStack.
the class UploadParamPipeline method pipeline.
@Override
public void pipeline(Map<String, Object> actionParam, Map<String, Object> pipelineParam) throws RdosDefineException {
if (pipelineParam.containsKey(pipelineKey)) {
return;
}
ScheduleTaskShade taskShade = (ScheduleTaskShade) pipelineParam.get(taskShadeKey);
if (null == taskShade) {
throw new RdosDefineException("upload param pipeline task shade can not be null");
}
ScheduleJob scheduleJob = (ScheduleJob) pipelineParam.get(scheduleJobKey);
if (null == scheduleJob) {
throw new RdosDefineException("upload param pipeline schedule job can not be null");
}
String fileUploadPath = (String) pipelineParam.get(fileUploadPathKey);
if (StringUtils.isBlank(fileUploadPath)) {
throw new RdosDefineException("upload param pipeline fileUploadPath can not be null");
}
WorkerOperator workerOperator = (WorkerOperator) pipelineParam.get(workOperatorKey);
if (null == workerOperator) {
throw new RdosDefineException("upload param pipeline workerOperator can not be null");
}
JSONObject pluginInfo = (JSONObject) pipelineParam.get(pluginInfoKey);
if (null == pluginInfo) {
throw new RdosDefineException("upload param pipeline pluginInfo can not be null");
}
@SuppressWarnings("unchecked") List<ScheduleTaskParamShade> taskParamShades = (List) pipelineParam.get(taskParamsToReplaceKey);
String uploadPath = this.uploadSqlTextToHdfs((String) actionParam.get("sqlText"), taskShade.getTaskType(), taskShade.getName(), taskShade.getTenantId(), 0L, taskParamShades, scheduleJob.getCycTime(), fileUploadPath, pluginInfo, workerOperator, scheduleJob.getJobId());
pipelineParam.put(pipelineKey, uploadPath);
}
use of com.dtstack.taier.dao.domain.ScheduleTaskShade in project Taier by DTStack.
the class BatchTaskTaskService method getForefathers.
/**
* 展开上一个父节点
*
* @author toutian
*/
public ScheduleTaskVO getForefathers(BatchTask task) {
BatchTaskBatchVO vo = new BatchTaskBatchVO();
BeanUtils.copyProperties(task, vo);
vo.setVersion(task.getVersion());
vo.setCreateUser(userService.getUserByDTO(task.getCreateUserId()));
vo.setModifyUser(userService.getUserByDTO(task.getModifyUserId()));
vo.setTenantName(tenantService.getTenantById(task.getTenantId()).getTenantName());
List<BatchTaskTask> taskTasks = developTaskTaskDao.listByTaskId(task.getId());
if (CollectionUtils.isEmpty(taskTasks)) {
return vo;
}
List<ScheduleTaskVO> fatherTaskVOs = Lists.newArrayList();
for (BatchTaskTask taskTask : taskTasks) {
Long parentTaskId = taskTask.getParentTaskId();
ScheduleTaskShade taskShade = taskService.findTaskByTaskId(parentTaskId);
if (taskShade != null) {
ScheduleTaskVO scheduleTaskVO = new ScheduleTaskVO();
BeanUtils.copyProperties(taskShade, scheduleTaskVO);
scheduleTaskVO.setId(taskShade.getTaskId());
scheduleTaskVO.setTenantName(tenantService.getByDtTenantId(taskShade.getTenantId()).getTenantName());
fatherTaskVOs.add(scheduleTaskVO);
}
}
vo.setTaskVOS(fatherTaskVOs);
return vo;
}
use of com.dtstack.taier.dao.domain.ScheduleTaskShade in project Taier by DTStack.
the class BatchTaskService method taskVersionScheduleConf.
public BatchTaskVersionDetailDTO taskVersionScheduleConf(Long versionId) {
BatchTaskVersionDetailDTO taskVersion = batchTaskVersionService.getByVersionId(versionId);
if (taskVersion == null) {
return null;
}
taskVersion.setUserName(userService.getUserName(taskVersion.getCreateUserId()));
if (StringUtils.isNotBlank(taskVersion.getDependencyTaskIds())) {
List<Map<String, Object>> dependencyTasks = getDependencyTasks(taskVersion.getDependencyTaskIds());
JSONObject taskParams = new JSONObject();
int i = 1;
for (Map<String, Object> dependencyTask : dependencyTasks) {
ScheduleTaskShade taskShade = taskService.findTaskByTaskId(MathUtil.getLongVal(dependencyTask.get("parentTaskId")));
if (taskShade != null) {
JSONObject taskParam = new JSONObject();
taskParam.put("taskName", taskShade.getName());
taskParam.put("tenantName", tenantService.getTenantById(taskShade.getTenantId()).getTenantName());
taskParams.put("task" + i++, taskParam);
}
}
taskVersion.setDependencyTasks(taskParams);
}
return taskVersion;
}
Aggregations